给你一个整数数组 nums
,和一个整数 k
。
在一个操作中,您可以选择 0 <= i < nums.length
的任何索引 i
。将 nums[i]
改为 nums[i] + x
,其中 x
是一个范围为 [-k, k]
的整数。对于每个索引 i
,最多 只能 应用 一次 此操作。
nums
的 分数 是 nums
中最大和最小元素的差值。
在对 nums
中的每个索引最多应用一次上述操作后,返回 nums
的最低 分数 。

OpenCV步步精深-可心科创工作室
思路:
题意就是找到最大值和最小值经过变换以后最最小的差值。
python3实现:
class Solution:
def smallestRangeI(self, nums: List[int], k: int) -> int:
# 读懂题目就解决了
# 先排序,然后将nums列表中最大和最小的数值进行变换,找到最大值和最小值差最小的那组就行。
nums.sort()
zuixiao = nums[0]
zuida = nums[-1]
if zuida - zuixiao < 2 * k:
return 0
if zuida - zuixiao == 2 * k:
return 0
if zuida - zuixiao > 2 * k:
return zuida - zuixiao -2 * k

OpenCV步步精深-可心科创工作室