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

Leetcode刷题记录25——合并区间

题源:https://leetcode.cn/problems/merge-intervals/description/?envType=study-plan-v2&envId=top-100-liked

题目描述:
在这里插入图片描述

思路一:

第一步:排序区间
为了能顺利合并区间,首先我们要对所有区间按照起始点从小到大排序。这样我们可以确保在遍历时,所有可能重合的区间都排列在一起,方便处理。

第二步:初始化变量
我们维护两个变量:

  • current_start:当前正在合并的区间的起始点;
  • current_end:当前正在合并的区间的结束点。
    初始时,我们将它们设为第一个区间的起止点。

第三步:遍历区间并合并
从第二个区间开始遍历:

  • 如果当前区间的起点大于 current_end,说明没有重叠,应该将当前合并好的区间加入结果集,并用当前新的区间更新 current_start 和 current_end。
  • 如果有重叠,则更新 current_end 为两者的较大值,继续合并。

第四步:处理最后一个区间
遍历结束后,我们还需要把最后合并的那个区间也加入结果集中。

代码如下:

class Solution(object):def merge(self, intervals):""":type intervals: List[List[int]]:rtype: List[List[int]]"""intervals.sort(key=lambda x: x[0])current_start = intervals[0][0]current_end = intervals[0][1]new_intervals = []for i in range(1, len(intervals)):start = intervals[i][0]end = intervals[i][1]if current_end < start:new_intervals.append([current_start, current_end])current_start, current_end = start, endelse:current_end = max(current_end, end)new_intervals.append([current_start, current_end])return new_intervals

执行时间如下:
在这里插入图片描述

http://www.xdnf.cn/news/3354.html

相关文章:

  • MySQL与分布式架构的碰撞
  • 使用MGeo模型高精度实现文本中地址识别
  • 题解:洛谷 CF2091E Interesting Ratio
  • Java 中使用正则表达式
  • 在Linux中,KVM和Docker在Linux虚拟化中的区别是什么?
  • 【计算机视觉】语义分割:Mask2Former:统一分割框架的技术突破与实战指南
  • Mysql常用函数解析
  • Annotate better with CVAT
  • 华为OD机试真题——斗地主之顺子(2025A卷:100分)Java/python/JavaScript/C/C++/GO最佳实现
  • 《TCP/IP详解 卷1:协议》之第九章:IP选路
  • 湖仓一体化介绍
  • 数据库基本概念:数据库的定义、特点、分类、组成、作用
  • 详解TypeScript中的类型断言及其绕过类型检查机制
  • 【Vue bug】:deep()失效
  • 如何提升自我执行力?
  • 拆解 browser-use 项目——深入理解 Agent 层
  • Linux 环境下 Mysql 5.7 数据定期备份
  • Kotlin-运算符重载函数
  • 生产级RAG系统一些经验总结
  • HTN77A0原理图提供聚能芯半导体禾润一级代理技术支持免费送样
  • 1295.统计位数为偶数的数字
  • SWIG 和 JNA / JNI 等 C 接口封装工具及进行 C 接口的封装
  • AnimateCC基础教学:二次贝塞尔曲线的绘制。
  • Android 动态权限申请
  • 多通道经颅电刺激器的主流厂家介绍
  • hadoop集群建立
  • 【keil使用】无法打开keil工程,只有空白界面的解决方法
  • rk3568安全启动功能实践
  • 介绍一下Files类的常用方法
  • 车辆检测新突破:VFM-Det 如何用大模型提升识别精度