Skip to content

Commit 7f70f33

Browse files
committed
array - splice O(n) O(n) + sort O(nlogn) O(n)
1 parent 2e1cda2 commit 7f70f33

File tree

1 file changed

+61
-0
lines changed

1 file changed

+61
-0
lines changed

leetcode-57-insertInterval.js

+61
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
// p: array, array;
2+
// r: array;
3+
// [[1,2],[3,5],[6,7],[8,10],[12,16]]
4+
// [4,8]
5+
// => [[1,2],[3,10],[12,16]]
6+
7+
// interv [[1,2],[3,5],[4,8],[6,7],[8,10],[12,16]]
8+
// result [[1,2],[3,10],[12,16]]
9+
var insert = function (intervals, newInterval) {
10+
// O(n) O(n) with splice()
11+
let index = 0;
12+
for (let i = 0; i < intervals.length; i++) {
13+
if (intervals[i][0] <= newInterval[0]) index = i + 1;
14+
}
15+
intervals.splice(index, 0, newInterval);
16+
// console.log(index, intervals);
17+
18+
// O(nlogn) O(n) with sort()
19+
// intervals.push(newInterval);
20+
// intervals.sort((a, b)=> a[0] - b[0]);
21+
const result = [intervals[0]];
22+
for (let i = 1; i < intervals.length; i++) {
23+
const lastI = result.length - 1;
24+
if (result[lastI][1] < intervals[i][0]) {
25+
result.push(intervals[i]);
26+
} else {
27+
if (result[lastI][1] < intervals[i][1]) {
28+
result[lastI][1] = intervals[i][1];
29+
}
30+
}
31+
}
32+
33+
return result;
34+
};
35+
36+
// 2 pointers
37+
38+
// var insert = function(intervals, newInterval) {
39+
// let start = newInterval[0];
40+
// let end = newInterval[1];
41+
// let res = [];
42+
// let inserted = false;
43+
// for (let i = 0; i < intervals.length; i++) {
44+
// if (intervals[i][1] < start) {
45+
// res.push(intervals[i]);
46+
// } else if (intervals[i][0] > end) {
47+
// if (!inserted) {
48+
// res.push([start, end]);
49+
// inserted = true;
50+
// }
51+
// res.push(intervals[i]);
52+
// } else {
53+
// start = Math.min(start, intervals[i][0]);
54+
// end = Math.max(end, intervals[i][1]);
55+
// }
56+
// }
57+
// if (!inserted) {
58+
// res.push([start, end]);
59+
// }
60+
// return res;
61+
// };

0 commit comments

Comments
 (0)