您的位置:首页 > 其它

美团——最大差值

2018-02-27 11:14 155 查看
题目描述

有一个长为n的数组A,求满足0≤a≤b

public class LongestDistance {
public int getDis(int[] A, int n) {
// write code here
if(n==1){return 0;}
int gap = 0;
List<Integer> arrayList = new ArrayList<>();
for(int i = 1 ;i<n;i++){
for(int j = 0;j<i;j++){
arrayList.add(A[i]-A[j]);
}
}

for(Integer list:arrayList){
if(list > gap)
gap=list;
}

return gap;
}
}


思路1:通过二重循环将所有的差值存到arraylist中,然后遍历arraylist找到差值最大。

public class LongestDistance {
public int getDis(int[] A, int n) {
// write code here
if(n==1){return 0;}

int min = A[0];
int gap = 0;
for(int i=1;i<n;i++){
if(A[i]<min)min = A[i];
if(A[i]-min>gap)gap = A[i]-min;
}
return gap;
}
}


思路二:通过找寻差值的同时,也更新最小值。最小值与它后面的数差值肯定是在它后面来说是最大的。 然后判定与前面保存的差值比 是不是更大,更大就更新。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  最大差值