zl程序教程

您现在的位置是:首页 >  Java

当前栏目

菜鸟的每日力扣系列——1984. 学生分数的最小差值(#Day34)

2023-02-18 16:23:56 时间

力扣1984. 学生分数的最小差值

求区间k间的最小差值,可以使用k长度的滑动窗口来维护最小值,最小差值即为滑动窗口两端的差值,更新最小值即可。

from typing import List


def minimumDifference(nums: List[int], k: int) -> int:
    if k == 1:
        return 0
    min_res = float('inf')
    nums.sort()  # 从小到大原地排序
    n = len(nums)
    # i来确定滑动窗口的左边界下标,右边界下标为i+k-1
    for i in range(n-k+1):
        # 最小差值即为滑动窗口两端的差值,更新最小值
        min_res = min(min_res, nums[i+k-1] - nums[i])
    return min_res


nums = [9,4,1,7]
k = 2
print(minimumDifference(nums, k))  # 2

END