[LeetCode] 252. Meeting Rooms 会议室
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
.
给一个会议时间区间的数组,问一个人是否能参加所有的会议。就是求这些区间是否有交集,如果有就不能参加所有的会,没有交集就可以参加所有的会议。
解法:先把区间按开始时间排序,然后判断每一个区间的开始时间是否比前一个会议的结束时间早,如果有,就是时间重叠。
Java:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | public boolean canAttendMeetings(Interval[] intervals) { Arrays.sort(intervals, new Comparator<Interval>(){ public int compare(Interval a, Interval b){ return a.start-b.start; } }); for ( int i= 0 ; i<intervals.length- 1 ; i++){ if (intervals[i].end>intervals[i+ 1 ].start){ return false ; } } return true ; } |
Python:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | # Time: O(nlogn) # Space: O(n) # # Definition for an interval. # class Interval: # def __init__(self, s=0, e=0): # self.start = s # self.end = e class Solution: # @param {Interval[]} intervals # @return {boolean} def canAttendMeetings( self , intervals): intervals.sort(key = lambda x: x.start) for i in xrange ( 1 , len (intervals)): if intervals[i].start < intervals[i - 1 ].end: return False return True |
C++:
1 2 3 4 5 6 7 8 9 10 11 12 | class Solution { public : bool canAttendMeetings(vector<Interval>& intervals) { sort(intervals.begin(), intervals.end(), []( const Interval &a, const Interval &b){ return a.start < b.start;}); for ( int i = 1; i < intervals.size(); ++i) { if (intervals[i].start < intervals[i - 1].end) { return false ; } } return true ; } }; |
类似题目:
[LeetCode] 253. Meeting Rooms II 会议室 II
All LeetCode Questions List 题目汇总
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步