给定一个整数数组 A,对于每个整数 A[i],我们可以选择 x = -K 或是 x = K,并将 x 加到 A[i] 中。
在此过程之后,我们得到一些数组 B。
返回 B 的最大值和 B 的最小值之间可能存在的最小差值。
示例 1:
输入:A = [1], K = 0
输出:0
解释:B = [1]
代码
class Solution {public int smallestRangeII(int[] A, int K) {for(int c=0;c<A.length;c++)//将所以元素先加上k{A[c]+=K;}Arrays.sort(A);int min=A[0],max=A[A.length-1];int res=max-min;for(int c=A.length-1;c>0;c--){A[c]-=2*K;max= Math.max(A[A.length-1],A[c-1]);//最大值只能从当前位置的前一位或者最右一位产生min= Math.min(min,A[c]);res=Math.min(res,max-min);}return res;}
}