56. 合并区间(leetcode)

https://leetcode.cn/problems/merge-intervals/description/

经典题合并区间

class Solution {
    public int[][] merge(int[][] intervals) {
        Arrays.sort(intervals,(a,b) -> Integer.compare(a[0],b[0]));
        // 区间合并经典题
        // 思路是先加入第一个区间,此后遍历区间,从res的末尾取,若发生重叠则进行合并
        // 合并的关键是更新区间端点,为两个重叠区间的最右点
        List<int[]> res = new ArrayList<>();
        res.add(intervals[0]);
        int count=0;
        if(intervals.length==1)return intervals;
        for(int i=1;i<intervals.length;i++)
        {
            // 发生重叠
            if(res.getLast()[1] >= intervals[i][0] )
            {
                int start = res.getLast()[0];
                int end = Math.max(intervals[i][1], res.getLast()[1]);
                // 更新区间
                res.removeLast();
                res.add(new int[]{start, end});
            }
            else
            {
                // 未发生重叠
                res.add(intervals[i]);
            }
        }
        return res.toArray(new int[res.size()][]);
    }
}

 

posted @   风乐  阅读(6)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· [翻译] 为什么 Tracebit 用 C# 开发
· 腾讯ima接入deepseek-r1,借用别人脑子用用成真了~
· Deepseek官网太卡,教你白嫖阿里云的Deepseek-R1满血版
· DeepSeek崛起:程序员“饭碗”被抢,还是职业进化新起点?
· RFID实践——.NET IoT程序读取高频RFID卡/标签
点击右上角即可分享
微信分享提示