题目
1984.学生分数的最小差值
题目大意
给你一个 下标从 0 开始 的整数数组 nums
,其中 nums[i]
表示第 i
名学生的分数。另给你一个整数 k
。
从数组中选出任意 k
名学生的分数,使这 k
个分数间 最高分 和 最低分 的 差值 达到 最小化 。
返回可能的 最小差值 。
样例
数据规模
思路
此题就是要求从numsnumsnums中选取kkk个数字使得max−minmax-minmax−min尽可能小。直接将numsnumsnums从小到大排序:sort(nums.begin(),nums.end());
。然后从下标为000的位置开始每次选取kkk个数字,当起点为iii时则选取[i,i+k−1][i,i+k-1][i,i+k−1],然后求得max−minmax-minmax−min的值,然后更新答案。
代码
class Solution {
public:
int minimumDifference(vector<int>& nums, int k) {
sort(nums.begin(),nums.end());
int ans=1e9;
for(int i=0;i<nums.size();i++){
if(i+k-1>nums.size()-1)break;
ans=min(ans,nums[i+k-1]-nums[i]);
}
return ans;
}
};