LeetCode 2545.根据第 K 场考试的分数排序:考察编程语言的排序

news/2024/12/22 21:46:40 标签: leetcode, 算法, 题解, 矩阵, 排序

【LetMeFly】2545.根据第 K 场考试的分数排序:考察编程语言的排序

力扣题目链接:https://leetcode.cn/problems/sort-the-students-by-their-kth-score/

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

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

返回排序后的矩阵

 

示例 1:

leetcode.com%2Fuploads%2F2022%2F11%2F30%2Fexample1.png&pos_id=img-a0q3w0pe-1734784582280%29" />

输入: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 需要排在第三。

示例 2:

leetcode.com%2Fuploads%2F2022%2F11%2F30%2Fexample2.png&pos_id=img-2uDTD297-1734784582283%29" />

输入:score = [[3,4],[5,6]], k = 0
输出:[[5,6],[3,4]]
解释:在上图中,S 表示学生,E 表示考试。
- 下标为 1 的学生在第 0 场考试取得的分数为 5 ,这是考试的最高分,所以 TA 需要排在第一。
- 下标为 0 的学生在第 0 场考试取得的分数为 3 ,这是考试的最低分,所以 TA 需要排在第二。

 

提示:

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

解题方法:自定义排序

在各种编程语言中,调用排序函数(如有)对数组按照每一行下标 k k k从大到小的顺序排序

  • 时间复杂度 O ( m log ⁡ m ) O(m\log m) O(mlogm)
  • 空间复杂度 O ( log ⁡ m ) O(\log m) O(logm)

AC代码

C++
/*
 * @Author: LetMeFly
 * @Date: 2024-12-21 17:49:59
 * @LastEditors: LetMeFly.xyz
 * @LastEditTime: 2024-12-21 17:53:37
 * @Description: 没有全程在写
 */
class Solution {
public:
    vector<vector<int>> sortTheStudents(vector<vector<int>>& score, int k) {
        sort(score.begin(), score.end(), [&k](const vector<int>& a, const vector<int>& b) {
            return a[k] > b[k];
        });
        return score;
    }
};
Python
'''
Author: LetMeFly
Date: 2024-12-21 17:55:19
LastEditors: LetMeFly.xyz
LastEditTime: 2024-12-21 17:56:05
'''
from typing import List

class Solution:
    def sortTheStudents(self, score: List[List[int]], k: int) -> List[List[int]]:
        return sorted(score, key=lambda a: -a[k])
Java
/*
 * @Author: LetMeFly
 * @Date: 2024-12-21 18:01:15
 * @LastEditors: LetMeFly.xyz
 * @LastEditTime: 2024-12-21 18:04:28
 */
import java.util.Arrays;

class Solution {
    public int[][] sortTheStudents(int[][] score, int k) {
        Arrays.sort(score, (a, b) -> b[k] - a[k]);
        return score;
    }
}
Go
/*
 * @Author: LetMeFly
 * @Date: 2024-12-21 20:26:42
 * @LastEditors: LetMeFly.xyz
 * @LastEditTime: 2024-12-21 20:31:21
 */
package main

import "sort"

func sortTheStudents(score [][]int, k int) [][]int {
    sort.Slice(score, func(i, j int) bool {
        return score[i][k] > score[j][k]
    })
    return score
}

同步发文于CSDN和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~

Tisfy:https://letmefly.blog.csdn.net/article/details/144635776


http://www.niftyadmin.cn/n/5795938.html

相关文章

如何使用Python进行音频片断合成

以下是几种使用 Python 进行音频合成的方法&#xff1a; 使用 synthesizer 库 通过 pip install synthesizer 安装后&#xff0c;利用其提供的合成器类&#xff0c;可自定义振荡器类型&#xff0c;如锯齿波、方波或正弦波&#xff0c;并调制振幅来创造不同音色&#xff0c;还…

pydantic BaseModel

1. Pydantic 是什么&#xff1f; Pydantic 是一个Python库&#xff0c;主要用于数据验证和设置管理。它通过定义数据模型&#xff08;Model&#xff09;来确保输入数据的类型和结构符合预期。 Pydantic 的核心功能是基于Python的类型提示&#xff08;Type Hints&#xff09;&a…

11_HTML5 拖放 --[HTML5 API 学习之旅]

1. 基本概念 HTML5 拖放&#xff08;Drag and Drop&#xff0c;简称 DnD&#xff09;API 提供了一种直观的方式让用户通过鼠标或触摸屏拖动网页中的元素&#xff0c;并将它们放置在其他位置。以下是关于 HTML5 拖放的基本概念的详细介绍&#xff1a; 1. 可拖动元素 draggable…

flask-admin+Flask-WTF 实现实现增删改查

背景&#xff1a; flask-adminflask-wtf在网上可以搜索到很多资料&#xff0c;但有价值的很少&#xff0c;或许是太简单&#xff0c;或者是很少人这么用&#xff0c;或者。。。&#xff0c;本文将作者近礼拜摸索到的一点经验分享出来&#xff0c;给自己做个记录。 材料&#…

Spring 6 实现 Bean 异步初始化,减少项目启动时间

在 Spring 6 中&#xff0c;异步初始化 Bean 为优化应用启动性能提供了有力手段。通过让特定的 Bean 在后台进行初始化&#xff0c;避免其阻塞应用的启动流程&#xff0c;从而显著缩短应用从启动到对外提供服务的时间。 一、基础环境搭建 首先&#xff0c;确保项目的依赖中引入…

2024.12 迈向可解释和可解释的多模态大型语言模型:一项综合调查

https://arxiv.org/pdf/2412.02104 问题 随着多模态大语言模型&#xff08;MLLMs&#xff09;在人工智能领域的快速发展&#xff0c;其在处理多模态信息&#xff08;如文本、图像、视频、音频&#xff09;时展现出强大的能力&#xff0c;但模型的复杂性和规模导致其决策过程难…

数据集-目标检测系列 车牌检测识别 数据集 CCPD2019

车牌检测&识别 数据集 CCPD2019 DataBall 助力快速掌握数据集的信息和使用方式&#xff0c;会员享有 百种数据集&#xff0c;持续增加中。 需要更多数据资源和技术解决方案&#xff0c;知识星球&#xff1a; “DataBall - X 数据球(free)” 贵在坚持&#xff01; 数据样…

【论文速读】| FirmRCA:面向 ARM 嵌入式固件的后模糊测试分析,并实现高效的基于事件的故障定位

基本信息 原文标题&#xff1a;FIRMRCA: Towards Post-Fuzzing Analysis on ARM Embedded Firmware with Efficient Event-based Fault Localization 原文作者&#xff1a;Boyu Chang, Binbin Zhao, Qiao Zhang, Peiyu Liu, Yuan Tian, Raheem Beyah, Shouling Ji 作者单位&…