[LeetCode] Meeting Rooms
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 };
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步