假设我们有一个称为nums的数字列表和一个整数k,我们必须从nums中选择元素以创建大小为k的列表,以使列表中最大的整数和最小的整数之间的差值尽可能小。我们将退还差额。
因此,如果输入像nums = [3,11,6,2,9],k = 3,那么输出将是4,因为我们可以做的最佳列表是[2,3,6]。
为了解决这个问题,我们将遵循以下步骤-
排序列表编号
ls:=一个新列表
对于范围从0到nums-k + 1的i,执行
在LS的末尾插入nums [i + k-1]-nums [i]
返回ls的最小值
让我们看下面的实现以更好地理解-
class Solution: def solve(self, nums, k): nums.sort() ls = [] for i in range(len(nums) - k + 1): ls.append(nums[i + k - 1] - nums[i]) return min(ls) ob = Solution() nums = [3, 11, 6, 2, 9] k = 3 print(ob.solve(nums, k))
[3, 11, 6, 2, 9],3
输出结果
4