diff --git a/java/two-best-non-overlapping-events.java b/java/two-best-non-overlapping-events.java new file mode 100644 index 0000000..6a9dcf1 --- /dev/null +++ b/java/two-best-non-overlapping-events.java @@ -0,0 +1,29 @@ +class Solution { + private static final int END = 0; + private static final int START = 1; + + private record Event(int time, int type, int payoff) {} + + public int maxTwoEvents(int[][] events) { + var times = new ArrayList(); + for (var event : events) { + times.add(new Event(event[0], START, event[2])); + times.add(new Event(event[1] + 1, END, event[2])); + } + times.sort(Comparator.comparing(Event::time).thenComparing(Event::type)); + + int answer = 0, maxPayoff = 0; + for (var time : times) { + switch (time.type) { + case START: + answer = Math.max(answer, time.payoff + maxPayoff); + break; + case END: + maxPayoff = Math.max(maxPayoff, time.payoff); + break; + } + } + + return answer; + } +}