
- ***、题目链接
- 一、题目
- 1、题目描述
- 2、基础框架
- 二、解题报告
- 1、思路分析
- 2、时间复杂度
- 3、代码详解
- 三、写在最后
[Day6:Leetcod 1984. 学生分数的最小差值(https://leetcode-cn.com/problems/minimum-difference-between-highest-and-lowest-of-k-scores/)
2、基础框架给你一个 下标从
0开始 的整数数组nums,其中nums[i]表示第i名学生的分数。另给你一个整数k。
从数组中选出任意k名学生的分数,使这k个分数间 最高分 和 最低分 的 差值 达到 最小化 。
返回可能的 最小差值 。
样例输入:nums = [9,4,1,7], k = 2;
样例输出:2。
- C++给出的代码框架如下:
class Solution {
public:
int minimumDifference(vector<int>& nums, int k) {
}
};
二、解题报告 1、思路分析
(
1
)
(1)
(1) 排序;
(
2
)
(2)
(2) 计算相邻数字的差值,记录最小值。
O ( n ) O(n) O(n) ,;
3、代码详解class Solution {
public:
int minimumDifference(vector<int>& nums, int k) {
int n = nums.size();
sort(nums.begin(),nums.end());
int ret = 100009;
for(int i = 0; i + k - 1 < n; ++i){
ret = min(ret, nums[i + k - 1] - nums[i]);
}
return ret;
}
};
三、写在最后
明白最小值肯定是从相邻数字间诞生的,问题就迎刃而解。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)