力扣hot100题解:合并区间

题目描述:

解题思路:

首先,我们对 intervals 数组按区间的起始位置进行排序。排序后,区间的开始位置会按照从小到大的顺序排列。这是因为,区间的合并操作需要按顺序进行,所以首先要确保每个区间的起始位置从小到大排列。

之后我们就可以遍历整个2维数组,不难发现,如果两个区间可以合并,那么第二个子数组的起点值一定小于第一个数组的终点,至于合并区间的终点,自然是第一个子数组和第二个子数组的终点的最大值。

不断遍历数组即可求出所有的子区间。

代码:

java 复制代码
class Solution {
    public int[][] merge(int[][] intervals) {
        Arrays.sort(intervals,(p,q)->p[0]-q[0]);
        List<int[]> ans=new ArrayList<>();
        for(int[] p:intervals){
            int m=ans.size();
            if(m>0&&p[0]<=ans.get(m-1)[1]){
                ans.get(m-1)[1]=Math.max(p[1],ans.get(m-1)[1]);
            }else{
                ans.add(p);
            }
        }
        return ans.toArray(new int[ans.size()][2]);
    }
}
相关推荐
leo_messi944 分钟前
面试知识点梳理及相关面试题(十六)-- 分布式设计
分布式·面试·职场和发展
土司大王4 分钟前
LeetCode hot100——实现 Trie (前缀树)
java·算法·leetcode
水龙吟啸9 分钟前
华为研发岗AI方向9.9机考题复盘&分析
人工智能·python·算法·华为
小七在进步11 分钟前
类和对象(一)
java·数据结构·算法
Y_Bk12 分钟前
2026 ICPC EC网络预选赛第一场
算法
CarIise18 分钟前
C语言字符串基础:从char数组到双指针反转算法
算法
佳児素花痴╮20 分钟前
C++速通2
开发语言·c++·算法
麻瓜code1 小时前
【LeetCode】相交链表:双指针法,一次遍历找到交点
算法·leetcode·链表
zander2581 小时前
LeetCode 5. 最长回文子串
算法
hanlin032 小时前
刷题笔记:力扣第84题-柱状图中最大的矩形
笔记·算法·leetcode