牛客网---2016---美团最大差值
来源:互联网 发布:mac all fired up试色 编辑:程序博客网 时间:2024/05/21 19:50
就这样,愉快的兔子又决定开始坚持做面试题了,这次能坚持多久我也不知道,希望能坚持到毕业,但愿如此,虽然说兔子的决定没有哪一次能坚持到最后的。
题目:
有一个长为n的数组A,求满足0≤a≤b< n的A[b]-A[a]的最大值。给定数组A及它的大小n,请返回最大差值。
输入:
[10,5],2
输出:
0
解析:
题目最简单的想法就是用后置位减去前置位,利用双循环进行比较。
代码:
import java.util.*;public class LongestDistance { public int getDis(int[] A, int n) { // write code here // 简单来讲这个题目已知数组和数组大小,那么直接定义一个最大差值进行for循环遍历即可 int max=0; int temp; for(int i=0;i<n;i++){ for(int j=i;j<n;j++){ temp=A[j]-A[i]; if(temp>max){ max=temp; } } } return max; }}
贪心:
这道题中的关键词是贪心,贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择,上诉方法的时间复杂度为O(n2)
解析:
上诉方法求解时采用双层for循环,后置位减去前置位求解,实际上,我们可以只使用一次for循环,只要添加一个if语句就可以极大地减少时间复杂度,我们采用后置位减去前置位的最小值来求解,因为后置位减去前置位永远小于等于后置位减去前置位最小解,此时时间复杂度为O(n)
代码:
import java.util.*;public class LongestDistance { public int getDis(int[] A, int n) { // write code here int max=0; if(n>1){ int min=A[0]; for(int i=1;i<n;i++){ if(A[i]-min>max){ max=A[i]-min; } //这里新添加一个规则,后置位只减去前置位最小的值,那么得到的永远为最小的,这样就算贪心了吧 if(min>A[i]){ min=A[i]; } } } return max; }}
这位大大的方法,感激不尽,临表涕零,不知所言
阅读全文
0 0
- 牛客网---2016---美团最大差值
- 【校招真题】2016 美团 最大差值
- 美团在线编程2016--最大差值
- 美团-最大差值-Java
- 最大差值----美团2016研发工程师在线编程题
- 美团笔试题 最大差值
- 最大差值(美团校招真题)
- 【牛客网】马三来刷题之最大差值
- 最大差值
- 最大差值
- 最大差值
- 最大差值
- 最大差值
- 最大差值
- 最大差值
- 最大差值
- 最大差值
- 最大差值
- LeetCode-107. Binary Tree Level Order Traversal II (java)
- Jmeter 之 压力测试
- python 打印路径的几种结果
- 基于Canvas的HTML5纯JS版2D游戏框架
- Android RecyclerView 使用简介(1)
- 牛客网---2016---美团最大差值
- node.js的安装环境搭建
- vue2中过滤器属性
- U3d的响应用户输入的角色控制
- UVA 1045 The Great Wall Game
- api-ms-win-crt-runtime-l1-1-0.dll 丢失错误修复下载win7 64位版
- 火狐浏览器在任务栏上的图标怎么变成这样了
- 时事
- 跨国企业如何更好地从云革命中获益?