package com.fishercoder.solutions;

import java.util.ArrayList;
import java.util.List;
import java.util.TreeMap;

public class _729 {
    public static class Solution1 {
        /**
         * credit: https://discuss.leetcode.com/topic/111205/java-8-liner-treemap
         */
        public static class MyCalendar {
            TreeMap<Integer, Integer> calendar;

            public MyCalendar() {
                calendar = new TreeMap<>();
            }

            public boolean book(int start, int end) {
                Integer floorKey = calendar.floorKey(start);
                if (floorKey != null && calendar.get(floorKey) > start) {
                    return false;
                }
                Integer ceilingKey = calendar.ceilingKey(start);
                if (ceilingKey != null && ceilingKey < end) {
                    return false;
                }
                calendar.put(start, end);
                return true;
            }
        }
    }

    public static class Solution2 {
        public class MyCalendar {
            List<int[]> calendar;

            MyCalendar() {
                calendar = new ArrayList();
            }

            public boolean book(int start, int end) {
                for (int i = 0; i < calendar.size(); i++) {
                    if (calendar.get(i)[0] < end && start < calendar.get(i)[1]) {
                        return false;
                    }
                }
                calendar.add(new int[]{start, end});
                return true;
            }
        }
    }
}

@@ -1247,40 +1247,27 @@
 (int
- i = 0; i %3C calendar.size(); i++
+%5B%5D event : calendar
 ) %7B%0A
@@ -1290,31 +1290,21 @@
     if (
-calendar.get(i)
+event
 %5B0%5D %3C en
@@ -1320,23 +1320,13 @@
 t %3C 
-calendar.get(i)
+event
 %5B1%5D)

refactor 729