05/09/2018
Write a function to merge intervals.
Story:
Your company built an in-house calendar tool called HiCal. You want to add a feature to see the times in a day when everyone is available.
You receive the array of meetings with startTime, endTime and now you need to merge the intervals between meetings and show the end result.
Ex: Meetings Array : [{ startTime: 0, endTime: 1 }, { startTime: 3, endTime: 5 }, { startTime: 4, endTime: 8 }, { startTime: 10, endTime: 12 }, { startTime: 9, endTime: 10 }]
your function should return : [ { startTime: 0, endTime: 1 },
{ startTime: 3, endTime: 8 },
{ startTime: 9, endTime: 12 } ];
Answer :
var meetings = [{ startTime: 0, endTime: 1 }, { startTime: 3, endTime: 5 }, { startTime: 4, endTime: 8 }, { startTime: 10, endTime: 12 }, { startTime: 9, endTime: 10 }]
function merge_overlaping_intervals(arr) {
// if (arr.length a.startTime > b.startTime);
let result = [];
result.push(s[0]);
for (let i = 1; i < s.length; i++) {
let top = result[result.length - 1];
if (top.endTime < s[i].startTime) {
result.push(s[i]);
} else if (top.endTime < s[i].endTime) {
top.endTime = s[i].endTime;
}
}
return result;
}
console.log(merge_overlaping_intervals(meetings));