給定一個整數數組 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;}
}