题目描述
解题思路:
-
初步想法:按初始顺序一个一个进入队列,进去后从头开始比较,直到不满足条件的就在那个地方入队。
-
代码实现后发现结果不对,存在先存进去的不满足Ki条件。故可以在进入队列前按Ki条件先排序好
class Solution {
public:
vector<vector<int>> reconstructQueue(vector<vector<int>>& people) {
sort(people.begin(), people.end(), [](vector<int>& a, vector<int>& b){
return a[1]<b[1];
});//排序
vector<vector<int>> ans;
vector<vector<int>>::iterator it;
ans.push_back(people[0]);
for(int i = 1; i < people.size(); ++i){
int cnt = 0;
for(it = ans.begin(); it != ans.end(); ++it){
vector<int> j = *it;
if(people[i][0] <= j[0]){//比较高度
if(cnt+1> people[i][1]) break;//判断Ki条件
else{
cnt += 1;
}
}
}
ans.insert(it,people[i]);
}
return ans;
}
};
收获:
vector容器用insert函数加迭代器实现插入。