leetcode_908 最小差值 I

70 阅读1分钟

要求

给你一个整数数组 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)))

image.png

解题思路:这个题我们是要找最大值减去某个值和最小值加上某个值的范围是否有交集,将范围扩散到最大的程度就是k,假设两个部分有交集,说明差值一定可以是0,所以我们最后将差值和0进行比较,保留较大的值。