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

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

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

相关文章:

  • 移动光猫 UNG853H 获取超级管理员账号密码
  • 一键解放双手,操作丝滑起飞!
  • Vue3 + OpenLayers 企业级应用进阶
  • 【浅尝Java】Java简介第一个Java程序(含JDK、JRE与JVM关系、javcdoc的使用)
  • matlab 中function的用法
  • 网络分析/
  • 22.2Linux的I2C驱动实验(编程)_csdn
  • 突破zero-RL 困境!LUFFY 如何借离线策略指引提升推理能力?
  • T575729 正经数组
  • mem0 安装与测试:一个强大的对话记忆管理工具
  • 2025五一杯数学建模C题:社交媒体平台用户分析问题,完整第一问模型与求解+代码
  • C语言 指针(2)
  • Winform(7.序列化方式整理)
  • 经济学和奥地利学派的起源
  • 【Java】HashMap
  • 26.电流信号的强抗干扰能力运用
  • 【大模型】图像生成:StyleGAN3:生成对抗网络的革命性进化
  • 【工具】Windows批量文件复制教程:用BAT脚本自动化文件管理
  • 2025MathorCup数学应用挑战赛B题
  • sicar 标准功能块 RobotService (机器人服务程序)
  • 高速变道致连环车祸,白车“骑”隔离栏压住另一车,交警回应
  • 乌美矿产协议文本公布,明确乌收益及协议优先级
  • 小核酸药物企业瑞博生物递表港交所,去年亏损2.81亿元
  • 中国体育报关注徐梦桃、王曼昱、盛李豪等获评全国先进工作者:为建设体育强国再立新功
  • 上海出台灵活就业人员公积金新政:不限户籍、提取自由,6月起施行
  • 伊朗港口爆炸已造成25人死亡,灭火行动已近尾声