学生分数的最小差值
最佳答案 问答题库908位专家为你答疑解惑
给你一个 下标从 0 开始 的整数数组 nums
,其中 nums[i]
表示第 i
名学生的分数。另给你一个整数 k
。
从数组中选出任意 k
名学生的分数,使这 k
个分数间 最高分 和 最低分 的 差值 达到 最小化 。
返回可能的 最小差值 。
示例 1:
输入:nums = [90], k = 1
输出:0
解释:选出 1 名学生的分数,仅有 1 种方法:
[90] 最高分和最低分之间的差值是 90 - 90 = 0 可能的最小差值是 0
示例 2:
输入:nums = [9,4,1,7], k = 2
输出:2
解释:选出 2 名学生的分数,有 6 种方法:
[9,4,1,7] 最高分和最低分之间的差值是 9 - 4 = 5
[9,4,1,7] 最高分和最低分之间的差值是 9 - 1 = 8
[9,4,1,7] 最高分和最低分之间的差值是 9 - 7 = 2
[9,4,1,7] 最高分和最低分之间的差值是 4 - 1 = 3
[9,4,1,7] 最高分和最低分之间的差值是 7 - 4 = 3
[9,4,1,7] 最高分和最低分之间的差值是 7 - 1 = 6
可能的最小差值是 2
提示:
1 <= k <= nums.length <= 1000
0 <= nums[i] <= 10^5
题目来源: https://leetcode.cn/problems/minimum-difference-between-highest-and-lowest-of-k-scores/description/
解题方法:
注:这里并非是求两个数据差的最小绝对值,而是滑动寻找
class Solution {/*** @param Integer[] $nums* @param Integer $k* @return Integer*/function minimumDifference($nums, $k) {rsort($nums);$min = $nums[0];for($i = 0; $i <= count($nums) - $k; $i++){$end_k = $i + $k - 1;$m = $nums[$i] - $nums[$end_k];if($m < $min){$min = $m;}}return $min;}
}
99%的人还看了
猜你感兴趣
版权申明
本文"学生分数的最小差值":http://eshow365.cn/6-29594-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!