Skip to content

Commit 5ede98e

Browse files
committed
Add week 13 solutions: insertInterval, mergeIntervals
1 parent be59740 commit 5ede98e

File tree

2 files changed

+61
-0
lines changed

2 files changed

+61
-0
lines changed

insert-interval/yolophg.js

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
// Time Complexity: O(n log n)
2+
// Space Complexity: O(n)
3+
4+
var insert = function (intervals, newInterval) {
5+
// append the newInterval to the intervals array
6+
intervals.push(newInterval);
7+
8+
// sort the intervals array by start time
9+
intervals.sort((a, b) => a[0] - b[0]);
10+
11+
// to store merged intervals
12+
let result = [];
13+
14+
// iterate through the sorted intervals array
15+
for (let i = 0; i < intervals.length; i++) {
16+
// if the result array is empty or the current interval does not overlap with the last interval
17+
if (result.length === 0 || result[result.length - 1][1] < intervals[i][0]) {
18+
result.push(intervals[i]); // Add the current interval to the result array
19+
} else {
20+
// if there is an overlap, merge the current interval with the last interval
21+
result[result.length - 1][1] = Math.max(
22+
result[result.length - 1][1],
23+
intervals[i][1]
24+
);
25+
}
26+
}
27+
28+
// return the final merged intervals
29+
return result;
30+
};

merge-intervals/yolophg.js

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
// Time Complexity: O(n log n)
2+
// Space Complexity: O(n)
3+
4+
var merge = function (intervals) {
5+
// sort the intervals by their start time
6+
intervals.sort((a, b) => a[0] - b[0]);
7+
8+
// to manage merged intervals
9+
let stack = [];
10+
11+
// push the first interval onto the stack
12+
stack.push(intervals[0]);
13+
14+
// iterate through the sorted intervals
15+
for (let i = 1; i < intervals.length; i++) {
16+
// get the top interval from the stack
17+
let top = stack[stack.length - 1];
18+
19+
// if the current interval overlaps with the top interval
20+
if (top[1] >= intervals[i][0]) {
21+
// merge the intervals by updating the end of the top interval
22+
top[1] = Math.max(top[1], intervals[i][1]);
23+
} else {
24+
// if there is no overlap, push the current interval onto the stack
25+
stack.push(intervals[i]);
26+
}
27+
}
28+
29+
// return the final merged intervals
30+
return stack;
31+
};

0 commit comments

Comments
 (0)