一、定义
list的底层是双向链表,通过指针进行数据访问。相对于vector,list能高效地在任何地方插入和删除。
二、用法
1 2 3 4 5
| list<Type> list; list<Type>::iterator it list.push_back() list.insert() list.erase()
|
三、应用
根据身高重建队列
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| class Solution { public: static bool cmp(vector<int>&a, 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); list<vector<int>>que; for(int i = 0; i < people.size(); i++) { int pos = people[i][1]; list<vector<int>>::iterator it = que.begin(); while(pos--) { it++; } que.insert(it, people[i]); } return vector<vector<int>>(que.begin(), que.end()); } };
|