要求
给你一个整数数组 nums,请你给数组中的每个元素 nums[i] 都加上一个任意数字 x (-k <= x <= k),从而得到一个新数组 result 。
返回数组 result 的最大值和最小值之间可能存在的最小差值。
示例 1:
输入:nums = [1], k = 0
输出:0
解释:result = [1]
示例 2:
输入:nums = [0,10], k = 2
输出:6
解释:result = [2,8]
示例 3:
输入:nums = [1,3,6], k = 3
输出:0
解释:result = [3,3,3] or result = [4,4,4]
提示:
- 1 <= nums.length <= 10000
- 0 <= nums[i] <= 10000
- 0 <= k <= 10000
核心代码
class Solution:
def smallestRangeI(self, nums: List[int], k: int) -> int:
return max(0,(max(nums) - k - (min(nums) + k)))
解题思路:这个题我们是要找最大值减去某个值和最小值加上某个值的范围是否有交集,将范围扩散到最大的程度就是k,假设两个部分有交集,说明差值一定可以是0,所以我们最后将差值和0进行比较,保留较大的值。