LeetCode 908. 最小差值 I缩略图

给你一个整数数组 nums,和一个整数 k 。

在一个操作中,您可以选择 0 <= i < nums.length 的任何索引 i 。将 nums[i] 改为 nums[i] + x ,其中 x 是一个范围为 [-k, k] 的整数。对于每个索引 i ,最多 只能 应用 一次 此操作。

nums 的 分数 是 nums 中最大和最小元素的差值。 

在对  nums 中的每个索引最多应用一次上述操作后,返回 nums 的最低 分数 。

908. 最小差值 I – 力扣(Leetcode)

LeetCode 908. 最小差值 I插图

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
            
LeetCode 908. 最小差值 I插图1

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

更多干货见 OpenCV步步精深

作者 admin

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注