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

相关推荐
JosieBook5 分钟前
【程序人生】有梦想就能了不起,就怕你没梦想
程序人生·职场和发展
薛定谔的算法11 分钟前
JavaScript数组操作完全指南:从基础到高级
前端·javascript·算法
渣哥11 分钟前
ConcurrentHashMap 的 get 要不要加锁?一次“多此一举”的心路历程
java
可爱的小小小狼13 分钟前
算法:位运算
算法
愿你天黑有灯下雨有伞19 分钟前
一种基于注解与AOP的Spring Boot接口限流防刷方案
java·spring boot·后端
MuMuMu#25 分钟前
JAVA NIO学习笔记基础强化学习总结
java·学习·nio
拾忆,想起32 分钟前
Redis复制延迟全解析:从毫秒到秒级的优化实战指南
java·开发语言·数据库·redis·后端·缓存·性能优化
我登哥MVP32 分钟前
Java File 类学习笔记
java·笔记·学习
掘根36 分钟前
【CMake】缓存变量
java·后端·spring
zzzsde37 分钟前
【数据结构】强化训练:从基础到入门到进阶(1)
数据结构