LeetCode简单题之学生分数的最小差值
题目
给你一个 下标从 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简单题之学生分数的最小差值相关推荐
- 「 每日一练,快乐水题 」1984. 学生分数的最小差值
✅力扣原题: 力扣链接:1984. 学生分数的最小差值 ✅题目简述: 给你一个 下标从 0 开始 的整数数组 nums ,其中 nums[i] 表示第 i 名学生的分数.另给你一个整数 k . 从数组 ...
- 1984. 学生分数的最小差值
1984. 学生分数的最小差值 给你一个 下标从 0 开始 的整数数组 nums ,其中 nums[i] 表示第 i 名学生的分数.另给你一个整数 k . 从数组中选出任意 k 名学生的分数,使这 k ...
- LeetCode 1984. 学生分数的最小差值
文章目录 1. 题目 2. 解题 1. 题目 给你一个 下标从 0 开始 的整数数组 nums ,其中 nums[i] 表示第 i 名学生的分数.另给你一个整数 k . 从数组中选出任意 k 名学生的 ...
- LeetCode简单题之学生出勤记录 I
题目 给你一个字符串 s 表示一个学生的出勤记录,其中的每个字符用来标记当天的出勤情况(缺勤.迟到.到场).记录中只含下面三种字符: 'A':Absent,缺勤 'L':Late,迟到 'P':Pre ...
- leetcode算法题--学生分数的最小差值
原题链接:https://leetcode-cn.com/problems/minimum-difference-between-highest-and-lowest-of-k-scores/ cla ...
- 2022-4-10 Leetcode 1984.学生分数的最小差值
class Solution {public:int minimumDifference(vector<int>& nums, int k) {sort(nums.begin(), ...
- leetcode数据库题库-178. 分数排名
leetcode数据库题库-178. 分数排名https://leetcode-cn.com/problems/rank-scores/题目核心是[重复且连续]的排序 ,排序相关函数简单整理下 一.R ...
- LeetCode简单题之二叉搜索树的最小绝对差/最小距离
题目 给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 . 差值是一个正数,其数值等于两值之差的绝对值. 示例 1: 输入:root = [4,2,6,1,3] 输出: ...
- LeetCode简单题之最小绝对差
题目 给你个整数数组 arr,其中每个元素都 不相同. 请你找到所有具有最小绝对差的元素对,并且按升序的顺序返回. 示例 1: 输入:arr = [4,2,1,3] 输出:[[1,2],[2,3],[ ...
最新文章
- pip 升级_python的pip命令
- 【力扣网练习题】整数反转
- 对未来计算机的设想1000字,未来的世界作文1000字
- 网站推广专员浅析不做大幅修改如何调整网站推广内容?
- 读取接口XML和批量导入数据SqlBulkCopy
- 第49讲:实战上手,Scrapy-Redis 分布式实现
- 每日一题(18)—— 指定地址存入数据
- javafor循环打印图案_C程序使用循环打印盒子图案
- huffman图像编码C语言,Huffman编码的c语言实现
- 【Python3网络爬虫开发实战】3.3-正则表达式
- linux环境下安装weblogic,在Linux下安装weblogic 12.2.1.3.0的过程
- mysql sql注入工具下载_超级SQL注入工具【SSQLInjection】
- C语言pow函数返回值一直是0
- 如何将doc格式转换成jpg图片格式
- ​ 众至科技数据防泄露系统,保护企业办公核心数据
- 道翰天琼认知智能为您解密:Rust语言杀疯了!前有谷歌高薪争夺 Rust 人才,Facebook再官宣加入Rust基金会 「自2016年以来,Facebook 就已开始使用 Rust,并应用在开发
- 【JVM学习篇】剖析JVM类加载机制
- termux是等于linux终端,termux终端
- Problem T 分数拆分问题(第四讲)
- CSS3实现平行四边形