We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
1 parent c58974c commit d234e83Copy full SHA for d234e83
2054-two-best-non-overlapping-events.js
@@ -0,0 +1,30 @@
1
+
2
+/**
3
+ * @param {number[][]} events
4
+ * @return {number}
5
+ */
6
+const maxTwoEvents = function(events) {
7
+ const n = events.length
8
+ events.sort((a, b) => a[0] - b[0])
9
+ const dp = Array.from({ length: n }, () => Array(3).fill(-1))
10
11
+ return dfs(0, 0)
12
13
+ function dfs(idx, cnt) {
14
+ if(cnt === 2 || idx >= n) return 0
15
+ if(dp[idx][cnt] === -1) {
16
+ let end = events[idx][1]
17
+ let lo = idx + 1, hi = n - 1;
18
+ while (lo < hi) {
19
+ const mid = lo + ((hi - lo) >> 1);
20
+ if (events[mid][0] <= end) lo = mid + 1
21
+ else hi = mid;
22
+ }
23
+ const include = events[idx][2] + (lo < n && events[lo][0] > end ? dfs(lo, cnt + 1) : 0);
24
+ const exclude = dfs(idx + 1, cnt);
25
+ dp[idx][cnt] = Math.max(include, exclude);
26
27
28
+ return dp[idx][cnt]
29
30
+};
0 commit comments