Skip to content

Commit 1b4c426

Browse files
committed
✨ [435] Non-overlapping Intervals
1 parent 33030a9 commit 1b4c426

File tree

4 files changed

+153
-16
lines changed

4 files changed

+153
-16
lines changed

435/my_solution.js

+99
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
/**
2+
* @param {number[][]} intervals
3+
* @return {number}
4+
*/
5+
// const eraseOverlapIntervals = (intervals) => {
6+
// let count = 0;
7+
// if (intervals.length <= 1) return count;
8+
//
9+
// intervals.sort((a, b) => a[0] - b[0]);
10+
//
11+
// let prevEnd = Number.NEGATIVE_INFINITY;
12+
// while (intervals.length > 0) {
13+
// let curr = intervals.shift();
14+
//
15+
// // if (curr[0] < prev[1] && prev[1] > curr[1]) {
16+
// // count++;
17+
// // prev = curr; // replace because THIS is can be removed.
18+
// // } else if (curr[0] < prev[1] && prev[1] <= curr[1]) {
19+
// // count++;
20+
// // // not replace bc im going to remove the current, so prev stays.
21+
// // } else {
22+
// // prev = curr;
23+
// // }
24+
//
25+
// if (curr[0] >= prevEnd) {
26+
// prevEnd = curr[0]; // replace because THIS is can be removed.
27+
// } else {
28+
// count++;
29+
// }
30+
// }
31+
//
32+
// return count;
33+
// }
34+
35+
/**
36+
* @param {number[][]} intervals
37+
* @return {number}
38+
*/
39+
const eraseOverlapIntervals = (intervals) => {
40+
let count = 0;
41+
// exit
42+
if (intervals.length <= 1) return count;
43+
44+
intervals.sort((a, b) => a[0] - b[0]);
45+
46+
console.log(intervals);
47+
// while intervals.length > 0
48+
let prev = intervals.shift();
49+
while (intervals.length > 0) {
50+
let curr = intervals.shift();
51+
52+
if (curr[0] < prev[1] && prev[1] > curr[1]) {
53+
count++;
54+
prev = curr;
55+
} else
56+
if (curr[0] < prev[1] && prev[1] <= curr[1]) {
57+
count++;
58+
} else {
59+
prev = curr;
60+
}
61+
62+
}
63+
64+
// if (curr[0] < prev[1] && prev[1] < curr[1]) count ++;
65+
return count;
66+
}
67+
68+
// /**
69+
// * @param {number[][]} intervals
70+
// * @return {number}
71+
// */
72+
// const eraseOverlapIntervals = (intervals) => {
73+
// let count = 0;
74+
// // exit
75+
// if (intervals.length <= 1) return count;
76+
//
77+
// intervals.sort((a, b) => a[0] - b[0]);
78+
//
79+
// console.log(intervals);
80+
// // while intervals.length > 0
81+
// let prev = intervals.shift();
82+
// while (intervals.length > 0) {
83+
// let curr = intervals.shift();
84+
//
85+
// if (curr[0] < prev[1] && prev[1] > curr[1]) {
86+
// count++;
87+
// prev = curr;
88+
// } else
89+
// if (curr[0] < prev[1] && prev[1] <= curr[1]) {
90+
// count++;
91+
// } else {
92+
// prev = curr;
93+
// }
94+
//
95+
// }
96+
//
97+
// // if (curr[0] < prev[1] && prev[1] < curr[1]) count ++;
98+
// return count;
99+
// }

435/solution.js

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
/**
2+
* @param {number[][]} intervals
3+
* @return {number}
4+
*/
5+
const eraseOverlapIntervals = (intervals) => {
6+
let count = 0;
7+
if (intervals.length <= 1) return count;
8+
9+
intervals.sort((a, b) => a[0] - b[0]);
10+
11+
let prevEnd = Number.NEGATIVE_INFINITY;
12+
13+
while (intervals.length > 0) {
14+
let [currStart, currEnd] = intervals.shift();
15+
16+
if (currStart < prevEnd) {
17+
count++;
18+
prevEnd = Math.min(prevEnd, currEnd);
19+
} else {
20+
prevEnd = currEnd;
21+
}
22+
}
23+
24+
return count;
25+
}

README.md

+7-4
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@
5555
- [338. Counting Bits](./338/)
5656
- [394. Decode String](./394/)
5757
- [424. Longest Repeating Character Replacement](./424/)
58+
- [435. Non-overlapping Intervals](./435/)
5859
- [647. Palindromic Substrings](./647/)
5960
- [771. Jewels and Stones](./771/)
6061
- [997. Find the Town Judge](./997/)
@@ -95,17 +96,19 @@ To run the js solution:
9596
node ./.../solution.js
9697
```
9798

99+
<!--
100+
TODO: Rmb to dd to TOC!
101+
-->
102+
98103
Batch create:
99104
<!--
100105
NOTE: JS IS HERE
101106
-->
102107
```ssh
103-
chapter=1512 && mkdir ./$chapter && touch ./$chapter/my_solution.js && touch ./$chapter/solution.js && alias x="node ./$chapter/my_solution.js"
108+
chapter=435 && mkdir ./$chapter && touch ./$chapter/my_solution.js && touch ./$chapter/solution.js && alias x="node ./$chapter/my_solution.js"
104109
```
105110
> then you can use `x` for quick debug.
106111
107112
---
108113

109-
<!--
110-
TODO: Rmb to dd to TOC!
111-
-->
114+
Author: Jing Hui PANG - [Email](mailto:[email protected]) | [GitHub](https://github.com/enkr1) | [LeetCode](https://leetcode.com/enkr1)

test.js

+22-12
Original file line numberDiff line numberDiff line change
@@ -32,16 +32,26 @@
3232
//
3333
// console.log(y); // Output: [1, 2, 4, 3]
3434

35-
console.log(2 % 2 == 0);
36-
console.log(3 % 2 == 0);
37-
console.log(4 % 2 == 0);
35+
// console.log(2 % 2 == 0);
36+
// console.log(3 % 2 == 0);
37+
// console.log(4 % 2 == 0);
38+
//
39+
// const fizzBuzz = (n) => {
40+
// let result = "";
41+
// if (n % 3 === 0) result = "Fizz"
42+
// if (n % 5 === 0) result += "Buzz"
43+
// return result;
44+
// }
45+
// let fb = fizzBuzz(15)
46+
// console.log("fb")
47+
// console.log(fb)
48+
//
49+
//
50+
51+
let o = Array.from({ length: 3 }, () => []);
52+
o[2] = [1, 3, 4]
53+
console.log(o)
3854

39-
const fizzBuzz = (n) => {
40-
let result = "";
41-
if (n % 3 === 0) result = "Fizz"
42-
if (n % 5 === 0) result += "Buzz"
43-
return result;
44-
}
45-
let fb = fizzBuzz(15)
46-
console.log("fb")
47-
console.log(fb)
55+
let x = Array(3).fill([]);
56+
x[1].push(2)
57+
console.log(x)

0 commit comments

Comments
 (0)