Skip to content

Commit 148dbae

Browse files
committed
✅ [57] gpt
1 parent bb198e2 commit 148dbae

File tree

3 files changed

+70
-34
lines changed

3 files changed

+70
-34
lines changed

57/gpt_solution.js

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
function insert(intervals, newInterval) {
2+
const merged = [];
3+
let i = 0;
4+
5+
// Add all intervals before the new interval that don't overlap
6+
while (i < intervals.length && intervals[i][1] < newInterval[0]) {
7+
merged.push(intervals[i]);
8+
i++;
9+
}
10+
11+
// Merge intervals that overlap with the new interval
12+
while (i < intervals.length && intervals[i][0] <= newInterval[1]) {
13+
newInterval[0] = Math.min(intervals[i][0], newInterval[0]);
14+
newInterval[1] = Math.max(intervals[i][1], newInterval[1]);
15+
i++;
16+
}
17+
18+
// Add the merged new interval
19+
merged.push(newInterval);
20+
21+
// Add remaining intervals
22+
while (i < intervals.length) {
23+
merged.push(intervals[i]);
24+
i++;
25+
}
26+
27+
return merged;
28+
}
29+
30+
let x = insert([[1, 2], [3, 5], [6, 7], [8, 10], [12, 16]], [4, 8]); // [ [ 1, 2 ], [ 3, 10 ], [ 12, 16 ] ]

57/my_solution.js

+28-25
Original file line numberDiff line numberDiff line change
@@ -4,43 +4,46 @@
44
* @return {number[][]}
55
*/
66
const insert = (intervals, newInterval) => {
7+
// NOTE: my solution is shit, refer to chat gpt's
78
if (0 === intervals.length) return [newInterval];
8-
let deleteList = [], replace = []; // [3, 10] // use [1] when replace is not empty
9+
let mergeList = [];
910

1011
for (let i = 0; i < intervals.length; i++) {
11-
if (0 === newInterval.length) break;
12-
if (intervals[i][0] <= newInterval[0] && newInterval[0] < intervals[i][1]) {
13-
console.log(`${newInterval[0]} is within ${intervals[i][0]} and ${intervals[i][1]}`)
14-
// let curr = newInterval.shift();
15-
deleteList.push(i);
16-
17-
// use [1] when replace is not empty
18-
replace.push((replace.length > 0) ? intervals[i][1] : intervals[i][0]);
19-
newInterval.shift();
20-
} else {
21-
console.log(`${newInterval[0]} is NOT within ${intervals[i][0]} and ${intervals[i][1]}`)
22-
if (newInterval[0] < intervals[i][0]) {
23-
deleteList.push(i);
24-
replace.push(newInterval.shift());
25-
}
12+
// if (0 === newInterval.length) break;
13+
if (intervals[i][1] < newInterval[0]) { // smaller and not overlapped
14+
console.log(`smaller & not overlapped - ${intervals[i][1]} < ${newInterval[0]} - ${intervals[i]} x ${newInterval}`)
15+
mergeList.push(intervals[i])
16+
17+
} else if (intervals[i][0] <= newInterval[1]) { // 1 <= 5
18+
// between here
19+
console.log(`overlapped - ${intervals[i][0]} <= ${newInterval[1]} - ${intervals[i]} x ${newInterval}`)
20+
newInterval[0] = Math.min(intervals[i][0], newInterval[0]);
21+
newInterval[1] = Math.max(intervals[i][1], newInterval[1]);
22+
mergeList.push(newInterval)
23+
} else { // bigger and not overlapped
24+
console.log(`bigger & not overlapped - ${intervals[i]} - ${newInterval}`)
25+
mergeList.push(intervals[i])
2626
}
2727
}
2828

29-
console.log("deleteList")
30-
console.log(deleteList)
31-
console.log("replace")
32-
console.log(replace)
33-
console.log("intervals")
34-
console.log(intervals)
35-
intervals.splice(deleteList[0], deleteList[1] || 0, replace)
29+
console.log("mergeList")
30+
console.log(mergeList)
31+
32+
// console.log("deleteList")
33+
// console.log(deleteList)
34+
// console.log("replace")
35+
// console.log(replace)
36+
// console.log("intervals")
37+
// console.log(intervals)
38+
// intervals.splice(deleteList[0], deleteList[1] || 0, replace)
3639
return intervals;
3740
};
3841

3942

4043
// let x = insert([[1, 3], [6, 9]], [2, 5]); // [[1,5],[6,9]]
41-
// let x = insert([[1, 2], [3, 5], [6, 7], [8, 10], [12, 16]], [4, 8]); // [ [ 1, 2 ], [ 3, 10 ], [ 12, 16 ] ]
44+
let x = insert([[1, 2], [3, 5], [6, 7], [8, 10], [12, 16]], [4, 8]); // [ [ 1, 2 ], [ 3, 10 ], [ 12, 16 ] ]
4245
// let x = insert([], [5, 7]); // [5,7]
43-
let x = insert([[1, 5]], [2, 3]); // [1,5]
46+
// let x = insert([[1, 5]], [2, 3]); // [1,5]
4447

4548

4649
console.log('x')

57/solution.js

+12-9
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,21 @@
44
* @return {number[][]}
55
*/
66
const insert = (intervals, newInterval) => {
7-
let deleteList = [], replace = []; // [3, 10] // use [1] when replace is not empty
7+
if (0 === intervals.length) return [newInterval];
8+
let mergeList = [];
89

910
for (let i = 0; i < intervals.length; i++) {
10-
if (0 === newInterval.length) break;
11-
if (intervals[i][0] <= newInterval[0] && newInterval[0] < intervals[i][1]) {
12-
deleteList.push(i);
13-
14-
replace.push((replace.length > 0) ? intervals[i][1] : intervals[i][0]);
15-
newInterval.shift();
11+
if (intervals[i][1] < newInterval[0]) { // smaller and not overlapped
12+
mergeList.push(intervals[i])
13+
} else if (intervals[i][0] <= newInterval[1]) { // 1 <= 5
14+
newInterval[0] = Math.min(intervals[i][0], newInterval[0]);
15+
newInterval[1] = Math.max(intervals[i][1], newInterval[1]);
16+
mergeList.push(newInterval)
17+
} else { // bigger and not overlapped
18+
mergeList.push(intervals[i])
1619
}
1720
}
1821

19-
intervals.splice(deleteList[0], deleteList[1], replace)
20-
return intervals;
22+
return mergeList;
2123
};
24+

0 commit comments

Comments
 (0)