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

Leetcode刷题100天—1894. 找到需要补充粉笔的学生编号( 数组)—day34

Leetcode刷题100天—551.学生出勤记录I(字符串)—day12