欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

leetcode253——Meeting Rooms II

程序员文章站 2022-06-02 22:45:53
...

参考地址:253. Meeting Rooms II
题目要求:
leetcode253——Meeting Rooms II
分析:
我没有开leetcode会员,在人家的博客上看到这道题目的,不知道是在哪里看到过这道题目,反正之前肯定是见过的。

  1. 在这里,我们先将所有的左闭区间和右闭区间都重新取出来进行排序,排序方法可以重写一个sort方法,也可以将每个值取出,然后进行排序;
  2. 将开始时间标记为1,结束时间标记为-1;
  3. 再从左到右遍历,将它们标记的值相加,取最大值即可。

具体代码如下:

public int minMeetingRooms(Interval[] intervals) {
    int[] starts = new int[intervals.length];
    int[] ends = new int[intervals.length];
    for (int i = 0; i < starts.length; i++) {
        starts[i] = intervals[i].start;
        ends[i] = intervals[i].end;
    }
    
    Arrays.sort(starts);
    Arrays.sort(ends);
    
    int count = 0;
    int result = 0;
    for (int i = 0, j = 0; i < starts.length;) {
        if (starts[i] < ends[j]) {
            count++;
            i++;
            result = Math.max(result, count);
        } else {
            j++;
            count--;
        }
    }
       return result;
}