题目
1984.学生分数的最小差值
题目大意
给你一个 下标从 0 开始 的整数数组 nums
,其中 nums[i]
表示第 i
名学生的分数。另给你一个整数 k
。
从数组中选出任意 k
名学生的分数,使这 k
个分数间 最高分 和 最低分 的 差值 达到 最小化 。
返回可能的 最小差值 。
样例
数据规模
思路
此题就是要求从
n
u
m
s
nums
nums中选取
k
k
k个数字使得
m
a
x
−
m
i
n
max-min
max−min尽可能小。直接将
n
u
m
s
nums
nums从小到大排序:sort(nums.begin(),nums.end());
。然后从下标为
0
0
0的位置开始每次选取
k
k
k个数字,当起点为
i
i
i时则选取
[
i
,
i
+
k
−
1
]
[i,i+k-1]
[i,i+k−1],然后求得
m
a
x
−
m
i
n
max-min
max−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;
}
};