题目:判断是否可以参加所有会议(判断时间区间是否有重合)
思路:按开始时间/结束时间排序 + 是否重叠判断
- 不管是按开始时间排序还是按结束时间排序,判断区间是否重叠的逻辑都相同:如果后一个区间的
start小于前一个区间的end,则表明区间有重叠。
from typing import List
class Solution:
def canAttendMeetings(self, intervals: List[List[int]]) -> bool:
# jy: 以下排序方式等价 (均为按开始时间排序)
'''
# intervals.sort()
intervals.sort(key=lambda x: x[0])
# intervals = sorted(intervals, key=lambda x: x[0])
'''
# jy: 以下排序方式等价 (均为按结束时间排序)
# intervals = sorted(intervals, key=lambda x: x[1])
intervals.sort(key=lambda x: x[1])
prev_interval = intervals[0]
for i in range(1, len(intervals)):
interval = intervals[i]
start = interval[0]
end = interval[1]
if start < prev_interval[1]:
return False
prev_interval = interval
return True
intervals = [[7, 10], [2, 4]]
# jy: true
res = Solution().canAttendMeetings(intervals)
print(res)
intervals = [[0, 30], [5, 10], [15, 20]]
# jy: false
res = Solution().canAttendMeetings(intervals)
print(res)
532

被折叠的 条评论
为什么被折叠?



