My Calendar II

https://www.lintcode.com/problem/my-calendar-ii/description

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

class MyCalendarTwo {
    private List nodes = new ArrayList<>();
    private Comparator comparator = new Comparator() {
        @Override
        public int compare(Node o1, Node o2) {
            if (o1.position == o2.position) {
                return o1.isStart - o2.isStart;
            }
            return o1.position - o2.position;
        }
    };

    public MyCalendarTwo() {

    }

    public boolean book(int start, int end) {
        Node left = new Node(start, 1);
        Node right = new Node(end, 0);
        int cnt = 0;
        nodes.add(left);
        nodes.add(right);
        Collections.sort(nodes, comparator);
        for (int i = 0; i < nodes.size(); i++) {
            Node node = nodes.get(i);
            if (node.isStart == 1) {
                cnt++;
                if (cnt == 3) {
                    nodes.remove(left);
                    nodes.remove(right);
                    return false;
                }
            } else {
                cnt--;
            }

        }
        return true;
    }

    private class Node {
        int position;
        int isStart;

        public Node(int position, int isStart) {
            this.position = position;
            this.isStart = isStart;
        }
    }
}

/**
 * Your MyCalendarTwo object will be instantiated and called as such:
 * MyCalendarTwo obj = new MyCalendarTwo();
 * boolean param_1 = obj.book(start,end);
 */

你可能感兴趣的:(My Calendar II)