Leetcode 56.合并区间 JavaScript (Day 6)

javascript 复制代码
var merge = function(intervals) {
        let ans=[];
        intervals.sort((a,b)=>a[0]-b[0]);
        for(const p of intervals){
            const m=ans.length
            if(m&&p[0]<=ans[m-1][1]){
                ans[m-1][1]=Math.max(ans[m-1][1],p[1]);
            }else{
                ans.push(p);
            }
        }
        return ans;
    
};

算法核心:贪心+排序 ,为了方便合并,先将左端点从小到大排序,向右遍历取出子数组,然后用一个新数组ans来存储结果,如果ans数组为空或者要取出来的一个子数组不能合并到ans中已有的数组中的时候,就直接将这个取出子数组push进ans数组,反之,将其与ans中最后一个(因为已经排序了)子数组合并即可,合并一开始我想的是"真"合并用...slice来操作,其实这里的合并说简单点就是更新右端点,看右端点是不变,还是更新为放进来的子数组的右端点,这里用max来比较即可

相关推荐
历程里程碑2 小时前
滑动窗口秒解LeetCode字母异位词
java·c语言·开发语言·数据结构·c++·算法·leetcode
ghie90902 小时前
使用直接节点积分法进行无网格法2D悬臂梁计算
算法
Helibo442 小时前
2025年12月gesp3级题解
数据结构·c++·算法
p&f°2 小时前
垃圾回收两种算法
java·jvm·算法
点云SLAM2 小时前
点云配准算法之- GICP算法点云配准概率模型推导和最大似然求解(MLE)
算法·机器人·slam·点云配准·最大似然估计·点云数据处理·gicp算法
曹轲恒3 小时前
双栈实现队列/双队列实现栈
算法
AI科技星3 小时前
张祥前统一场论电荷定义方程分析报告
开发语言·经验分享·线性代数·算法·数学建模
Swift社区3 小时前
LeetCode 460 - LFU 缓存
算法·leetcode·缓存
whltaoin3 小时前
25年12月26日-福州某科技公司一面面试原题
java·linux·docker·面试·职场和发展·k8s·springboot