729. My Calendar I

这是TreeMap的典型应用。
这题的坑在于,用floor或都用ceiling取出来的 等于边界值的。
如果取出来的start和给定的end相等,则会造成麻烦。这种情部不能直接判断可以,而是要看他的上一个。
所以简单的做法是以end -1为边界,找start <= end -1的值。

class MyCalendar {
    TreeMap treeMap;
    public MyCalendar() {
        treeMap = new TreeMap<>();
    }
    
    public boolean book(int start, int end) {
        Integer lower = treeMap.floorKey(end - 1);
        Integer upper = treeMap.ceilingKey(start);
        if (lower != null && treeMap.get(lower) > start) return false;
        if (upper != null && upper < end) return false;
        treeMap.put(start, end);
        return true;
    }
}

你可能感兴趣的:(729. My Calendar I)