力扣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]);
    }
}
相关推荐
昵称小白3 小时前
复杂度分析方法
算法
科研前沿3 小时前
2026 数字孪生前沿科技:全景迭代报告 —— 镜像视界生成式孪生(Generative DT)技术白皮书
大数据·人工智能·科技·算法·音视频·空间计算
学涯乐码堂主5 小时前
有趣的“打擂台算法”
c++·算法·青少年编程·gesp
Tutankaaa6 小时前
知识竞赛题库设计全攻略
人工智能·算法
WolfGang0073216 小时前
代码随想录算法训练营 Day50 | 图论 part08
数据结构·算法·图论
aini_lovee8 小时前
多目标粒子群优化(MOPSO)双适应度函数MATLAB实现
人工智能·算法·matlab
yong99908 小时前
图像融合与拼接:完整MATLAB工具箱
算法·计算机视觉·matlab
春风不语5058 小时前
深入理解主成分分析(PCA)
算法
apollowing8 小时前
启发式算法WebApp实验室:从搜索策略到群体智能的能力进阶(二十二)
算法·启发式算法·web app
晚枫歌F8 小时前
最小堆定时器
数据结构·算法