区间合并 面试题
/** * @typedef Range * @property {number} start - 区间的开始时间 * @property {number} end - 代表区间的结束时间 */
/** * @param {Range} first - 第一个区间 * @param {Range} second - 第二个区间 * @return {boolean} 是否重叠 */ function isOverlapped(first, second) { // TODO if(first.start<second.end&&first.end>second.start){ return true; }else{ return false; } } // test case const a = { start: 3, end: 5 }; const b = { start: 4, end: 6 }; const c = { start: 7, end: 8 }; isOverlapped(a, b); // true isOverlapped(b, c); // false
/** * @param {Range[]} intervals - 若干个区间 * @return {Range[]} 合并后的区间 */ function merge(intervals) { // TODO let temp = []; for(var i=0;i<intervals.length;i++;){ for(var j=i+1;j<intervals.length;j++;){ if(i.start<j.end&&i.end>j.start){ temp.push({ start:i.start, end:j.end }) }else{ temp.push(i); } } return temp; } } // test case const a = { start: 3, end: 5 }; const b = { start: 4, end: 6 }; const c = { start: 7, end: 8 }; merge([a, b, c]); // [{ start: 3, end: 6 }, { start: 7, end: 8 }]
时间比较紧,有好的方式大佬们贴出来哈;
一辈子很短,努力的做好两件事就好;第一件事是热爱生活,好好的去爱身边的人;第二件事是努力学习,在工作中取得不一样的成绩,实现自己的价值,而不是仅仅为了赚钱;