Given an array A of integers, for each integer A[i] we may choose any x with -K <= x <= K, and add x to A[i].
After this process, we have some array B.
Return the smallest possible difference between the maximum value of B and the minimum value of B.
class Solution {
public:
int smallestRangeI(vector<int>& A, int K) {
int max = A[0],min = A[0];
for(int n:A){
if(n > max)
max = n;
if(n < min)
min = n;
}
int res = max - min - 2*K;
res = res < 0 ? 0:res;
return res;
}
};
本文介绍了一个算法问题,即如何通过给定数组中的每个元素加上一个范围内的任意数,来最小化数组中最大值与最小值之间的差。通过遍历数组找到原始的最大值和最小值,然后计算调整后的可能最小范围。
390

被折叠的 条评论
为什么被折叠?



