|
| 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