给定 n 个学生的学号(从 1 到 n 编号)以及他们的考试成绩,表示为(学号,考试成绩),请将这些学生按考试成绩降序排序,若考试成绩相同,则按学号升序排序。
样例
样例1
输入: array = [[2,50],[1,50],[3,100]]
输出: [[3,100],[1,50],[2,50]]
样例2
输入: array = [[2,50],[1,50],[3,50]]
输出: [[1,50],[2,50],[3,50]]
思路:先将学号进行排序,再将成绩进行排序,即可保证相同成绩情况下按学号排序
class Solution {
public:
/**
* @param array: the input array
* @return: the sorted array
*/
vector<vector<int>> multiSort(vector<vector<int>> &array) {
for(int i=0;i<array.size();i++){
if(array[i][0]!=i+1) {
swap(array[i],array[array[i][0]-1]);
i--;
}
}
for(int i=0;i<array.size()-1;i++){
for(int j=0;j<array.size()-1;j++){
if(array[j][1]<array[j+1][1])
swap(array[j],array[j+1]);
}
}
return array;
}
void swap(vector<int> &A,vector<int> &B){
vector<int> tmp=A;
A=B;
B=tmp;
}
};