java: add «2054. Two Best Non-Overlapping Events»

URL:	https://leetcode.com/problems/two-best-non-overlapping-events/
Signed-off-by: Matej Focko <me@mfocko.xyz>
This commit is contained in:
Matej Focko 2024-12-08 22:39:25 +01:00
parent b4a300bec2
commit a1dc25b5e5
Signed by: mfocko
SSH key fingerprint: SHA256:icm0fIOSJUpy5+1x23sfr+hLtF9UhY8VpMC7H4WFJP8

View file

@ -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<Event>();
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;
}
}