leetcode 1984

1984: 学生分数的最小差值

为方便计算差值,先把 nums 从小到大排序。

把 nums 中的元素画在一维数轴上。如果 numsi 是 k 个数中的最大值,那么最小值的下标至多为 i−k+1(要在最小值和最大值之间再选 k−2 个数)。但最小值越小,差值越大,所以最小值的下标恰好为 i−k+1 是最优的。枚举最小值的下标。

复制代码
class Solution {
public:
    int minimumDifference(vector<int>& nums, int k) {
        int n=nums.size(),ans=INT_MAX;
        if(n==1) return 0;
        ranges::sort(nums);
        for(int i=0;i+k-1<n;i++){
            int diff=nums[i+k-1]-nums[i];
            if(diff<ans) ans=diff;
        }
        
        return ans;
    }
};
相关推荐
写后端的胖头鱼4 小时前
一文详解B+树原理(附场景+示例)
数据结构·b树
怕浪猫6 小时前
RAG 面试 6 连问,从原理到优化全部覆盖
python·算法·面试
无线通信科研笔记6 小时前
IEEE TVT 2026 论文精读与完整复现|相位误差如何重塑近场 RIS 的幅相响应
论文阅读·人工智能·python·算法·论文笔记
mmmmath_37 小时前
二叉树の递归遍历
算法
All for pursuit.7 小时前
【位运算-1】338.比特位计数
数据结构·c++·算法·leetcode
小师兄吃牛肉8 小时前
C语言中的nullptr有必要吗
c语言·c++·算法
一只小小的芙厨9 小时前
【线性DP】
学习·算法·动态规划
xxwl5859 小时前
数据结构知识点和代码实现总结(C语言实现)
c语言·开发语言·数据结构
奋发向前wcx10 小时前
CSP-J复赛模拟赛5 王晨旭补题 2026.10.5
算法
罗湖老棍子11 小时前
C Looooops(信息学奥赛一本通- P1640)
算法·数论·同余·裴蜀定理·扩展欧几里得