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

相关推荐
XiaoLeisj31 分钟前
【JavaEE初阶 — 多线程】单例模式 & 指令重排序问题
java·开发语言·java-ee
paopaokaka_luck32 分钟前
【360】基于springboot的志愿服务管理系统
java·spring boot·后端·spring·毕业设计
dayouziei32 分钟前
java的类加载机制的学习
java·学习
励志成为嵌入式工程师1 小时前
c语言简单编程练习9
c语言·开发语言·算法·vim
师太,答应老衲吧2 小时前
SQL实战训练之,力扣:2020. 无流量的帐户数(递归)
数据库·sql·leetcode
捕鲸叉2 小时前
创建线程时传递参数给线程
开发语言·c++·算法
A charmer2 小时前
【C++】vector 类深度解析:探索动态数组的奥秘
开发语言·c++·算法
Yaml42 小时前
Spring Boot 与 Vue 共筑二手书籍交易卓越平台
java·spring boot·后端·mysql·spring·vue·二手书籍
小小小妮子~3 小时前
Spring Boot详解:从入门到精通
java·spring boot·后端
hong1616883 小时前
Spring Boot中实现多数据源连接和切换的方案
java·spring boot·后端