代码随想录——合并区间(Leetcode hot14)

题目链接

思路: 合并区间分为两种情况:

  • 前一个数组右边界 >= 后一个数组左边界 eg:[1,3],[2,6] ===> 合并为[1,6]
  • 前一个数组右边界 >= 后一个数组右边界 eg:[1,6],[2,4] ===> 合并为[1,6]
java 复制代码
class Solution {
    public int[][] merge(int[][] intervals) {
        if(intervals.length <= 1){
            return intervals;
        }
        Arrays.sort(intervals, (a, b) -> a[0] - b[0]);
        List<int[]> list = new ArrayList<>();
        for(int i = 1; i < intervals.length; i++){
            boolean change = false;
            if(intervals[i - 1][1] >= intervals[i][0]){
                change = true;
                intervals[i][0] = intervals[i - 1][0];
            }
            if(intervals[i - 1][1] >= intervals[i][1]){
                change = true;
                intervals[i][0] = intervals[i - 1][0];
                intervals[i][1] = intervals[i - 1][1];
            }
            if(change == false){
                 list.add(intervals[i - 1]);
            }
        }
        list.add(intervals[intervals.length - 1]);
         return list.toArray(new int[list.size()][]);
    }
}

总结:

这道题目情况划分比较简单,代码思路比较清晰,主要难点是对二维数组操作不熟练,通过这道题目可以加深一下对二维数组和ArrayList相互转换理解。

相关推荐
Sam_Deep_Thinking15 小时前
为什么选微服务而不是动态扩容单体
java·jvm·微服务
hele_two15 小时前
SDL2高效画实心圆的算法(一)
c++·算法·图形渲染
cheems952715 小时前
[算法手记] 动态规划,二叉树计数问题
算法·动态规划
焦糖玛奇朵婷15 小时前
回收小程序开发案例分享
java·开发语言
成旭先生15 小时前
【2026年可用】企业信息查询API接口
java·大数据·模糊查询·企业信息
l软件定制开发工作室15 小时前
Spring开发系列教程(35)——使用Actuator
java·后端·spring
贫民窟的勇敢爷们15 小时前
Scikit-learn算法:从入门到精通的机器学习工具箱
算法·机器学习·scikit-learn
Liangwei Lin16 小时前
LeetCode 155. 最小栈
java·javascript·算法
洛水水16 小时前
【数据结构】红黑树详解
数据结构·红黑树
炸膛坦客16 小时前
嵌入式 - 数据结构与算法:(1-9)数据结构 - 队列(Queue)
c语言·数据结构