給定乙個整數陣列a
,對於每個整數a[i]
,我們可以選擇任意x
滿足-k <= x <= k
,並將x
加到a[i]
中。
在此過程之後,我們得到一些陣列b
。
返回b
的最大值和b
的最小值之間可能存在的最小差值。
示例 1:
輸入:a = [1], k = 0輸出:0解釋:b = [1]示例 2:
輸入:a = [0,10], k = 2輸出:6解釋:b = [2,8]示例 3:
輸入:a = [1,3,6], k = 3輸出:0解釋:b = [3,3,3] 或 b = [4,4,4]
1 <= a.length <= 10000
0 <= a[i] <= 10000
0 <= k <= 10000
【思路】該題猛一看好像很複雜,其實意思就是給乙個陣列,然後又給乙個k值,讓你在-k到k裡面找任意值(整數)加到陣列的每個值上;換句話說,a陣列裡面的值隨便加,前提是加的值範圍為-k到k之間。然後再看變完後的陣列裡面最大值和最小值差值最小的情況。
其實,這樣想,舉個例:假如a陣列最大值是10,最小值是0,只要k>=5,就能讓a裡面所有的值加成都是5這種情況吧,那返回值就是0,所以分情況:
1.陣列長度為1,返回 0;
2.最大值-最小值》=2k,返回 最大值-最小值-2k;
3.最大值-最小值》=2k,返回 0;
class solution
}int min = a[a.size()-1];
for(i = 0; i < a.size()-1; i++)
}int max = a[a.size()-1];
if(a.size() <= 1) ret = 0;
if(max - min >= 2 * k) ret = max - min - 2 * k;
if(max - min < 2 * k) ret = 0;
return ret;
}};
leetcode 908 最小差值
因為加上的數是在k到 k範圍內,所以難度小了很多。題目 給定乙個整數陣列 a,對於每個整數 a i 我們可以選擇任意 x 滿足 k x k,並將 x 加到 a i 中。在此過程之後,我們得到一些陣列 b。返回 b 的最大值和 b 的最小值之間可能存在的最小差值。思路 因為每個數可以加上的範圍是在k到...
Leetcode 908 最小差值 I
給定乙個整數陣列 a,對於每個整數 a i 我們可以選擇任意 x 滿足 k x k,並將 x 加到 a i 中。在此過程之後,我們得到一些陣列 b。返回 b 的最大值和 b 的最小值之間可能存在的最小差值。示例 1 輸入 a 1 k 0 輸出 0 解釋 b 1 示例 2 輸入 a 0,10 k 2 ...
leetcode 908 最小差值 I
給定乙個整數陣列a,對於每個整數a i 我們可以選擇任意x滿足 k x k,並將x加到a i 中。在此過程之後,我們得到一些陣列b。返回b的最大值和b的最小值之間可能存在的最小差值。示例 1 輸入 a 1 k 0輸出 0解釋 b 1 示例 2 輸入 a 0,10 k 2輸出 6解釋 b 2,8 示例...