题目

给你一个 下标从 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] <= 10^5
    来源:力扣(LeetCode)

解题思路

  最最简单的思路就是直接翻译题目,直接从数组中选出来k个元素然后找到最小的差值。

class Solution:def minimumDifference(self, nums: List[int], k: int) -> int:MIN=float('inf')for i in itertools.combinations(nums, k):if max(i)-min(i)<MIN:MIN=max(i)-min(i)return MIN


  但是这肯定避免不了大量的无效重复运算,以至于在LeetCode平台上超时。为了避免大量重复的运算,我们需要很便捷地或者说很快的找到所选的k个元素的最大值和最小值,因此,需要将数组进行排序,就可以直接在头和尾找到最值,而中间的那些值则可以略过不加入当前运算。排序之后寻找k个学生的最小差值同时也避免了大量的排列组合运算,每次寻出k个学生只需要按照一个固定大小的窗口滑动一次,这样即保证了能够找全所有组合同时也只需要算两头的值。

class Solution:def minimumDifference(self, nums: List[int], k: int) -> int:nums.sort()i=0j=k-1MIN=nums[j]-nums[i]i+=1j+=1while j<len(nums):if nums[j]-nums[i]<MIN:MIN=nums[j]-nums[i]i+=1j+=1return MIN

LeetCode简单题之学生分数的最小差值相关推荐

  1. 「 每日一练,快乐水题 」1984. 学生分数的最小差值

    ✅力扣原题: 力扣链接:1984. 学生分数的最小差值 ✅题目简述: 给你一个 下标从 0 开始 的整数数组 nums ,其中 nums[i] 表示第 i 名学生的分数.另给你一个整数 k . 从数组 ...

  2. 1984. 学生分数的最小差值

    1984. 学生分数的最小差值 给你一个 下标从 0 开始 的整数数组 nums ,其中 nums[i] 表示第 i 名学生的分数.另给你一个整数 k . 从数组中选出任意 k 名学生的分数,使这 k ...

  3. LeetCode 1984. 学生分数的最小差值

    文章目录 1. 题目 2. 解题 1. 题目 给你一个 下标从 0 开始 的整数数组 nums ,其中 nums[i] 表示第 i 名学生的分数.另给你一个整数 k . 从数组中选出任意 k 名学生的 ...

  4. LeetCode简单题之学生出勤记录 I

    题目 给你一个字符串 s 表示一个学生的出勤记录,其中的每个字符用来标记当天的出勤情况(缺勤.迟到.到场).记录中只含下面三种字符: 'A':Absent,缺勤 'L':Late,迟到 'P':Pre ...

  5. leetcode算法题--学生分数的最小差值

    原题链接:https://leetcode-cn.com/problems/minimum-difference-between-highest-and-lowest-of-k-scores/ cla ...

  6. 2022-4-10 Leetcode 1984.学生分数的最小差值

    class Solution {public:int minimumDifference(vector<int>& nums, int k) {sort(nums.begin(), ...

  7. leetcode数据库题库-178. 分数排名

    leetcode数据库题库-178. 分数排名https://leetcode-cn.com/problems/rank-scores/题目核心是[重复且连续]的排序 ,排序相关函数简单整理下 一.R ...

  8. LeetCode简单题之二叉搜索树的最小绝对差/最小距离

    题目 给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 . 差值是一个正数,其数值等于两值之差的绝对值. 示例 1: 输入:root = [4,2,6,1,3] 输出: ...

  9. LeetCode简单题之最小绝对差

    题目 给你个整数数组 arr,其中每个元素都 不相同. 请你找到所有具有最小绝对差的元素对,并且按升序的顺序返回. 示例 1: 输入:arr = [4,2,1,3] 输出:[[1,2],[2,3],[ ...

最新文章

  1. pip 升级_python的pip命令
  2. 【力扣网练习题】整数反转
  3. 对未来计算机的设想1000字,未来的世界作文1000字
  4. 网站推广专员浅析不做大幅修改如何调整网站推广内容?
  5. 读取接口XML和批量导入数据SqlBulkCopy
  6. 第49讲:实战上手,Scrapy-Redis 分布式实现
  7. 每日一题(18)—— 指定地址存入数据
  8. javafor循环打印图案_C程序使用循环打印盒子图案
  9. huffman图像编码C语言,Huffman编码的c语言实现
  10. 【Python3网络爬虫开发实战】3.3-正则表达式
  11. linux环境下安装weblogic,在Linux下安装weblogic 12.2.1.3.0的过程
  12. mysql sql注入工具下载_超级SQL注入工具【SSQLInjection】
  13. C语言pow函数返回值一直是0
  14. 如何将doc格式转换成jpg图片格式
  15. ​ 众至科技数据防泄露系统,保护企业办公核心数据
  16. 道翰天琼认知智能为您解密:Rust语言杀疯了!前有谷歌高薪争夺 Rust 人才,Facebook再官宣加入Rust基金会 「自2016年以来,Facebook 就已开始使用 Rust,并应用在开发
  17. 【JVM学习篇】剖析JVM类加载机制
  18. termux是等于linux终端,termux终端
  19. Problem T 分数拆分问题(第四讲)
  20. CSS3实现平行四边形

热门文章

  1. Docker 入门系列(6)- Docker 互联
  2. Java,Hello world 欢迎进入Java世界
  3. Apriori算法通俗详解_fpgrowth2_关联分析评估
  4. web服务器tornada,flask问题
  5. caffe 下一些参数的设置
  6. LeetCode简单题之拆炸弹
  7. LeetCode简单题之通过翻转子数组使两个数组相等
  8. ARM研发进展与企业清单
  9. 深度学习与TensorFlow
  10. Mybatis获取参数值的方式