LeetCode-910 最小差值 II
Table of Contents
LeetCode-910 最小差值 II #
Solution 1 #
希望尽可能减少数组的差值, 操作是 “大的变小, 小的变大”. 枚举分界坐标 $i$, 使得 $nums[:i+1]$ 都加上 $k$, $nums[i+1:]$都减去 $k$, 计算这种情况下的差值, 更新答案.
代码如下:
class Solution:
def smallestRangeII(self, nums: List[int], k: int) -> int:
n = len(nums)
nums = sorted(nums)
ans = max(nums) - min(nums)
for i in range(0, n - 1):
ans = min(ans, max(nums[i] + k, nums[n - 1] - k) - min(nums[0] + k, nums[i + 1] - k))
return ans