給定乙個整數陣列a
,對於每個整數a[i]
,我們可以選擇x = -k
或是x = k
,並將x
加到a[i]
中。
在此過程之後,我們得到一些陣列b
。
返回b
的最大值和b
的最小值之間可能存在的最小差值。
首先排序,可以想到,大一些的估計都要-k,小一些的都要+k,但是這個分割點不好確定,所以迴圈遍歷查詢這個分割點就行。
然後需要注意的是,分割點找到之後需要再次確認最大值和最小值。
重點就在於確認變換之後的最大值和最小值。
class solution
ma = min(ma,a[sz-1]-a[0]);
return ma;
}return 0;
}};
最大值和最小值大於4*k的話是一種特殊情況。
class solution {
public:
int smallestrangeii(vector& a, int k) {
sort(a.begin(),a.end());
int n=a.size(),i,ans=a.back()-a.front();
for(i=0;i+1這**寫的。。。
LeetCode 910 最小差值 II(貪心)
給定乙個整數陣列 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 ...
LeetCode刷題筆記 910 最小差值 II
給定乙個整數陣列 a,對於每個整數 a i 我們可以選擇 x k 或是 x k,並將 x 加到 a i 中。在此過程之後,我們得到一些陣列 b。返回 b 的最大值和 b 的最小值之間可能存在的最小差值。示例 1 輸入 a 7,8,8,5,2 k 4 輸出 5 示例 2 輸入 a 4,8,2,7,2 ...
LeetCode最小差值 I
給你乙個整數陣列 a,對於每個整數 a i 我們可以選擇處於區間 k,k 中的任意數 x 將 x 與 a i 相加,結果存入 a i 在此過程之後,我們得到一些陣列 b。返回 b 的最大值和 b 的最小值之間可能存在的最小差值。示例 1 輸入 a 1 k 0 輸出 0 解釋 b 1 示例 2 輸入 ...