OJ练习第52题——插入区间

news/2024/6/16 22:47:56 标签: leetcode, 算法, 职场和发展

插入区间

力扣链接:57.插入区间

题目描述

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

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

示例

示例 2:

输入:intervals = [[1,2],[3,5],[6,7],[8,10],[12,16]], newInterval = [4,8]
输出:[[1,2],[3,10],[12,16]]
解释:这是因为新的区间 [4,8] 与 [3,5],[6,7],[8,10] 重叠。
示例 3:

输入:intervals = [], newInterval = [5,7]
输出:[[5,7]]

思路

方法1:
将newInterval 先加入到intervals当中,然后按照上一题OJ练习第51题——合并区间的方法来做。

方法2:
传统方法,将newInterval 与intervals当中的数组挨个对比。

Java代码

class Solution {

    /**
     * 将 newInterval 与 intervals 逐一比较,如果有交集,合成新的 newInterval,
     * 没有交集直接放到结果集中,最后把 newInterval 也加入,排序后输出
     */
    public int[][] insert(int[][] intervals, int[] newInterval) {
        List<int[]> res = new ArrayList<>();
        for (int[] interval : intervals) {
            if (hasOverlapping(interval, newInterval)) {
                newInterval = mergeInterval(interval, newInterval);
            } else {
                res.add(interval);
            }
        }
        res.add(newInterval);
        res.sort((i1, i2) -> i1[0] - i2[0]);
        return res.toArray(new int[res.size()][2]);
    }

    /**
     * 判断是否有交集
     */
    private boolean hasOverlapping(int[] i1, int[] i2) {
        return i1[0] <= i2[1] && i1[1] >= i2[0];
    }

    /**
     * 将两个 interval 合成一个
     */
    private int[] mergeInterval(int[] i1, int[] i2) {
        return new int[]{
                Math.min(i1[0], i2[0]),
                Math.max(i1[1], i2[1])
        };
    }
}

http://www.niftyadmin.cn/n/169897.html

相关文章

通过编写猫咪相册应用学习HTML

文章目录1. 标题元素标签2. p元素用于在网站上创建一段文本3. 注释4. 页面主要部分标识标签5. 通过使用img元素来为你的网站添加图片6. 使用锚点元素(a)链接到另一个页面7. 使用 section 元素将照片内容与未来的内容分开8. 无序列表(ul)元素&#xff0c;列表项(li)元素在列表中…

Python中模块是个啥

昨天有粉丝问我说&#xff0c;啥是模块&#xff1f;经常听别人口中提这个词&#xff0c;但就是不懂。 模块可以认为是一盒主题积木&#xff0c;通过它可以拼出某一主题的东西。这与之前介绍的函数不同&#xff0c;一个函数相当于一块积木&#xff0c;而一个模块中可以包括很多函…

【Spring boot】RedisTemplate中String、Hash、List设置过期时间

Redis中String设置时间的方法 redisTemplate.opsForValue().set("loginCode","254588",2, TimeUnit.SECONDS);//过期时间2秒 redisTemplate.opsForValue().set("loginCode","254588",2, TimeUnit.MINUTES);//过期时间2分钟 redisTemp…

hdfs的异构存储

文章目录1 背景2 hdfs异构存储类型和存储策略2.1 hdfs支持的存储类型2.2 hdfs如何知道数据存储目录是那种存储类型2.3 存储策略2.3.1 在hdfs中支持如下存储策略2.3.2 存储策略表2.3.4 Storage Policy Resolution2.3.5 配置存储策略2.3.6 基于存储策略的数据移动2.3.7 存储策略命…

如何有效编写企业工作手册?

工作手册是一种指导工作流程和操作方法的文件&#xff0c;通常用于组织和管理企业内部的工作流程。它可以提供一个标准、统一和可重复的方法来执行任务&#xff0c;使企业内部的工作流程更加高效和精确。工作手册通常包括以下职责&#xff1a;工作流程&#xff1a;工作手册会详…

ESP32设备驱动-ADXL335加速计驱动

ADXL335加速计驱动 文章目录 ADXL335加速计驱动1、ADXL335介绍2、硬件准备3、软件准备4、驱动实现1、ADXL335介绍 ADXL335 是一款小型、薄型、低功耗、完整的 3 轴加速度计,具有信号调理电压输出。 该产品以 3 g 的最小满量程测量加速度。它可以测量倾斜传感应用中的静态重力…

【2023-03-21】windows平台编译SRS

【2023-03-20】windows平台编译SRS 合集资料:FFMpge\OpenCV\libVLC\Nginx\SRS视频流合集 SRS文档:Windows下的SRS 1. cygwin64 SRS现在有windows版本了,是基于cygwin64实现的,请参考srs-windows。 cygwin是一个在windows平台上运行的unix模拟环境,使用一个Dll(动态链…

FCN全卷积网络和Deconv转置卷积原理描述

直到RPN生成Roi的时候&#xff0c;MaskRcnn和FasterRcnn的结构都是一样的。 然后RPN会过滤掉一部分&#xff0c;剩下的Roi分成前景和背景(2分类)&#xff0c;同时RPN会对Roi做一个初步的box回归。 接下来我们会把图上的anchor投影到feature map上&#xff0c;这里MaskRcnn用的是…