【扫描线】LeetCode 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;
}
}