LeetCode 252. 会议室

题目描述

252. 会议室

思路分析

解法一:排序 + 扫描(推荐)

核心思路

  • 按照会议开始时间排序。
  • 依次检查相邻会议是否重叠。
  • 只要存在重叠,返回 false


复杂度分析

  • 时间复杂度:O(n log n),其中 n 表示会议数量。
  • 空间复杂度:O(1)(忽略排序开销)。
class Solution {
    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;
    }
}
func canAttendMeetings(intervals [][]int) bool {
    sort.Slice(intervals, func(i, j int) bool {
        return intervals[i][0] < intervals[j][0]
    })

    for i := 1; i < len(intervals); i++ {
        // 判断是否与前一个会议重叠
        if intervals[i][0] < intervals[i-1][1] {
            return false
        }
    }

    return true
}

相似题目

题目 难度 考察点
253. 会议室 II 中等 排序、堆
56. 合并区间 中等 区间合并
57. 插入区间 中等 区间合并
435. 无重叠区间 中等 贪心
452. 用最少数量的箭引爆气球 中等 贪心
本文作者:
本文链接: https://hgnulb.github.io/blog/2022/26002781
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处!