具体思路:
转化为上车问题,或者直接进行排序;
具体代码:
1.排序:
class Solution {
public:
bool canAttendMeetings(vector<vector<int>>& intervals) {
if(intervals.size()==0)
return true;
sort(intervals.begin(),intervals.end(),[](vector<int>& a,vector<int>& b){
if(a[0]==b[0]){
return a[1]<b[1];
}
return a[0]<b[0];
});
int start=intervals[0][0];
int end=intervals[0][1];
for(int i=1;i<intervals.size();i++){
if(end>intervals[i][0])
return false;
start=intervals[i][0];
end=intervals[i][1];
}
return true;
}
};
2.上车问题:
class Solution {
public:
bool canAttendMeetings(vector<vector<int>>& intervals) {
vector<pair<int,int>> vec;
for(auto ele:intervals){
vec.push_back({ele[0],1});
vec.push_back({ele[1],-1});
}
sort(vec.begin(),vec.end(),[](pair<int,int>& pa,pair<int,int>& pb){
if(pa.first==pb.first)
return pa.second<pb.second;
return pa.first<pb.first;
});
int cnt=0;
for(auto p:vec){
cnt+=p.second;
if(cnt>1)
return false;
}
return true;
}
};