- 这一个两个维度的数据排序
- 如果维度多于一个,就要分开来考虑,不要两个维度一起考虑,两个一起考虑难免会出现顾此失彼的情况
- 能想像出来,前面有几个人的这个维度竟然可以作为插入的下标值?
#include <iostream>
#include <vector>
#include <algorithm>
class Solution {
private:
static bool cmp(std::vector<int> a, std::vector<int> b) {
if (a.at(0) == b.at(0))
return a.at(1) < b.at(1);
return a.at(0) > b.at(0);
};
public:
std::vector<std::vector<int>> reconstructQueue(std::vector<std::vector<int>>& people) {
std::sort(people.begin(), people.end(), cmp);
std::sort(people.begin(), people.end(), [](std::vector<int> a, std::vector<int> b) {
return a.at(0) > b.at(0) || (a.at(0) == b.at(0) && a.at(1) < b.at(1));
});
std::vector<std::vector<int>> queue;
for (int i = 0; i < people.size(); ++i) {
int position = people.at(i).at(1);
queue.insert(queue.begin() + position, people.at(i));
}
return queue;
}
};
int main()
{
Solution s;
return 0;
}
- 必须要用一个新的队列,来接受原队列的插入,如果只在原队列上插入,就会导致同一个元素被多次访问的情况
- 汇总