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

合并区间【leetcode】

题目

以数组 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] 可被视为重叠区间。

解题思路

思路一:排序

如果我们按照区间的左端点排序,那么在排完序的列表中,可以合并的区间一定是连续的。如下图所示,标记为蓝色、黄色和绿色的区间分别可以合并成一个大区间,它们在排完序的列表中是连续的:

代码

class Solution:def merge(self, intervals: List[List[int]]) -> List[List[int]]:intervals.sort(key=lambda x: x[0])merged = []for interval in intervals:# 如果列表为空,或者当前区间与上一区间不重合,直接添加if not merged or merged[-1][1] < interval[0]:merged.append(interval)else:# 否则的话,我们就可以与上一区间进行合并merged[-1][1] = max(merged[-1][1], interval[1])return merged

思路二:排序+ 双指针

  • 对 vector<vector<int>> 排序,需要按照先比较区间开始,如果相同再比较区间结束,使用默认的排序规则即可
  • 使用双指针,左边指针指向当前区间的开始
  • 使用一个变量来记录连续的范围 t
  • 右指针开始往后寻找,如果后续的区间的开始值比 t 还小,说明重复了,可以归并到一起
  • 此时更新更大的结束值到 t
  • 直到区间断开,将 t 作为区间结束,存储到答案里
  • 然后移动左指针,跳过中间已经合并的区间

代码

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 随笔(1)将 CSV 文件导入 MySQL 时出现中文乱码问题解决方案
  • 【物理教学】不准确温度计图像代码分享
  • 为什么越来越多的人选择开放式耳机?平价高品质蓝牙耳机推荐
  • Django form.save 方法的详细分析
  • 雅特力初步环境准备
  • AI编程工具合集
  • SAP MM模块与FI模块集成之科目配置
  • 学习记录——day42 C++ Lambda表达式
  • C#中的PropertyInfo
  • C++语法基础(一)
  • Oracle(ORA-00210、ORA-00202)控制文件错误
  • Codeforces Round 968 (Div. 2)
  • QT实战项目之音乐播放器
  • MyBatis 源码解析:CachingExecutor 设计与实现
  • 虚拟机【linux】配置无线网络
  • 深入了解以太坊
  • “大数据应用场景”之隔壁老王(连载四)
  • echarts的各种常用效果展示
  • IOS评论框不贴底(ios12新bug)
  • Just for fun——迅速写完快速排序
  • leetcode378. Kth Smallest Element in a Sorted Matrix
  • Markdown 语法简单说明
  • markdown编辑器简评
  • Netty 框架总结「ChannelHandler 及 EventLoop」
  • UEditor初始化失败(实例已存在,但视图未渲染出来,单页化)
  • webpack项目中使用grunt监听文件变动自动打包编译
  • 回顾 Swift 多平台移植进度 #2
  • 基于组件的设计工作流与界面抽象
  • 开年巨制!千人千面回放技术让你“看到”Flutter用户侧问题
  • 聊聊flink的TableFactory
  • 前端
  • 前端性能优化--懒加载和预加载
  • 入职第二天:使用koa搭建node server是种怎样的体验
  • 一起来学SpringBoot | 第十篇:使用Spring Cache集成Redis
  • ​力扣解法汇总1802. 有界数组中指定下标处的最大值
  • # 飞书APP集成平台-数字化落地
  • #pragma data_seg 共享数据区(转)
  • (33)STM32——485实验笔记
  • (leetcode学习)236. 二叉树的最近公共祖先
  • (Redis使用系列) SpringBoot 中对应2.0.x版本的Redis配置 一
  • (SERIES12)DM性能优化
  • (超简单)构建高可用网络应用:使用Nginx进行负载均衡与健康检查
  • (分类)KNN算法- 参数调优
  • (每日一问)操作系统:常见的 Linux 指令详解
  • (免费领源码)python#django#mysql校园校园宿舍管理系统84831-计算机毕业设计项目选题推荐
  • (十三)MipMap
  • (十一)JAVA springboot ssm b2b2c多用户商城系统源码:服务网关Zuul高级篇
  • (实战)静默dbca安装创建数据库 --参数说明+举例
  • .net core 6 使用注解自动注入实例,无需构造注入 autowrite4net
  • .net6 webapi log4net完整配置使用流程
  • .Net高阶异常处理第二篇~~ dump进阶之MiniDumpWriter
  • .net中应用SQL缓存(实例使用)
  • @serverendpoint注解_SpringBoot 使用WebSocket打造在线聊天室(基于注解)
  • @synthesize和@dynamic分别有什么作用?
  • @value 静态变量_Python彻底搞懂:变量、对象、赋值、引用、拷贝