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

力扣:56. 合并区间(Python3)

题目:

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

来源:力扣(LeetCode)
链接:力扣

示例:

示例 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] 可被视为重叠区间。

解法:

首先根据左区间对所有区间升序排序,创建result存放结果,设left、right为-1,表示存进result的左右区间。接着遍历区间,如果当前左区间大于right,说明相邻区间没有交集,因为排过序,和后面区间也不可能有交集,所以把当前区间存入result,修改left、right为当前区间值。如果当前左区间小于等于right,说明前后区间有交集,因为排过序,left不用变,right更新为大的那个,然后修改result中最后一个区间为[left,right]。

知识点:

1.list.sort+lambda:sort() 方法的 key 参数可以用来指定一个用于排序的函数,可以和lambda联动,比如:my_list= [(3, 5), (1, 2), (2, 6), (4, 1), (5, 5)],my_list.sort(key=lambdax: x[1])表示根据元组中第2个值的大小排序。

代码:

class Solution:def merge(self, intervals: List[List[int]]) -> List[List[int]]:result = []intervals.sort(key=lambda x: x[0])left = right = -1for interval in intervals:if interval[0] <= right:right = interval[1] if interval[1] > right else rightresult[-1] = [left, right]else:result.append(interval)left, right = intervalreturn result

http://www.lryc.cn/news/114372.html

相关文章:

  • 最小二乘问题和非线性优化
  • Selenium/webdriver原理解析
  • 多用户跨境B2B2C商城后台管理系统快速搭建
  • MySQL 优化
  • VMware Workstation及CentOS-7虚机安装
  • 双向带头循环链表+OJ题讲解
  • 电脑开不了机如何解锁BitLocker硬盘锁
  • Python Web开发 Jinja2模板引擎
  • ubuntu上安装mosquitto服务
  • 嵌入式开发学习(STC51-9-led点阵)
  • RedisTemplate.opsForZSet()用法简介并举例
  • Java个人博客系统--基于Springboot的设计与实现
  • 在jupyter中下载数据集失败及解决方法(以IMDB为例)
  • 【设计模式】-工厂方法模式
  • H7-TOOL的高速DAPLINK用于新版STM32CubeIDE V1.13及其以上版本的超简单实现方法(2023-08-08)
  • 成功解决ubuntu-22.04的sudo apt-get update一直卡在【0% [Waiting for headers]】
  • openLayers实战(一):vue项目中的离线地图引入
  • 如何构造一个安全的单例?
  • 单片机开发 esp8266
  • Linux 查看版本和用户权限提升实践心得
  • 多线程编程5:线程同步和进程通信(C++11和linux)
  • tensorrt官方int8量化方法汇总
  • 21、p6spy输出执行SQL日志
  • 实力认证!TDengine 入选 Gartner 中国数据分析与人工智能技术成熟度曲线
  • 如何将jar包部署到宝塔
  • el-tree-select那些事
  • 分布式任务调度框架之开山鼻祖:Quartz
  • Django实现音乐网站 ⑺
  • PO、DTO和VO的区别
  • ReadableStream流的js处理