【扫描线】LeetCode 253. 会议室 II

题目链接

253. 会议室 II

思路

这道题非常类似于坐公交车上下车。

样例中 intervals = [[0,30],[5,10],[15,20]] 可以这么拆解

上车:[0, +1], [5, +1], [15, +1]
下车:[10, -1], [20, -1], [30, -1]

我们可以在开始和结束时间打上标记,最后再对标记求和。在对标记求和的过程中其实是在实时统计公交车人数,取最大值即可。

代码

class Solution {
    public int minMeetingRooms(int[][] intervals) {
        int[] population = new int[1000000 + 3];
        for(int i = 0; i < intervals.length; i++){
            population[intervals[i][0]]++;
            population[intervals[i][1]]--;
        }

        int result = 0;
        int sum = 0;
        for(int num : population){
            sum += num;
            result = Math.max(result, sum);
        }

        return result;
    }
}
posted @ 2023-02-28 16:30  Frodo1124  阅读(120)  评论(0编辑  收藏  举报