LeetCode 5854. 学生分数的最小差值

简介: 给你一个 下标从 0 开始 的整数数组 nums ,其中 nums[i] 表示第 i 名学生的分数。另给你一个整数 k 。

网络异常,图片无法展示
|

题目


给你一个 下标从 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

解题思路


class Solution:
    def minimumDifference(self, nums: List[int], k: int) -> int:
        nums.sort()
        resArr : list = []
        for i in range(len(nums)-k+1):
            each = nums[i:i+k] #把最接近差值的数组抽取出来
            res = each[-1] - each[0] #最大值与最小值差值
            resArr.append(res)
        return min(resArr)
if __name__ == '__main__':
    # nums = [9,4,1,7]
    # k = 2
    nums = [90]
    k = 1
    result = Solution().minimumDifference(nums, k)
    print(result)
目录
相关文章
|
6月前
leetcode-2016:增量元素之间的最大差值
leetcode-2016:增量元素之间的最大差值
55 0
|
6月前
leetcode-1447:最简分数
leetcode-1447:最简分数
46 0
|
6月前
|
算法 测试技术 C#
【贪心算法】【中位贪心】LeetCode:100123.执行操作使频率分数最大
【贪心算法】【中位贪心】LeetCode:100123.执行操作使频率分数最大
|
6月前
leetcode:908. 最小差值 I
leetcode:908. 最小差值 I
28 0
|
6月前
|
算法 测试技术 C#
二分查找|差分数组|LeetCode2251:花期内花的数目
二分查找|差分数组|LeetCode2251:花期内花的数目
|
6月前
leetcode-856:括号的分数
leetcode-856:括号的分数
38 0
|
6月前
leetcode-592:分数加减运算
leetcode-592:分数加减运算
51 0
|
6月前
leetcode-6118:最小差值平方和
leetcode-6118:最小差值平方和
34 0
|
6月前
|
SQL
leetcode-SQL-1988. 找出每所学校的最低分数要求
leetcode-SQL-1988. 找出每所学校的最低分数要求
28 0
|
6月前
leetcode-1984:学生分数的最小差值
leetcode-1984:学生分数的最小差值
46 0