天池 在线编程 排名查询

文章目录

1. 题目

描述
给一个二维数组scores表示每个学生的各科成绩,求出学生中总成绩排名第K的索引。
如果成绩一样,越早出现的排名越高。
0 <= scores[i][j] <= 100

示例:
输入:
scores: [[90, 80, 70], [90, 90, 90], [60, 60, 60]]
k: 2
输出: 0
解释:
总成绩中排名第二的是索引为0的学生

https://tianchi.aliyun.com/oj/338600113316063289/367781993046545027

2. 解题

  • 稳定排序
class Solution {
public:
    /**
     * @param scores: two dimensional array
     * @param K: an integer
     * @return: return a integer
     */
    int FindTheRank(vector<vector<int>> &scores, int K) {
        // write your code here
        vector<int> id(scores.size()), allsum(scores.size());
        iota(id.begin(), id.end(), 0);
        for(int i = 0; i < scores.size(); ++i)
        {
            int s = 0;
            for(int j = 0; j < scores[i].size(); ++j)
            {
                s += scores[i][j];
            }
            allsum[i] = s;
        }
        stable_sort(id.begin(), id.end(),[&](int a, int b){
            return allsum[a] > allsum[b];
        });
        return id[K-1];
    }
};

我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页