当前位置: 首页 > news >正文

合并区间(python3)

合并区间

  • 题目描述
  • 解题思路
  • 代码实现
  • 复杂度

题目描述

以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。

示例 1:
输入:intervals = [[1,3],[2,6],[8,10],[15,18]]
输出:[[1,6],[8,10],[15,18]]
解释:区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].

示例 2:
输入:intervals = [[1,4],[4,5]]
输出:[[1,5]]
解释:区间 [1,4] 和 [4,5]可被视为重叠区间。

解题思路

先将题目的核心问题提取出来,变成单个的数学问题。即合并区间的条件是,若第二个数组的左区间小于等于第一个数组的右区间,则说明这两个数组区间能够合并。
由于输入列表无序,先按子数组的第一个数字升序排列,这可以保证遍历时不会漏掉区间。以当前数组为对比,如果有满足条件的区间出现,更新当前数组的右区间,取二者的较大值。
通过标记数组记录已合并的区间,用于减少时间复杂度。

代码实现

def merge(self, intervals: List[List[int]]) -> List[List[int]]:n = len(intervals)flag = [0]*nk = 0res = []sorted_intervals = sorted(intervals, key=lambda x: x[0])# print(sorted_intervals)for interval in sorted_intervals:if flag[k]==1:k+=1continueleft = interval[0]right = interval[1]temp = []temp.append(left)i = kwhile i<n:if sorted_intervals[i][0]<=right:right = max(right,sorted_intervals[i][1])flag[i] = 1i+=1temp.append(right)res.append(temp)k+=1return res

复杂度

时间复杂度:O(NLogN)

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【已解决】“import ... =“ 只能在 TypeScript 文件中使用
  • 前端八股文 说一下盒模型
  • 昇腾910B部署Qwen2-7B-Instruct进行流式输出【pytorch框架】NPU推理
  • 代码随想录算法训练营第13天|二叉树的递归遍历、二叉树的迭代遍历、二叉树的统一迭代法、102.二叉树的层序遍历
  • K8S 部署 EFK
  • cs224n作业3 代码及运行结果
  • 【原创实现 设计模式】Spring+策略+模版+工厂模式去掉if-else,实现开闭原则,优雅扩展
  • 自然之美无需雕琢
  • 一道有意思的简单题 [NOIP2010 普及组] 接水问题
  • Renesas R7FA8D1BH (Cortex®-M85) ADC模块应用
  • 宝可梦 第一到第五时代 神兽 幻兽 准神宝可梦盘点
  • DNS服务器
  • 使用maven搭建一个SpingBoot项目
  • C++:构造函数是什么东西
  • 科普文:构建可扩展的微服务架构设计方案
  • python3.6+scrapy+mysql 爬虫实战
  • 2017-08-04 前端日报
  • 5分钟即可掌握的前端高效利器:JavaScript 策略模式
  • Angular4 模板式表单用法以及验证
  • Asm.js的简单介绍
  • conda常用的命令
  • Debian下无root权限使用Python访问Oracle
  • js写一个简单的选项卡
  • leetcode386. Lexicographical Numbers
  • Netty 4.1 源代码学习:线程模型
  • NSTimer学习笔记
  • 从@property说起(二)当我们写下@property (nonatomic, weak) id obj时,我们究竟写了什么...
  • 从零开始的无人驾驶 1
  • 理解IaaS, PaaS, SaaS等云模型 (Cloud Models)
  • 那些年我们用过的显示性能指标
  • 批量截取pdf文件
  • 树莓派 - 使用须知
  • 小程序button引导用户授权
  • 赢得Docker挑战最佳实践
  • 做一名精致的JavaScripter 01:JavaScript简介
  • 仓管云——企业云erp功能有哪些?
  • 整理一些计算机基础知识!
  • ​queue --- 一个同步的队列类​
  • ​猴子吃桃问题:每天都吃了前一天剩下的一半多一个。
  • #stm32整理(一)flash读写
  • $.ajax()方法详解
  • (2)leetcode 234.回文链表 141.环形链表
  • (2024最新)CentOS 7上在线安装MySQL 5.7|喂饭级教程
  • (TOJ2804)Even? Odd?
  • (附源码)ssm高校运动会管理系统 毕业设计 020419
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • (十二)devops持续集成开发——jenkins的全局工具配置之sonar qube环境安装及配置
  • (四) 虚拟摄像头vivi体验
  • (转)c++ std::pair 与 std::make
  • (转)可以带来幸福的一本书
  • .NET 2.0中新增的一些TryGet,TryParse等方法
  • .NET Framework、.NET Core 、 .NET 5、.NET 6和.NET 7 和.NET8 简介及区别
  • .net 流——流的类型体系简单介绍
  • .Net 知识杂记
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地中转一个自定义的弱事件(可让任意 CLR 事件成为弱事件)