Skip to content

Commit ac07f40

Browse files
Jeehay28Jeehay28
authored andcommitted
Add non-overlapping-intervals solution in TS
1 parent e32220b commit ac07f40

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
// TC: O(n log n)
2+
// SC: O(1)
3+
function eraseOverlapIntervals(intervals: number[][]): number {
4+
intervals.sort((a, b) => a[1] - b[1]);
5+
// [1, 2], [2, 3], [1, 3], [3, 4]
6+
7+
let prevEnd = intervals[0][1];
8+
let removalCount = 0;
9+
10+
for (let i = 1; i < intervals.length; i++) {
11+
if (prevEnd > intervals[i][0]) {
12+
removalCount++;
13+
// skip current interval
14+
} else {
15+
prevEnd = intervals[i][1];
16+
}
17+
}
18+
19+
return removalCount;
20+
}
21+
22+
23+
// TC: O(n log n)
24+
// SC: O(1)
25+
// function eraseOverlapIntervals(intervals: number[][]): number {
26+
// intervals.sort((a, b) => a[0] - b[0]);
27+
28+
// let prev = intervals[0];
29+
// let cnt = 1;
30+
// let removalCount = 0;
31+
32+
// while (cnt < intervals.length) {
33+
// const current = intervals[cnt];
34+
35+
// if (prev[1] <= current[0]) {
36+
// prev = current;
37+
// } else {
38+
// prev = [Math.min(prev[0], current[0]), Math.min(prev[1], current[1])];
39+
// removalCount++;
40+
// }
41+
// cnt++;
42+
// }
43+
44+
// return removalCount;
45+
// }
46+

0 commit comments

Comments
 (0)