题目
思路
//得到A的极值差
//如果极值差小于等于2K,return 0;
//否则 return 极值差-2K;
//注意:
//因为只涉及极值,所以尽量不要将整个数组排序,效率很低
class Solution {
public int smallestRangeI(int[] A, int K) {
int max=A[0];
int min=A[0];
for(int i=1;i<A.length;i++) {
if(A[i]>max) {
max=A[i];
}
if(A[i]<min) {
min=A[i];
}
}
if((max-min)<=2*K) {
return 0;
}else {
return max-min-2*K;
}
}
}
测试结果