【LeetCode】57. 插入区间

news2024/11/7 20:50:23

1 问题

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

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

示例 1:

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

示例 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]]

示例 4:

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

示例 5:

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

2 答案

自己写的,参照上一题,进行简单修改,把新的区间append,然后重新合并即可

class Solution:
    def insert(self, intervals: List[List[int]], newInterval: List[int]) -> List[List[int]]:

        intervals.append(newInterval)
        intervals.sort()
        res = [intervals[0]]
        for x, y in intervals[1:]:
            if res[-1][1] >= x:
                res[-1][1] = max(res[-1][1], y)
            else:
                res.append([x, y])
        return res

在这里插入图片描述
官方解,比较常规的思路

class Solution:
    def insert(self, intervals: List[List[int]], newInterval: List[int]) -> List[List[int]]:
        i = 0
        n = len(intervals)
        res = []
        while i < n and newInterval[0] > intervals[i][1]: # 两个区间边界不相交
            res.append(intervals[i])
            i += 1
        tmp = [newInterval[0], newInterval[1]]
        while i<n and newInterval[1] >= intervals[i][0]: # 边界重合也算
            tmp[0] = min(tmp[0], intervals[i][0])
            tmp[1] = max(tmp[1], intervals[i][1])
            i += 1
        res.append(tmp)
        while i < n:
            res.append(intervals[i])
            i += 1
        return res

https://leetcode.cn/problems/insert-interval/solutions/5507/chang-gui-si-kao-by-powcai/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1114774.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

国产开发板上打造开源ThingsBoard工业网关--基于米尔芯驰MYD-JD9X开发板

本篇测评由面包板论坛的优秀测评者“JerryZhen”提供。 本文将介绍基于米尔电子MYD-JD9X开发板打造成开源的Thingsboard网关。 Thingsboard网关是一个开源的软件网关&#xff0c;采用python作为开发语言&#xff0c;可以部署在任何支持 python 运行环境的主机上&#xff0c;灵…

前端将二维数组转换成树形格式数组

原始数据&#xff1a; 最终得到的数据&#xff1a; 具体实现代码&#xff1a;倒推&#xff08;最后一个数据&#xff09;的思路得到数组 function childData(list,i){const arr []//最后一个数组if(i<list.length){list[i].forEach(item>{const obj {name:,prop:,chil…

美摄视频特效SDK,视频特效技术解决方案

视频内容已经成为企业传播信息、提升品牌形象的重要手段。然而&#xff0c;普通的视频内容往往难以吸引观众的注意力&#xff0c;而富有创意的视频特效则能够大大提升视频的观赏性和吸引力。为了帮助企业轻松实现视频特效的添加&#xff0c;我们推出了美摄视频特效SDK&#xff…

风口下的低代码,怎么样了?

目录 一、前言 二、为什么低代码平台会受到资本的重视&#xff1f; 三、低代码的应用场景 1.基于表单/引擎驱动的模式 2.基于aPaaS平台的模式 四、低代码能解决什么问题&#xff1f; &#xff08;1&#xff09;运维工作流方向 &#xff08;2&#xff09;运维开发方向 五、低代码…

ArcGIS笔记10_如何创建渔网?

本文目录 前言Step 1 确定渔网的精度单位Step 2 有底图时创建渔网的操作 前言 ArcGIS中的渔网是一个很好用的工具&#xff0c;它可以创建出规规整整的小格子&#xff0c;每个小格子都对应一个标注点&#xff0c;可以将原本散乱的数据规整化&#xff0c;如下图&#xff1a; Ste…

Springboot-案例 增删改查二

准备 前端程序、后端工程&#xff08;web/mybatis/mysql/lombok&#xff09;、数据库 开发规范 GET&#xff1a;查询 POST&#xff1a;新增 PUT&#xff1a;修改 DELETE&#xff1a;删除 Result.java Data NoArgsConstructor AllArgsConstructor public class Result {pri…

如何正确地使用ChatGPT(角色扮演+提示工程)

如何正确地使用ChatGPT 一、ChatGPT介绍二、准备工作2.1 获取ChatGPT环境2.2 确定使用ChatGPT的目标和需求 三、重要因素3.1 角色赋予3.2 提示工程 四、正确案例 一、ChatGPT介绍 可以查阅ChatGPT快速入门 二、准备工作 2.1 获取ChatGPT环境 国外的有OpenAI和微软NewBing等…

如何快速绘制一张业务流程图?

产品经理在日常工作中经常需要和业务流程图打交道&#xff0c;它能很好地帮助我们梳理业务&#xff0c;高效表达需求&#xff0c;避免做无用功。 对于刚入门的PM来说&#xff0c;对业务流程图完全摸不着头脑的大有人在&#xff0c;今天从业务流程图的基本介绍、分类、业务流程…

超结MOS/低压MOS在微型逆变器上的应用-REASUNOS瑞森半导体

一、前言 微型逆变器&#xff0c;一般指的是光伏发电系统中的功率小于等于1000瓦、具组件级MPPT的逆变器&#xff0c;全称是微型光伏并网逆变器。“微型”是相对于传统的集中式逆变器而言的。传统的光伏逆变方式是将所有的光伏电池在阳光照射下生成的直流电全部串并联在一起&…

接物游戏demo

接物游戏demo&#xff1a; 接物元素设置了不同分值 指定时间内&#xff0c;接到元素则加分&#xff0c;接到炸弹则减分&#xff0c;计时结束&#xff0c;游戏停止 demo代码&#xff1a; <!DOCTYPE html> <html> <head> <meta charset"UTF-8"…

文心一言帮忙写代码之微信小程序图片移动顺序

先上效果图&#xff0c;图片顺序可移动&#xff0c;左移右移调准顺序。 代码是文心一言帮忙写的&#xff0c;自己稍微改造就可以用了。 首先是往左移&#xff0c;也就是从下标1移到下标0 &#xff0c;下标2移到下标1 var imglist [‘aa’, ‘bb’, ‘cc’, ‘dd’]; function…

智能电表上的模块发热正常吗?

智能电表是一种可以远程抄表、计费、控制和管理的电力计量设备&#xff0c;它可以实现智能化、信息化和网络化的电力用电管理。智能电表的主要组成部分包括电能计量模块、通信模块、控制模块和显示模块等。其中&#xff0c;通信模块和控制模块是智能电表的核心部件&#xff0c;…

C++11——多线程

目录 一.thread类的简单介绍 二.线程函数参数 三.原子性操作库(atomic) 四.lock_guard与unique_lock 1.lock_guard 2.unique_lock 五.条件变量 一.thread类的简单介绍 在C11之前&#xff0c;涉及到多线程问题&#xff0c;都是和平台相关的&#xff0c;比如windows和linu…

如何使用 NFTScan 的 TON API 实现 NFT 应用开发?

上周 NFTScan 开发者平台已上线了 TON 网络的 NFT API 服务&#xff0c;TON&#xff08;The Open Network&#xff09;是由 Telegram 团队打造的一条 Layer 1 高性能公链&#xff0c;采用自己的 TVM 虚拟机&#xff0c;与 EVM 不兼容。通过先进的技术架构实现每秒百万级 TPS 的…

为什么需要 SOME/IP

传统汽车协议的问题 如今的汽车不仅仅是通勤和交通工具&#xff0c;车辆现在设计得功能齐全&#xff0c;使旅程成为一种豪华体验。所有这些都是通过将先进的电子技术与车辆的发动机控制单元&#xff08;ECU&#xff09;集成而实现的。这种新的情景显著改变了ECU的不同单元之间…

生成扩散模型理论框架

1、随机微分方程&#xff08;Stochastic Differential Equation&#xff0c;SDE&#xff09; DDPM的一般化形式 2、常微分方程&#xff08;Ordinary differential equation&#xff0c;ODE&#xff09; DDIM的一般化形式 3、得分匹配&#xff08;Score matching&#xff09; …

如何快速高效的掌握一门新技术

目录 前言1 确定合适的学习目标1.1 SMART目标1.2 不同类型的学习目标 2 建立知识体系3 学习金字塔&#xff1a;教授他人3.1 深化理解3.2 记忆巩固3.3 自信提升3.4 知识共享 4 刻意练习4.1 构建个人项目4.2 参与实际项目4.3 参与开源项目4.4 解决复杂问题 结论 前言 学习一门新…

cAdvisor监控Docker容器做性能测试

cAdvisor监控Docker容器做性能测试 缘起 当前有个服务做技术选型&#xff0c;服务要求比较高的性能&#xff0c;要做性能测试。部署的环境是容器话部署&#xff0c;但申请新的容器流程较长&#xff0c;于是我打算在流程走完之前简单评估下性能&#xff0c;来确定技术选型是否…

微信聚合聊天系统的便捷功能:自动回复

当下&#xff0c;微信已然成为我们在工作中必不可少的沟通工具。但由于微信平台尚未开放自动回复、快捷回复等便捷功能&#xff0c;在通过平台展开工作时&#xff0c;一旦咨询量非常大&#xff0c;往往会出现回复不及时的情况。如此一来便会影响客户的满意度&#xff0c;降低客…