Problem Description:

Given an array of meeting time intervals consisting of start and end times [[s1,e1],[s2,e2],...] (si < ei), determine if a person could attend all meetings.

For example,
Given [[0, 30],[5, 10],[15, 20]],
return false


The idea is pretty simple: first we sort the intervals in the ascending order of start; then we check for the overlapping of each pair of neighboring intervals. If they do, then return false; after we finish all the checks and have not returned false, just return true.

Sorting takes O(nlogn) time and the overlapping checks take O(n) time, so this idea is O(nlogn) time in total.

The code is as follows.

 1 class Solution {
 2 public:
 3     bool canAttendMeetings(vector<Interval>& intervals) {
 4         sort(intervals.begin(), intervals.end(), [](Interval& l, Interval& r){return l.start < r.start;});
 5         int n = intervals.size();
 6         for (int i = 0; i < n - 1; i++) {
 7             if (intervals[i].end > intervals[i + 1].start) {
 8                 return false;
 9             }
10         }
11         return true;
12     }
13 };

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-02-26
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-07-16
  • 2021-09-25
  • 2022-03-02
  • 2022-12-23
  • 2022-12-23
  • 2021-09-22
  • 2022-12-23
相关资源
相似解决方案