最小差值,所有下标都要处理,全增不变,全减不变,小增大减,每一个中间下标都是小的分界,然后ans的初始值是max(nums)- min(nums),还是不排除中间值改变后会出现极值增大的情况。
class Solution:
def smallestRangeII(self, nums: List[int], k: int) -> int:
nums.sort()
if len(nums) == 1:
return 0
ans = nums[-1] - nums[0]
for i in range(0,len(nums)-1):#i是加k的最后一个位置
min_nums = min(nums[0]+k,nums[i+1]-k)
max_nums = max(nums[i]+k,nums[-1]-k)
ans = min(max_nums-min_nums,ans)
return ans
仔细审题!!!!!!!!!!加油。