⬆︎
×

[LC] 0729 My Calendar I

Java

import java.util.TreeMap;

/**
 * <a href="https://leetcode.com/problems/my-calendar-i/">My Calendar I</a>
 * 设计;线段树;数组;二分查找;有序集合
 */
class MyCalendar {
    private final TreeMap<Integer, Integer> booked;   // <endTime, startTime> 根据结束时间排序

    public MyCalendar() {
        this.booked = new TreeMap<>();
    }

    public boolean book(int startTime, int endTime) {
        var e = booked.higherEntry(startTime);
        if (e != null && e.getValue() < endTime) {
            return false;
        }
        booked.put(endTime, startTime);
        return true;
    }
}

//class MyCalendar {
//    List<int[]> booked;
//
//    public MyCalendar() {
//        this.booked = new ArrayList<>();
//    }
//
//    public boolean book(int startTime, int endTime) {
//        for (int[] interval : booked) {
//            int l = interval[0], r = interval[1];
//            if (l < endTime && startTime < r) {
//                return false;
//            }
//        }
//        booked.add(new int[]{startTime, endTime});
//        return true;
//    }
//}

发表评论