import org.junit.Test;
/**
* 题目描述:有一个长为n的数组A,求满足0≤a≤b<n的A[b]-A[a]的最大值。 给定数组A及它的大小n,请返回最大差值。
* 测试样例: [10,5],2
* 返回:0
*
* @author 崔洪振367
* @version 创建时间:2017年7月7日 下午12:19:44
* 解题思路:从后向前和前边的最小数的差值,记录下来。最后遍历记录的数值找最大的。
*/
public class 最大差值 {
@Test
public void test(){
// int[] A = {10,5};
// int n = 2;
int[] A = {2676,4662,8383,357,6595};
int n = 5;
System.out.println(getDis(A, n));
}
public int getDis(int[] A, int n) {
if(A == null || n == 0){
return 0;
}
int[] dis = new int[n-1];
int j = 0;
for(int i=n-1; i>0; i--){
int d = A[i] - getMinNum(A, i-1);//获取后一个数和前边数的差值
dis[j++] = d;
}
int max = dis[0];
for (int k=0; k<n-1; k++) {//遍历记录的数值,找出差值最大的。
if(max <= dis[k]){
max = dis[k];
}
}
return max>0?max:0;
}
public int getMinNum(int[] A, int n){//获取一个数组的最小值,此处记住i可以遍历到n。
int min = A[0];
for(int i=1; i<=n; i++){
if(min > A[i]){
min = A[i];
}
}
return min;
}
}
美团-最大差值-Java
最新推荐文章于 2022-10-10 11:26:59 发布