LeetCode 1984.学生分数的最小差值:排序(类似滑动窗口)

【LetMeFly】1984.学生分数的最小差值:排序(类似滑动窗口)

力扣题目链接:https://leetcode.cn/problems/minimum-difference-between-highest-and-lowest-of-k-scores/

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

从数组中选出任意k名学生的分数,使这k个分数间最高分最低分差值达到最小化

返回可能的最小差值

示例 1:

输入:nums = [90], k = 1输出:0解释:选出 1 名学生的分数,仅有 1 种方法: - [90] 最高分和最低分之间的差值是 90 - 90 = 0 可能的最小差值是 0

示例 2:

输入:nums = [9,4,1,7], k = 2输出:2解释:选出 2 名学生的分数,有 6 种方法: - [9,4,1,7] 最高分和最低分之间的差值是 9 - 4 = 5 - [9,4,1,7] 最高分和最低分之间的差值是 9 - 1 = 8 - [9,4,1,7] 最高分和最低分之间的差值是 9 - 7 = 2 - [9,4,1,7] 最高分和最低分之间的差值是 4 - 1 = 3 - [9,4,1,7] 最高分和最低分之间的差值是 7 - 4 = 3 - [9,4,1,7] 最高分和最低分之间的差值是 7 - 1 = 6 可能的最小差值是 2

提示:

  • 1 <= k <= nums.length <= 1000
  • 0 <= nums[i] <= 105

解题方法:排序

n u m s numsnums排序,返回所有长度为k kk的子数组中d i f f ( l a s t , f i r s t ) diff(last, first)diff(last,first)的最小值即可。

  • 时间复杂度O ( N 2 ) O(N^2)O(N2)
  • 空间复杂度O ( N log ⁡ N ) O(N\log N)O(NlogN)

AC代码

C++
/* * @LastEditTime: 2026-01-25 10:33:04 */classSolution{public:intminimumDifference(vector<int>&nums,intk){sort(nums.begin(),nums.end());intans=100000;for(inti=0;i+k-1<nums.size();i++){ans=min(ans,nums[i+k-1]-nums[i]);}returnans;}};
Python
''' LastEditTime: 2026-01-25 10:37:04 '''fromtypingimportListclassSolution:defminimumDifference(self,nums:List[int],k:int)->int:nums.sort()returnmin(nums[i+k-1]-nums[i]foriinrange(len(nums)-k+1))
Java
/* * @LastEditTime: 2026-01-25 10:40:30 */importjava.util.Arrays;classSolution{publicintminimumDifference(int[]nums,intk){intans=100000;Arrays.sort(nums);for(inti=0;i+k-1<nums.length;i++){ans=Math.min(ans,nums[i+k-1]-nums[i]);}returnans;}}
Go
/* * @LastEditTime: 2026-01-25 10:39:56 */packagemainimport"sort"funcminimumDifference(nums[]int,kint)int{ans:=100000sort.Ints(nums)fori:=0;i<len(nums)-k+1;i++{ans=min(ans,nums[i+k-1]-nums[i])}returnans}
Rust
/* * @LastEditTime: 2026-01-25 10:43:39 */implSolution{pubfnminimum_difference(mutnums:Vec<i32>,k:i32)->i32{letk=kasusize;letmutans=100000;nums.sort();foriin0..nums.len()-k+1{ans=ans.min(nums[i+k-1]-nums[i]);}ans}}

同步发文于CSDN和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~

千篇源码题解已开源

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1216148.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

努力训练,我要拿 Celeste 金草莓(4) || 好吧其实我已经一周没打开 Celeste 了 || 努力训练,我要看曼联北伐 || 怡颇,沃隆初三

第四周。 兜里还剩十五块三毛,正好够买一箱快过期的压缩饼干。这叫“穷且意坚”。 我站在天台上看这城市的霓虹灯,它们像某种巨大的脉冲血管,搏动着贪婪的节奏。风大得想把我这把枯骨吹散,但我偏不。我有“青云之志…

【MTSP问题】基于人工旅鼠算法ALA求解单仓库多旅行商问题附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。 &#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室 &#x1f447; 关注我领取海量matlab电子书和数学建模资料 &#…

【心电信号ECG】心电图心律失常检测Matlab实现

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。&#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室&#x1f447; 关注我领取海量matlab电子书和数学建模资料 &#x1f34…

Mysql锁详解

行级锁和表级锁行级锁:开销大,锁的粒度小。 表级锁:开销小,锁的粒度大。InnoDB同时支持行级锁和表级锁 共享锁(S)和排他锁(X) 共享锁:也称为读锁,允许多个事物读,但是不允许写 排他锁:也称为写锁,不允许读和…

手机充电器

【硬核科普】从 220V 到 5V 的魔法之旅:你的手机充电头里到底发生了什么? 我们每天都要做一件事:把手机插上充电器。 墙上的电是凶猛的 220V 交流电(AC),而手机里的电池是娇气的 3.7V - 4.4V 直流电(DC)。如果…

【算法题学习方法调整】回溯核心逻辑调整:从记代码到套逻辑调整

文章目录 【算法题学习方法调整】回溯核心逻辑调整&#xff1a;从记代码到套逻辑调整一、先明确&#xff1a;为什么会“瞟代码就会&#xff0c;自己想就懵”&#xff1f;二、针对性调整方案&#xff08;适配你的学习节奏&#xff0c;易落地&#xff09;1. 重做旧题&#xff1a;…

学习日记day68

Day68_0125专注时间&#xff1a;目标是&#xff1a;5h30~6h。实际&#xff1a;1h21min每日任务&#xff1a;饭后的休息&#xff08;25min&#xff09;&#xff0c;学习间歇的休息&#xff08;15min&#xff09;都用手表计时器来监督{step1}40min二刷1道力扣hot100昨天的题再做一…

【攻防世界】web | easyphp详细题解WP

## 今天我们来解析一道【攻防世界】中的web题--easyphp 首先我们打开这道题的场景: 发现这道题一上来就给了我们一大段的php代码,很明显这是一道代码审计题,因此我们需要看懂这段代码的意思后来构造符合代码的payloa…

bazel 编译报错:error loading package @com_google_absl//absl/strings:

bazel 编译报错:error loading package @com_google_absl//absl/strings:报错: error loading package @com_google_absl//absl/strings:解决方法:首先: conda 配置一个新的python环境,如:python==3.12然后: pi…

《枪炮、病菌与钢铁:人类社会的命运》书评与推荐文章

《枪炮、病菌与钢铁&#xff1a;人类社会的命运》书评与推荐文章 引言&#xff1a;一个问题的力量 1972年7月&#xff0c;在新几内亚的热带雨林中&#xff0c;一位年轻的美国生物学家贾雷德戴蒙德正在进行鸟类演化研究。在那里&#xff0c;他遇到了当地政治家耶利&#xff0c…

穿越文明的边界:列维-施特劳斯《忧郁的热带》深度书评与推荐

穿越文明的边界:列维-施特劳斯《忧郁的热带》深度书评与推荐 引言:一部为所有游记敲响丧钟的游记 当克洛德列维-施特劳斯在1955年出版《忧郁的热带》时,他或许没有想到这部作品会成为二十世纪人类学乃至整个人文社会科学领域的一座里程碑。这部被作者自称为"为所有游…

充电器

【硬核科普】从 220V 到 5V 的魔法之旅:你的手机充电头里到底发生了什么? 我们每天都要做一件事:把手机插上充电器。 墙上的电是凶猛的 220V 交流电(AC),而手机里的电池是娇气的 3.7V - 4.4V 直流电(DC)。如果…

2026有代表性的AI营销 GEO 公司盘点

随着DeepSeek作为国产大模型代表之一,在企业服务、开发者工具、B2B决策支持等场景中迅速普及,其已成为用户获取专业商业信息的核心入口。越来越多的企业意识到:在DeepSeek中被准确提及、优先推荐,就是获取高质量B端…

努力训练,我要拿 Celeste 金草莓(4) || 好吧其实我已经一周没打开 Celeste 了 || 努力训练,我要看曼联北伐

第四周。 兜里还剩十五块三毛,正好够买一箱快过期的压缩饼干。这叫“穷且意坚”。 我站在天台上看这城市的霓虹灯,它们像某种巨大的脉冲血管,搏动着贪婪的节奏。风大得想把我这把枯骨吹散,但我偏不。我有“青云之志…

2025年教我学英语 - 其他

2025年教我学英语 - 其他1、红色 - red [red] 橙色 - orange [ˈɒrɪndʒ] 黄色 - yellow [ˈjeləʊ] 绿色 - green [ɡriːn] 蓝色 - blue [bluː]2、紫色 - purple [ˈpɜːpl] 粉色 - pink [pɪŋk] 棕色 - brown…

Linux软件安装 —— PostgreSQL高可用集群安装(postgreSQL + repmgr主从复制 + keepalived故障转移)

文章目录一、节点说明二、软件下载三、安装PostgreSQL四、安装repmgr1、前置准备2、编译安装&#xff08;两台节点&#xff09;3、配置repmgr4、添加主从到repmgr集群五、安装keepalived&#xff08;root用户&#xff09;1、编译并安装&#xff08;两台节点&#xff09;2、配置…

Linux软件安装 —— ClickHouse集群安装(集成Zookeeper)+ chproxy负载均衡

文章目录一、节点规划二、JDK安装三、Zookeeper安装四、ClickHouse安装1、软件下载&#xff08;1&#xff09;tar安装包下载&#xff08;2&#xff09;rpm安装包下载2、前置准备&#xff08;1&#xff09;CentOS取消打开文件数限制&#xff08;2&#xff09;CentOS取消SELINUX3…

Linux软件安装 —— ClickHouse单节点安装(rpm安装、tar安装两种安装方式)

文章目录 一、节点说明二、软件下载1、tar安装包下载2、rpm安装包下载 三、前置准备1、CentOS取消打开文件数限制2、CentOS取消SELINUX 四、安装1、tar安装2、rpm安装 五、配置clickhouse六、启动clickhouse七、密码配置1、default用户密码设置2、新建用户&#xff08;1&#x…

HarmonyOS PC 多窗口,到底在解决什么

子玥酱 &#xff08;掘金 / 知乎 / CSDN / 简书 同名&#xff09; 大家好&#xff0c;我是 子玥酱&#xff0c;一名长期深耕在一线的前端程序媛 &#x1f469;‍&#x1f4bb;。曾就职于多家知名互联网大厂&#xff0c;目前在某国企负责前端软件研发相关工作&#xff0c;主要聚…