代码随想录——合并区间(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相互转换理解。

相关推荐
码农开荒路6 分钟前
Redis底层数据结构之字典(Dict)
java·数据结构·数据库·redis
异常君12 分钟前
Java PriorityQueue 源码剖析:二叉堆的实现原理与应用
java·面试
aningxiaoxixi17 分钟前
JAVA之 Lambda
java·开发语言
xphjj31 分钟前
树形数据模糊搜索
前端·javascript·算法
只在空想家32 分钟前
Servlet 体系结构
java·后端·servlet
ApiHug33 分钟前
ApiHug 1.3.9 支持 Spring 3.5.0 + Plugin 0.7.4 内置小插件升级!儿童节快乐!!!
java·后端·spring·api·apihug·apismart
北京_宏哥35 分钟前
🔥《刚刚问世》系列初窥篇-Java+Playwright自动化测试-17- 如何优雅地切换浏览器多窗口(详细教程)
java·前端·浏览器
异常君35 分钟前
深入理解 HashMap 的 get 方法工作原理
java·面试
异常君42 分钟前
JVM 新生代垃圾回收:避免全堆扫描的核心技术
java·jvm
用户05956611920944 分钟前
校招 java 基础面试题目及解析
java·面试