最小差值 I

题目链接

给你一个整数数组 nums,请你给数组中的每个元素 nums[i] 都加上一个任意数字 x (-k <= x <= k),从而得到一个新数组 result 。

返回数组 result 的最大值和最小值之间可能存在的最小差值。

示例:

输入:nums = [1], k = 0
输出:0
解释:result = [1]

思路

解法一:

  1. 判断数组的最大值与最小值的差值diff
  2. 若diff大于等于k的2倍,则证明可以取到两个数相等的情况,返回结果为0
  3. 若diff小于k的2倍,则返回diff - k的2倍
class Solution:
    def smallestRangeI(self, nums: List[int], k: int) -> int:
        if not nums or len(nums) < 1:
            return 0
        val_max = max(nums)
        val_min = min(nums)
        if val_max - val_min <= 2*k:
            return 0
        else:
            return val_max -val_min - 2*k