1984.学生分数的最小差值
题目:给你应该下标从0开始的整数数组nums,其中nums[i]表示第i名学生的分数。另给你一个整数k。从数组中选出任意k名学生的分数,使这k个分数间最高分和最低分的差值达到最小化。返回可能的最小差值。
思路:
( 对该数组排序,那对其取n及n+k-1的下标的数的差值若为最小,即为题目所需的答案)
对数组nums进行排序,从下标0开始(设其为n),取n及n+k-1的下标的值进行相减
①存于数组中,最后取该数组中最小的值输出即可
②存于变量s中,继续循环,若接下来所得值小于s值,则与之替换,不能使n+k-1>len(nums)
1 class Solution: 2 def minimumDifference(self,nums:List[int],k:int)->int: 3 nums.sort() 4 s=max(nums) 5 for n in range(len(nums)): 6 if n+k-1<len(nums): 7 if s>(nums[n]-nums[n+k-1]): 8 s=nums[n]-nums[n+k-1] 9 else: 10 break 11 return s
官方题解:
学生分数的最小差值 - 学生分数的最小差值 - 力扣(LeetCode)
1 class Solution:
2 def minimumDifference(self,nums:List[int],k:int)->int:
3 nums.sort()
4 return min(nums[i+k-1]-nums[i] for i in range(len(nums)-k+1))
浙公网安备 33010602011771号