上海高端网站制作公司,大作设计网站,从色彩度讨论如何建设一个网站.,西安网络公司Java实现学生分数的最小差值
01 分类
数组
02 题目
给你一个 下标从 0 开始 的整数数组 nums #xff0c;其中 nums[i] 表示第 i 名学生的分数。另给你一个整数 k 。
从数组中选出任意 k 名学生的分数#xff0c;使这 k 个分数间 最高分 和 最低分 的 差值 达到 最小化 …Java实现学生分数的最小差值
01 分类
数组
02 题目
给你一个 下标从 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 10000 nums[i] 105
03 我的题解
public class Test01 {public static void main(String[] args) {//测试数据int[] nums new int[] {9,4,1,7};int k 2; System.out.println(numk(nums, k));}public static int numk(int[] nums ,int k) {int min100000000;//初始化最小差值足够大这样无论测试数据结果多大都可以更小Arrays.sort(nums);//排序数组if (k1) {//当k为1是差值为0return 0;}for (int i 0; i nums.length; i) {//在排序后的数值中才能找到最小差值if (k1ik-1nums.length) {//排序后的数据间隔在原数组中最小以第ik为上限第i为下限取值if (minnums[ik-1]-nums[i]) {minnums[ik-1]-nums[i];//循环取值直到最小差值}}}return min;}}