跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Python算法

LeetCode 1984. 最小化 K 个分数的最高与最低分差值

讲解 LeetCode 1984 题,要求从整数数组中选取 k 个元素,使得这 k 个元素中最大值与最小值的差最小。核心思路是先对数组进行排序,然后使用滑动窗口遍历所有长度为 k 的子数组,计算首尾元素的差值并取最小值。时间复杂度为 O(n log n),空间复杂度为 O(n)。提供了 Python 实现代码及优化建议。

暗影行者发布于 2026/3/21更新于 2026/9/677 浏览

LeetCode 1984. Minimum Difference Between Highest and Lowest of K Scores

题目描述

给你一个下标从 0 开始的整数数组 nums,其中 nums[i] 表示第 i 名学生的分数。另给你一个整数 k。

从数组中任意挑选 k 名学生的分数,使这 k 个分数中最高和最低分数的差值最小化。

返回最小可能的差值。

示例

示例 1:

输入:nums = [90], k = 1 输出:0 解释:只有一种方式选择一名学生的分数:[90]。最高分与最低分的差是 90 - 90 = 0。最小可能差值为 0。

示例 2:

输入:nums = [9,4,1,7], k = 2 输出:2 解释:有多种方式选择两名学生的分数。例如选择 [9, 7],差值为 9 - 7 = 2。最小可能差值为 2。

约束条件

  • 1 <= k <= nums.length <= 1000
  • 0 <= nums[i] <= 10^5

解题思路

为了最小化选出的 k 个元素中最大值与最小值的差值,最优策略是将数组排序。排序后,任意 k 个连续的元素构成的子数组,其最大值与最小值的差即为该子数组首尾元素的差。

因此,只需遍历所有长度为 k 的连续子数组,计算 nums[i + k - 1] - nums[i] 的最小值即可。

代码实现

class Solution:
    def minimumDifference(self, nums: List[int], k: int) -> int:
        if k <= 1:
            return 0
        nums.sort()
        res = float("inf")
        for i in range(len(nums) - k + 1):
            res = min(res, nums[i + k - 1] - nums[i])
        return res

复杂度分析

  • 时间复杂度:O(n log n),主要消耗在排序上。
  • 空间复杂度:O(n),取决于排序算法的实现(Python 的 sort 是 Timsort)。
  • 目录

    1. LeetCode 1984. Minimum Difference Between Highest and Lowest of K Scores
    2. 题目描述
    3. 示例
    4. 约束条件
    5. 解题思路
    6. 代码实现
    7. 复杂度分析

    更多推荐文章

    查看全部
    • llama.cpp 本地大模型部署教程
    • 30 个极简 Python 代码片段与实用技巧
    • uv 安装多个 Python 版本与使用方法(替代 pyenv + venv + pip)
    • AIGC 技术原理与实战应用指南
    • RTX 4090 加速国产 AIGC 视频生成:腾讯混元与阿里通义万相
    • GLM-4.6V-Flash-WEB 部署实战:弹性计费降低成本方案
    • Stable Diffusion 与 Z-Image-Turbo 模型部署及性能对比实战
    • PDF 压缩工具:纯前端开源本地压缩方案及实现思路
    • Python 数据处理进阶:掌握 Filter 函数的高级用法
    • FPGA 调试:PCIe XDMA Link Up 失败使用 LTSSM 定位问题
    • Meta-Llama-3-8B-Instruct 工业设备故障诊断实践
    • Java Map 常用方法与核心实现类详解
    • 大模型提示工程实战:15 个核心技巧与策略
    • 2024 大模型学习路线:从零基础到精通的系统指南
    • OpenClaw 多 Agent 多 Discord 频道配置实战:从零搭建 AI 团队
    • ComfyUI 可视化搭建教程:构建 AI 绘画工作流
    • LW-CTrans: 用于 3D 医学图像分割的轻量级 CNN-Transformer 混合网络
    • Coze 抓取小红书爆款视频写入飞书多维表实战
    • VSCode Copilot 登录失败排查指南:常见问题与解决方案
    • Windows 10 彻底关闭 Microsoft 365 Copilot 弹窗的 6 种方法

    相关免费在线工具

    • 加密/解密文本

      使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

    • Gemini 图片去水印

      基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

    • curl 转代码

      解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online

    • Base64 字符串编码/解码

      将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

    • Base64 文件转换器

      将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

    • Markdown转HTML

      将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online