文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
合并区间
解题思路
prev 初始化为第一个区间,curr 为当前遍历到的区间, res 为结果数组。尝试合并 prev 和 curr,合并后更新到 prev,合并后的新区间还可能会和后面的区间重合,继续尝试合并新的 curr,更新给 prev,直到不能合并,将 prev 推入到 res。先合并遇到不重合再推入 prev,当考察完最后一个区间,遇不到不重合的区间,要单独把 prev 推入到 res。
代码实现
const merge = (intervals: number[][]): number[][] => {
let res: number[][] = [];
intervals.sort((a: number[], b: number[]) => a[0] - b[0]);
let prev: number[] = intervals[0];
for (let i = 1; i < intervals.length; ++i) {
let curr = intervals[i];
if (prev[1] >= curr[0]) {
prev[1] = Math.max(prev[1], curr[1]);
} else {
res.push(prev);
prev = curr;
}
}
res.push(prev);
return res;
};
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论