LeetCode-100题(Hot) 57. 插入区间 [Java实现]

这篇博客介绍了如何在已排序且无重叠的区间列表中插入新的区间,保持列表有序且不重叠。通过分析示例1,将区间分为三种情况处理:无交集、拓展边界合并交集、顺序插入。文章提供了一个使用Java实现的解决方案。
摘要由CSDN通过智能技术生成

给你一个 无重叠的 ,按照区间起始端点排序的区间列表。

在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。

示例 1:

输入:intervals = [[1,3],[6,9]], newInterval = [2,5]
输出:[[1,5],[6,9]]


对于这个问题我们借助一张图像进行分析:

其中

  • 绿色部分代表待插入数组
  • 橙色部分代表原有数组 

对于源有数组,我们可以将其分为三类:

  1.  情况一:原有数组在待插入数组左侧且,无交集,那么直接加入结果集中即可。
  2. 情况二:在排除情况一的前提下,原有数组左侧 <= 待插入数组的右侧 的数组。在此情况下我们不断拓展待插入数组的边界直至其完全包含全部交集的原有数组。
  3. 情况三:在排除情况一、二的情况下按顺序直接将剩余待插入数组顺序加入结果集中即可。

以下为实现部分:

    public int[][] insert(int[][] intervals, int[] newInterval) {
        List<int[]> result = new LinkedList<>()
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值