leetcode刷题Day04
406.根据身高重建队列
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
class Solution { static bool cmp(vector<int> a,vector<int> b) { if(a[0]==b[0]) return a[1]<b[1]; return a[0]>b[0]; } public: vector<vector<int>> reconstructQueue(vector<vector<int>>& people) { sort(people.begin(),people.end(),cmp); vector<int> t; for(int i=0;i<people.size();i++) { t=people[i]; for(int j=i;j>t[1];j--) { people[j]=people[j-1]; } people[t[1]]=t; } return people; } };
|
优化:使用vector插入函数insert,结果是效率更慢。。。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| class Solution { static bool cmp(vector<int> a,vector<int> b) { if(a[0]==b[0]) return a[1]<b[1]; return a[0]>b[0]; } public: vector<vector<int>> reconstructQueue(vector<vector<int>>& people) { sort(people.begin(),people.end(),cmp); vector<vector<int>> que; int position; for(int i=0;i<people.size();i++) { position=people[i][1]; que.insert(position+que.begin(),people[i]); } return que; } };
|
优化:使用链表实现-插入效率更高-时间效率更高,空间效率变低
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| class Solution { static bool cmp(vector<int> a,vector<int> b) { if(a[0]==b[0]) return a[1]<b[1]; return a[0]>b[0]; } public: vector<vector<int>> reconstructQueue(vector<vector<int>>& people) { sort(people.begin(),people.end(),cmp); list<vector<int>> que; int position; for(int i=0;i<people.size();i++) { position=people[i][1]; list<vector<int>> :: iterator it=que.begin(); while(position--) { it++; } que.insert(it,people[i]); } return vector<vector<int>>(que.begin(),que.end()); } };
|
435.无重叠区间
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
class Solution { public: static bool cmp (const vector<int>& a, const vector<int>& b) { return a[0] < b[0]; } int eraseOverlapIntervals(vector<vector<int>>& intervals) { if (intervals.size() == 0) return 0; sort(intervals.begin(), intervals.end(), cmp); int end=intervals[0][1]; int count=1; for(int i=1;i<intervals.size();i++) { if(end<=intervals[i][0]) { end=intervals[i][1]; count++; } } return intervals.size()-count; } };
|