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

相关推荐
wuweijianlove2 小时前
算法复杂度估算的实验建模与可视化表达的技术6
算法
执笔画流年呀2 小时前
7大排序算法
java·算法·排序算法
AI成长日志3 小时前
【算法学习专栏】动态规划基础·中等两题精讲(198.打家劫舍、322.零钱兑换)
学习·算法·动态规划
计算机安禾3 小时前
【数据结构与算法】第28篇:平衡二叉树(AVL树)
开发语言·数据结构·数据库·线性代数·算法·矩阵·visual studio
测试_AI_一辰3 小时前
AI 如何参与 Playwright 自动化维护:一次自动修复闭环实践
人工智能·算法·ai·自动化·ai编程
未来之窗软件服务3 小时前
算法设计—计算机等级考试—软件设计师考前备忘录—东方仙盟
算法·软件设计师·计算机等级考试
未来之窗软件服务3 小时前
哈夫曼树构造—计算机等级考试—软件设计师考前备忘录—东方仙盟
算法·软件设计师·计算机等级考试·仙盟创梦ide·东方仙盟
zdl6863 小时前
springboot+全局异常处理
java·spring boot·spring
2301_771717213 小时前
Jackson的使用方法详解
java·服务器·前端
SUNNY_SHUN4 小时前
VLM走进农田:AgriChat覆盖3000+作物品类,607K农业视觉问答基准开源
论文阅读·人工智能·算法·开源