文章目录
- 1. 题目
- 2. 解题
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 herevector<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阿明),一起加油、一起学习进步!