Menu
CoddyTech

Meeting Rooms

简单区间排序python iconjava iconcpp iconc iconjs icon+10

你会得到一个由两个数组表示的会议列表:会议 i 从 starts[i] 开始,到 ends[i] 结束。一个人想参加所有会议,因此不能有两场会议重叠。一场会议可以恰好在另一场会议结束时开始。如果这个人可以参加每场会议,就返回 true,否则返回 false。

函数

canAttendMeetings(starts: integer-array, ends: integer-array) → boolean
startsinteger-array
每次会议的开始时间
endsinteger-array
每场会议的结束时间,与其开始时间位于相同的索引处
返回值boolean
如果没有两场会议重叠,则为 true,否则为 false

约束条件

  • 1 ≤ starts.length == ends.length ≤ 5000
  • 0 ≤ starts[i] < ends[i] ≤ 106
  • 会议没有排序。两场会议可能完全相同。

示例

输入
starts = [9, 13, 10]ends = [10, 15, 12]
输出
true
解释
按时间顺序,会议分别是 9 点到 10 点、10 点到 12 点和 13 点到 15 点。第二场会议在第一场结束的那一刻开始,这是允许的,所以答案是 true。
challenge icon

进阶

如果会议是逐个预订的,怎样才能在不重新排序所有内容的情况下,用 O(log n) 检查每个新预订是否与日程冲突?

重置代码
def canAttendMeetings(starts, ends):
    # 在这里编写代码

测试 #1

测试 #2

参数

starts = [9, 13, 10]
ends = [10, 15, 12]

预期输出

true