253. Meeting Rooms II

Given an array of meeting time intervals consisting of start and end times[[s1,e1],[s2,e2],...](si< ei), find the minimum number of conference rooms required.

For example,
Given[[0, 30],[5, 10],[15, 20]],
return2.

tag: interval

/**
 * Definition for an interval.
 * public class Interval {
 *     int start;
 *     int end;
 *     Interval() { start = 0; end = 0; }
 *     Interval(int s, int e) { start = s; end = e; }
 * }
 */
class Solution {
    private class Point{
        int val;
        boolean isStart;

        public Point(int val, boolean isStart){
            this.val = val;
            this.isStart = isStart;
        }
    }

    public int minMeetingRooms(Interval[] intervals) {
        if (intervals == null || intervals.length == 0) return 0;
        if (intervals.length == 1) return 1;

        List<Point> points = new ArrayList<>();
        for (Interval itv : intervals){
            points.add(new Point(itv.start, true));
            points.add(new Point(itv.end, false));
        }    

        Collections.sort(points, new Comparator<Point>(){

            public int compare(Point a, Point b){
                if (a.val == b.val){
                    return a.isStart ? 1 : -1;
                }
                else{
                    return a.val - b.val;
                }    
            }

        });

        int count = 0, ans = 0;

        for (Point p : points){
            if (p.isStart){
                count++;
            }
            else{
                count--;
            }

            ans = Math.max(ans, count);
        }

        return ans;
    }
}

results for ""

    No results matching ""