LeetCode 题目 2545. 根据第 K 场考试的分数排序
在本篇文章中,我们将探讨如何根据第 K 场考试的分数对学生进行排序。这个问题是 LeetCode 上的一个中等难度问题,涉及到排序算法和自定义比较函数的使用。
问题描述
解题思路
理解问题
首先,我们需要理解问题的核心:根据第 K 场考试的分数对学生进行排序。这意味着我们需要比较学生在第 K 场考试的分数,并据此确定他们的排名。
使用排序算法
C++ 提供了 std::sort
函数,它是一个非常高效的排序算法。我们可以使用这个函数,并提供一个自定义的比较函数来实现根据第 K 场考试分数的排序。
自定义比较函数
自定义比较函数需要能够比较两个学生在第 K 场考试的分数。如果一个学生的分数高于另一个学生,那么这个学生应该排在前面。
实现代码
以下是实现这个算法的 C++ 代码:
class Solution {
public:
vector<vector<int>> sortTheStudents(vector<vector<int>>& score, int k) {
vector<vector<int>> sc;
if(k<0||k>=score[0].size())
return score;
sort(score.begin(),score.end(),[k](const vector<int>& a,const vector<int> &b)
{
return a[k]>b[k];
});
return score;
}
};
代码解释
-
检查 k 的有效性:首先检查
k
是否在有效范围内,即0 <= k < score[0].size()
。如果不在有效范围内,直接返回原始的score
矩阵。 -
使用 std::sort 和自定义比较函数:使用
std::sort
函数对score
进行排序。自定义比较函数通过 lambda 表达式[k](const std::vector<int>& a, const std::vector<int>& b) { return a[k] > b[k]; }
实现,它比较两个学生在第 K 场考试的分数。 -
返回排序后的矩阵:排序完成后,返回排序后的
score
矩阵。
总结
通过使用 std::sort
和自定义比较函数,我们可以高效地根据第 K 场考试的分数对学生进行排序。这种方法不仅代码简洁,而且利用了 C++ 标准库的高效排序算法,能够处理大规模数据的排序问题。