LeetCode 2545. 根据第 K 场考试的分数排序

2023-11-15

班里有 m 位学生,共计划组织 n 场考试。给你一个下标从 0 开始、大小为 m x n 的整数矩阵 score ,其中每一行对应一位学生,而 score[i][j] 表示第 i 位学生在第 j 场考试取得的分数。矩阵 score 包含的整数 互不相同 。

另给你一个整数 k 。请你按第 k 场考试分数从高到低完成对这些学生(矩阵中的行)的排序。

返回排序后的矩阵。

示例 1:
在这里插入图片描述
输入:score = [[10,6,9,1],[7,5,11,2],[4,8,3,15]], k = 2
输出:[[7,5,11,2],[10,6,9,1],[4,8,3,15]]
解释:在上图中,S 表示学生,E 表示考试。

  • 下标为 1 的学生在第 2 场考试取得的分数为 11 ,这是考试的最高分,所以 TA 需要排在第一。
  • 下标为 0 的学生在第 2 场考试取得的分数为 9 ,这是考试的第二高分,所以 TA 需要排在第二。
  • 下标为 2 的学生在第 2 场考试取得的分数为 3 ,这是考试的最低分,所以 TA 需要排在第三。

m == score.length
n == score[i].length
1 <= m, n <= 250
1 <= score[i][j] <= 105
score 由 不同 的整数组成
0 <= k < n

解法一:直接排序:

class Solution {
public:
    vector<vector<int>> sortTheStudents(vector<vector<int>>& score, int k) {
        set<pair<int, int>, greater<pair<int, int>>> scoreAndId;
        int studentNum = score.size();
        for (int i = 0; i < studentNum; ++i) {
            scoreAndId.insert({score[i][k], i});
        }

        vector<vector<int>> res;
        for (pair<int, int> studentInfo : scoreAndId) {
            res.push_back(score[studentInfo.second]);
        }

        return res;
    }
};

如果有n个学生,此算法时间复杂度为O(nlgn),空间复杂度为O(n)。

解法二:原地排序:

class Solution {
public:
    vector<vector<int>> sortTheStudents(vector<vector<int>>& score, int k) {
        sort(score.begin(), score.end(), [k] (vector<int> &a, vector<int> &b) {
            return a[k] > b[k];
        });
        return score;
    }
};

如果有n个学生,此算法时间复杂度为O(nlgn),空间复杂度为O(1)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LeetCode 2545. 根据第 K 场考试的分数排序 的相关文章

随机推荐

  • 【华为OD机试真题 Java】单行道汽车通行时间

    前言 本专栏将持续更新华为OD机试题目 并进行详细的分析与解答 包含完整的代码实现 希望可以帮助到正在努力的你 关于OD机试流程 面经 面试指导等 如有任何疑问 欢迎联系我 wechat steven moda email nansun09
  • Calendar,Date,Timestamp的使用及其转换

    下面列出了Date Timestamp String相互转换 以及通过Calendar创建时间的例子 import java sql Timestamp import java text ParseException import java
  • VTK学习之三维图像切片交互提取(回调函数、观察者-命令模式)

    参考博客 VTK Learning 三维图像切片 二 鼠标交互 回调函数 观察者 命令模式 江南又旧雨的博客 CSDN博客 根据鼠标交互事件 同时实现切片的实时提取功能 上代码 include
  • GOplot

    GOplot 为这个包写笔记 主要是复习一下markdown写作而已 还是建议大家看原作者的英文文档 安装并加载必须的packages 如果你还没有安装 就运行下面的代码安装 install packages GOplot library
  • 两数相加-2

    题目描述 给出两个 非空 的链表用来表示两个非负的整数 其中 它们各自的位数是按照 逆序 的方式存储的 并且它们的每个节点只能存储 一位 数字 如果 我们将这两个数相加起来 则会返回一个新的链表来表示它们的和 您可以假设除了数字 0 之外
  • [SDN]Mininet中的miniedit问题汇总

    作者 清水寺丞 简介 正在学习unity 数据库 计算机通信网络和python 喜欢部署各种奇奇怪怪的小项目 喜欢就点个关注一起学习吧 目录 前言 怎么打开MiniEdit 保存mn与py文件出现问题 为什么我run了拓扑之后终端没有出现m
  • 掌握到胃-奈氏图与伯德图的绘制

    自控笔记 5 4绘制频率特性曲线 一 开环奈奎斯特曲线的绘制 先上步骤 确定起点G j0 和终点G j 中间段由s平面零极点矢量随s j 变化规律绘制 必要时可求出G j 与实轴 虚轴的交点 再看细节 对于一个系统的传递函数 可以将其分解成
  • touch、mkdir、rmdir、cp、mv、rm命令的常用参数的使用

    touch 可创建多个新文件或更新文件的修改日期 touch m t 时间 修改文件的时间 并可以指定修改时间 touch a 将文件的存取时间改为当前时间 mkdir 用于创建一个目录 mkdir p 用于创建目录时 如果父目录不存在 则
  • 基于MATLAB用图解法解方程(附图像与代码)

    目录 一 一元方程图解法 例题1 二 二元方程图解法 例题2 三 多项式型方程 例题 3 一 一元方程图解法 例题1 用图解法求 解 MATLAB代码 clc clear ezplot exp 3 t sin 4 t 2 4 exp 0 5
  • C# 笔记4——如何实现单击放大全屏和退出全屏

    C 笔记4 如何实现单击放大全屏和退出全屏 由于工作需求 需要实现单击放大和退出全屏功能 想了一下 即单击放大时候把播放视频的picturebox的大小设置和屏幕宽高相同 位置设置为屏幕左上角 0 0 即可 单击退出全屏时候把控件大小和位置
  • 扩散模型与生成模型详解

    扩散模型与其他生成模型 什么是扩散模型 扩散模型的简介 生成建模是理解自然数据分布的开创性任务之一 VAE GAN和Flow系列模型因其实用性能而在过去几年中占据了该领域的主导地位 尽管取得了商业上的成功 但它们的理论和设计缺陷 棘手的似然
  • 中国传统节日端午节网页HTML代码 学生网页课程设计期末作业下载 春节大学生网页设计制作成品下载 DW春节节日网页作业代码下载

    HTML5期末大作业 节日网站设计 中国传统节日端午节网页HTML代码 7页 HTML CSS JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源码 常见网页设计作业题材有 个人 美食 公司
  • visio技巧(曲线、连接点、自制模具)

    一 画曲线 1 1 铅笔 任意多边形 弧形都可以画曲线 但曲度不好更改 1 2 鼠标选中连接线 在画布上画一个直角线 选中该线 点击右键 选曲线连接线 随意拉动该线上的连接点可以调整成任意曲度 二 增加 移动 删除图形上的连接点 1 1 增
  • 【Python 基础篇】Python代码 之 程序结构

    目录 前言 一 顺序结构 1 1 分支结构 1 2 双向分支 1 3 多路分支 1 4 if语句补充 二 顺序结构 三 循环结构 while while else for in for else 四 流程控制语句 break continu
  • SparkStreaming知识总结

    一 流式计算的概述 1 1 什么是流式计算 1 数据流与静态数据的区别 数据流指的就是不断产生的数据 是源源不断 不会停止 静态数据指的就是存储在磁盘中的固定的数据 2 流式计算的概念 就是对数据流进行计算 由于数据是炼苗不断的产生的 所以
  • VMware15.5安装win7旗舰版系统

    1 启动vmware 文件 新建虚拟机 2 选择自定义安装 下一步 3 兼容性默认不做修改 下一步 4 安装来源选择稍后安装操作系统 5 选择windows7 64 6 安装位置选择非系统盘位置 放在C盘会拖累系统运行速度 7 8 取决于物
  • PostgreSQL_row_number() over()

    语法 row number over partition by col1 order by col2 desc row number 为返回的记录定义各行编号 pritition by 分组 order by 排序 实例 实例数据来源 利用
  • vue实现文件下载

    原理 a href url 复制代码 实际使用场景 上面的原理中适合开放的资源下载 http请求中无需验证时使用 在实际使用过程中 a标签中的url中直接设置header比较麻烦且不安全 而且从开发规范上api一般上要封装一下 header
  • 华为OD机试 - 最多颜色的车辆(Java)

    题目描述 在一个狭小的路口 每秒只能通过一辆车 假设车辆的颜色只有 3 种 找出 N 秒内经过的最多颜色的车辆数量 三种颜色编号为0 1 2 输入描述 第一行输入的是通过的车辆颜色信息 0 1 1 2 代表4 秒钟通过的车辆颜色分别是 0
  • LeetCode 2545. 根据第 K 场考试的分数排序

    班里有 m 位学生 共计划组织 n 场考试 给你一个下标从 0 开始 大小为 m x n 的整数矩阵 score 其中每一行对应一位学生 而 score i j 表示第 i 位学生在第 j 场考试取得的分数 矩阵 score 包含的整数 互