LeetCode 5854. 学生分数的最小差值(排序+双指针)

题意:

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

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

返回可能的 最小差值 。

数据范围:
1 <= k <= nums.length <= 1000
0 <= nums[i] <= 1e5

解法:

排序后滑动窗口即可,窗口大小为k.

code:

class Solution {
public:
    int minimumDifference(vector<int>& a, int k) {
        sort(a.begin(),a.end());
        int n=a.size();
        int ans=1e9;
        for(int i=k-1;i<n;i++){
            ans=min(ans,a[i]-a[i-k+1]);
        }
        return ans;
    }
};

你可能感兴趣的:(leetcode,算法,c++)