本质是要求:所有的时刻,正在开会的会议数的最大值
开始没有思路,后来讨论区提到了,这其实就像上下车,一旦开始开会,那么就上车了,一旦会议结束,就下车了,要求的是车上人数的最大值
做法是维护开始开会时间,结束开会时间两个list,排序,然后用两个指针分别遍历,如果开始的时间较大,那么车上人数++,否则,则是人数--
取最大值
因为结束会议的时间总是大于(等于)开始会议的时间,所以不会出现ep遍历完了,sp还没遍历完的情况(先取小的嘛,肯定是sp先完)
import java.util.ArrayList;
import java.util.Collections;
class Solution {
public int minMeetingRooms(int[][] intervals) {
ArrayList<Integer> startTime=new ArrayList<>();
ArrayList<Integer> endTime=new ArrayList<>();
for(int[] time:intervals){
startTime.add(time[0]);
endTime.add(time[1]);
}
Collections.sort(startTime);
Collections.sort(endTime);
int sp=0,ep=0;
int sLen=startTime.size();
int eLen=endTime.size();
int cur=0;
int max=0;
while(sp<sLen&&ep<eLen){
if(startTime.get(sp)<endTime.get(ep)){
cur+
LC 253:会议室 II问题解法

该博客探讨了一个问题:如何确保在所有时间段内,会议的最大并发数。作者通过类比上下车过程,提出将会议开始和结束时间排序,并使用双指针遍历的方法来跟踪并更新当前进行中的会议数量,从而找出并发数的最大值。这种方法确保了在遍历过程中始终考虑了当前可用的会议室资源。
最低0.47元/天 解锁文章
3205

被折叠的 条评论
为什么被折叠?



