729. 我的日程安排表

import java.util.TreeMap;

class MyCalendar {

    TreeMap<Integer, Integer> treeMap;

    public MyCalendar() {

        treeMap = new TreeMap();
    }

    public boolean book(int start, int end) {

        if (treeMap == null){
            treeMap.put(start, end);
        }

        /**
         * 使用TreeMap的ceilingKey()和floorKey()方法比较其他区间,ceilingKey(start)方法获得大于start的最小值,floorKey()方法获得小于start的最大值
         * 如果新加入的区间左边或者右边为空,那肯定能添加
         * 否则,和右边的第一个区间相比,end要小于其start;和左边的第一个区间相比,start要大于其end(使用get()方法根据键获取值)
         */
        if (treeMap.ceilingKey(start) != null && end > treeMap.ceilingKey(start)){
            return false;
        }
        else if (treeMap.floorKey(start) != null && start < treeMap.get(treeMap.floorKey(start))){
            return false;
        }
        else {

            treeMap.put(start, end);
            return true;
        }
    }
}

https://leetcode-cn.com/problems/my-calendar-i/

posted @ 2021-11-10 15:41  振袖秋枫问红叶  阅读(57)  评论(0)    收藏  举报