252. 会议室(Meeting Rooms)

频次 ★★★ · 难度 🟢 · 高频:字节

题目

区间数组 [start, end],判断能否参加所有会议(区间是否互不重叠)。

思路

排序 + 邻接比较:按 start 排序,遍历检查每个区间的 start 是否 ≥ 上一区间的 end。

代码

public boolean canAttendMeetings(int[][] intervals) {
    Arrays.sort(intervals, (a, b) -> a[0] - b[0]);
    for (int i = 1; i < intervals.length; i++) {
        if (intervals[i][0] < intervals[i - 1][1]) return false;
    }
    return true;
}

复杂度

  • 时间:O(n log n)
  • 空间:O(1)

边界条件

  • 0/1 个会议:true

变式

易错点

  • 比较条件 intervals[i][0] < intervals[i-1][1],不是 <=(边界相接不算冲突)

面试追问

  • 252 和 253 的关系? 252 判能否(布尔值),253 算最少数量(数值)。一个排序 + 遍历,一个排序 + 扫描线

关联题