既然是最后要求出新数组B中最大值和最小值的最小差值,那我们就用数组中的最大值减去允许范围内的最大值,最小值加上允许范围内的最大值,只要两者出现交集,那么答案必定为0,否则两者相差即为答案。
class Solution {
public:
int smallestRangeI(vector<int>& A, int K) {
int min = A[0], max = A[0], ans;
for(int i = 1; i < A.size(); ++ i) {
min = min > A[i] ? A[i] : min;
max = max < A[i] ? A[i] : max;
}
if(max - K <= min + K) ans = 0;
else ans = max - K - min - K;
return ans;
}
};