君子有诸己而后求诸人,无诸已而后非诸人。所藏乎身不恕,而能喻诸人者,未之有也。

1 sort函数的比较机制更改

sort函数默认是按变量的值从小到大排序,那么如何自定义呢?下面以按绝对值从大到小排序

1
2
3
4
5
6
7
8
9
10
11
class Solution {
static bool cmp(int a, int b) {
return abs(a) > abs(b);
}

public:
int diy_sort(vector<int>& nums, int k) {
sort(nums.begin(), nums.end(), cmp);
return 0;
}
};

给定一个二维数组vector<vector<int> > people,n * 2 要求按照第一个元素从大到小,在第一个元素相同的情况下,第二个元素从小到大排列

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Solution {
public:
static bool cmp(const vector<int> &a, const vector<int> &b){
if(a[0] == b[0]) return a[1] < b[1];
return a[0] > b[0];
}

vector<vector<int>> reconstructQueue(vector<vector<int>>& people) {
sort(people.begin(), people.end(), cmp);
vector<vector<int> > que;
for(int i = 0; i < people.size(); i ++) {
que.insert(que.begin() + people[i][1], {people[i][0], people[i][1]});
}
return que;
}
};