题目
https://leetcode-cn.com/problems/smallest-range-i/
分析
ma为最大值,mi为最小值。x为ma修改时加的数,y为mi修改时加的数。 修改后的差值=(ma+x)-(mi+y)=(ma-mi)+(x-y) x,y属于[-k,k] (x-y)范围 [-2k,2k] x-y=mi-ma时,左式为0,最小。 如果原始差值绝对值大于2k的绝对值,那么不能完全消除差距使差值为0,只能抵消2k那部分。
代码
class Solution {
public int smallestRangeI(int[] nums, int k) {
int change1=k*2;
int change2=-k*2;
int max=-1;
int min=10001;
for(int num:nums){
max=Math.max(num,max);
min=Math.min(num,min);
}
int distance=max-min;
if(k==0){
return distance;
}
if(distance<=change1){
return 0;
}
else{
return distance-change1;
}
}
}