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))

 

posted @ 2022-07-17 18:08  吴呀呀~  阅读(33)  评论(0)    收藏  举报