描述 给一个二维数组scores表示每个学生的各科成绩,求出学生中总成绩排名第K的索引。 如果成绩一样,越早出现的排名越高。 0 <= scores[i][j] <= 100
示例:
输入:
scores: [[90, 80, 70], [90, 90, 90], [60, 60, 60]]
k: 2
输出: 0
解释:
总成绩中排名第二的是索引为0的学生
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];
}
};