科技新助力
【LetMeFly】
学生分数的最小差值排序(类似滑动窗口)力扣题目链接https://leetcode.cn/problems/minimum-difference-between-highest-and-lowest-of-k-scores/给你一个下标从 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解题方法排序将n u m s numsnums排序返回所有长度为k kk的子数组中d i f f ( l a s t , f i r s t ) diff(last, first)diff(last,first)的最小值即可。
时间复杂度O ( N 2 ) O(N^
O(N
空间复杂度O ( N log N ) O(N\log N)O(NlogN)AC代码C/* * LastEditTime:
10:33:04 */classSolution{public:intminimumDifference(vectorintnums,intk){sort(nums.begin(),nums.end());intans100000;for(inti0;ik-1nums.size();i){ansmin(ans,nums[ik-1]-nums[i]);}returnans;}};Python LastEditTime:
10:37:04 fromtypingimportListclassSolution:defminimumDifference(self,nums:List[int],k:int)-int:nums.sort()returnmin(nums[ik-1]-nums[i]foriinrange(len(nums)-k
)Java/* * LastEditTime:
10:40:30 */importjava.util.Arrays;classSolution{publicintminimumDifference(int[]nums,intk){intans100000;Arrays.sort(nums);for(inti0;ik-1nums.length;i){ansMath.min(ans,nums[ik-1]-nums[i]);}returnans;}}Go/* * LastEditTime:
10:39:56 */packagemainimportsortfuncminimumDifference(nums[]int,kint)int{ans:100000sort.Ints(nums)fori:0;ilen(nums)-k1;i{ansmin(ans,nums[ik-1]-nums[i])}returnans}Rust/* * LastEditTime:
10:43:39 */implSolution{pubfnminimum_difference(mutnums:Veci32,k:i
-i32{letkkasusize;letmutans100000;nums.sort();foriin
.nums.len()-k1{ansans.min(nums[ik-1]-nums[i]);}ans}}同步发文于CSDN和我的个人博客原创不易转载经作者同意后请附上原文链接哦~千篇源码题解已开源
B次元3.5.2破解版-B次元3.5.2破解版应用