当前位置: 首页 > news >正文

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.jsqmd.com/news/299940/

相关文章:

  • 努力训练,我要拿 Celeste 金草莓(4) || 好吧其实我已经一周没打开 Celeste 了 || 努力训练,我要看曼联北伐 || 怡颇,沃隆初三
  • 【MTSP问题】基于人工旅鼠算法ALA求解单仓库多旅行商问题附Matlab代码
  • 【心电信号ECG】心电图心律失常检测Matlab实现
  • Mysql锁详解
  • P1678 烦恼的高考志愿
  • 手机充电器
  • 【算法题学习方法调整】回溯核心逻辑调整:从记代码到套逻辑调整
  • 学习日记day68
  • 【攻防世界】web | easyphp详细题解WP
  • bazel 编译报错:error loading package @com_google_absl//absl/strings:
  • 学习记录260125
  • 《枪炮、病菌与钢铁:人类社会的命运》书评与推荐文章
  • 穿越文明的边界:列维-施特劳斯《忧郁的热带》深度书评与推荐
  • 充电器
  • 2026有代表性的AI营销 GEO 公司盘点
  • 努力训练,我要拿 Celeste 金草莓(4) || 好吧其实我已经一周没打开 Celeste 了 || 努力训练,我要看曼联北伐
  • 2025年教我学英语 - 其他
  • Linux软件安装 —— PostgreSQL高可用集群安装(postgreSQL + repmgr主从复制 + keepalived故障转移)
  • Linux软件安装 —— ClickHouse集群安装(集成Zookeeper)+ chproxy负载均衡
  • Linux软件安装 —— ClickHouse单节点安装(rpm安装、tar安装两种安装方式)
  • HarmonyOS PC 多窗口,到底在解决什么
  • 【无线传感器】基于遗传算法GA无线传感器网络中聚类以增强网络寿命附Matlab代码
  • 那 HarmonyOS PC 应用到底该怎么落代码?
  • 【机械臂路径规划】基于RRT算法规划一个6自由度路径,用于将SM-465变速箱的主轴从壳体中移出,同时避免与主箱体或已安装的副轴发生碰撞附matlab代码
  • 基于51单片机的自动豆浆机系统 智能豆浆机
  • 基于51单片机红外测温 非接触式红外测温仪 MLX90614 嵌入式系统
  • 01.Nginx简介
  • 基于51单片机红外线感应自动门 液晶显示 自动 手动
  • 计算机想学习某个方向,怎么知道学习路线
  • 如何通过提示词减少AICG费片的痛点