Bootstrap

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;
    }
};

代码解释

  1. 检查 k 的有效性:首先检查 k 是否在有效范围内,即 0 <= k < score[0].size()。如果不在有效范围内,直接返回原始的 score 矩阵。

  2. 使用 std::sort 和自定义比较函数:使用 std::sort 函数对 score 进行排序。自定义比较函数通过 lambda 表达式 [k](const std::vector<int>& a, const std::vector<int>& b) { return a[k] > b[k]; } 实现,它比较两个学生在第 K 场考试的分数。

  3. 返回排序后的矩阵:排序完成后,返回排序后的 score 矩阵。

总结

通过使用 std::sort 和自定义比较函数,我们可以高效地根据第 K 场考试的分数对学生进行排序。这种方法不仅代码简洁,而且利用了 C++ 标准库的高效排序算法,能够处理大规模数据的排序问题。

;