本质是要求:所有的时刻,正在开会的会议数的最大值
开始没有思路,后来讨论区提到了,这其实就像上下车,一旦开始开会,那么就上车了,一旦会议结束,就下车了,要求的是车上人数的最大值
做法是维护开始开会时间,结束开会时间两个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();