力扣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]);
    }
}
相关推荐
罗湖老棍子6 分钟前
【例 1】Sightseeing Trip(信息学奥赛一本通- P1494)(洛谷-P10927)
数据结构·算法·图论·最短路·floyd·最小环
文丑颜不良啊34 分钟前
LeetCode201~225题目解析
java·leetcode
stsdddd2 小时前
YOLO算法建筑工地安全帽目标检测数据集16881张:标注核对笔记
算法·yolo·目标检测
CV爱数码3 小时前
论文精读|Learned Primal-Dual:把原始–对偶算法展开成网络
图像处理·算法·计算机视觉·ct·重建·断层扫描
yuniko-n3 小时前
【算法】约瑟夫环问题
java·算法
l1t4 小时前
测试DuckDB v2.1.0-alpha49002的bignum乘法
数据库·sql·算法·duckdb
Nil2084 小时前
LeetCode 283移动零
数据结构·算法·leetcode
CQU_JIAKE4 小时前
10.18【A】
算法
学顶教育4 小时前
学顶教育:公务员面试常见问题!
面试·职场和发展
LMT流氓兔5 小时前
第五单元——第4课:给工具参数加校验
java·前端·算法·ai·langchain