Leetcode刷题100天—5854. 学生分数的最小差值(双指针)—day22
Posted 神的孩子都在歌唱
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode刷题100天—5854. 学生分数的最小差值(双指针)—day22相关的知识,希望对你有一定的参考价值。
前言:
作者:神的孩子在歌唱
大家好,我叫运智
5854. 学生分数的最小差值
难度简单0收藏分享切换为英文接收动态反馈
给你一个 下标从 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] <= 105
package 双指针;
import java.lang.reflect.Array;
import java.util.Arrays;
//将排序好的数字,通过左右指针进行检索
public class _5854_学生分数的最小差值 {
public int minimumDifference(int[] nums, int k) {
// 设置左右指针
int left=0,right=k-1,ans=0;
// 先排序
Arrays.sort(nums);
while(right<nums.length) {
int num=nums[right]-nums[left];
right++;
left++;
ans=Math.min(ans, num);
}
return ans;
}
}
本人csdn博客:https://blog.csdn.net/weixin_46654114
转载说明:跟我说明,务必注明来源,附带本人博客连接。
以上是关于Leetcode刷题100天—5854. 学生分数的最小差值(双指针)—day22的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode 5854. 学生分数的最小差值(排序+双指针)
Leetcode刷题100天—856. 括号的分数(栈)—day03
Leetcode刷题100天—856. 括号的分数(栈)—day03
Leetcode刷题100天—1894. 找到需要补充粉笔的学生编号( 数组)—day34