【扫描线】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;
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了