LeetCode 908. Smallest Range I
考点 | 难度 |
---|---|
Array | Easy |
题目
You are given an integer array nums
and an integer k
.
In one operation, you can choose any index i
where 0 <= i < nums.length
and change nums[i]
to nums[i] + x
where x
is an integer from the range [-k, k]
. You can apply this operation at most once for each index i
.
The score of nums
is the difference between the maximum and minimum elements in nums
.
Return the minimum score of nums
after applying the mentioned operation at most once for each index in it.
思路
如果min + k > max - k
,最后的数可以都相等,返回0。如果min + k < max - k
,返回这两个值之间的差。
答案
public int smallestRangeI(int[] A, int K) {
int mx = A[0], mn = A[0];
for (int a : A) {
mx = Math.max(mx, a);
mn = Math.min(mn, a);
}
return Math.max(0, mx - mn - 2 * K);
}