Leetcode 56. 合并区间(sort排序)

news/2024/5/19 23:51:35 标签: 算法, leetcode, 快速排序, 插入排序

Leetcode 56. 合并区间(sort排序)

  • 1.题目
  • 2.解题

1.题目

链接:https://leetcode-cn.com/problems/merge-intervals/

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

提示:
1 <= intervals.length <= 104
intervals[i].length == 2
0 <= starti <= endi <= 104

2.解题

  • 基本思路:
    我们用数组 merged 存储最终的答案。
    首先,我们将列表中的区间按照左端点升序排序。然后我们将第一个区间加入 merged 数组中,并按顺序依次考虑之后的每个区间:

    • 如果当前区间的左端点在数组 merged 中最后一个区间的右端点之后,那么它们不会重合,我们可以直接将这个区间加入数组 merged 的末尾;

    • 否则,它们重合,我们需要用当前区间的右端点更新数组 merged 中最后一个区间的右端点,将其置为二者的较大值。

class Solution:
    def merge(self, intervals: List[List[int]]) -> List[List[int]]:
        intervals.sort(key=lambda x: x[0]) #lambda可以指定排序方法,这里指定以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

        

sort()函数原理
数据量大时采用Quick Sort,分段递归排序,一旦分段后的数据量小于某个门槛,为避免Quick Sort的递归调用带来过大的额外负荷,就改用Insertion Sort。如果递归层次过深,还会改用Heap Sort。

参考文章链接:
1. 合并区间


http://www.niftyadmin.cn/n/819445.html

相关文章

上午拿offer,下午被辞退!

昨天有个粉丝找到小孟私聊&#xff1a;准备很久的面试&#xff0c;终于拿到了offer。为了庆贺&#xff0c;中午出去大餐一顿。没想到啊&#xff0c;没想到……下午就收到被辞退的消息。这种事以前我只能在电视里看到&#xff0c;没想到竟然发生到粉丝的头上。我想这位粉丝的朋友…

Leetcode 57. 插入区间(新建列表/原地删除)

Leetcode 57. 插入区间&#xff08;新建列表/原地删除&#xff09;1.题目2.解题方法1&#xff1a;创建新列表方法2&#xff1a;原地修改1.题目 链接&#xff1a;https://leetcode-cn.com/problems/insert-interval/ 题目&#xff1a; 给你一个 无重叠的 &#xff0c;按照区间起…

女友老爸开了中介公司让我抽空搞开发个租房App,像贝壳一样就行.....

前几天在朋友圈看到一个求助&#xff1a;“前段时间女友老爸和朋友开了中介公司。让我抽空给他们开发一款租房App,还说不用搞复杂像贝壳一样就行.....我特么的...”&#xff0c;哈哈&#xff0c;也是醉了&#xff0c;这要是隔壁二大爷我就教他如何怼回去了&#xff0c;可怕的是…

心惊胆战,两个熊孩子在27楼天台玩立定跳远

上面这个公号&#xff0c;是我的一个备用号&#xff0c;平时会发一些很随意&#xff0c;很沙雕的内容&#xff0c;还有吃瓜、内幕等大号不方便发的内容&#xff0c;就当作一个程序员的实验室吧。1熊孩子前两天我在微信群无意中看到一个视频&#xff0c;两个熊孩子在一个高层的楼…

这很腾讯!

这个曲线图叫「技术采用生命周期」&#xff0c;是用来衡量用户对某项新技术接受程度的模型。根据曲线维度&#xff0c;消费者采用新技术的过程可以分成五个阶段&#xff1a;创新者&#xff08;2.5%&#xff09;早期采用者&#xff08;13.5%&#xff09;早期大众&#xff08;34%…

又一个新兴岗位,月薪过万!

上面这个公号&#xff0c;是我的一个备用号&#xff0c;平时会发一些很随意&#xff0c;很沙雕的内容&#xff0c;还有吃瓜、内幕等大号不方便发的内容&#xff0c;就当作一个程序员的实验室吧。1职业陪诊员时代在发展&#xff0c;诞生了很多新岗位。比如在10年&#xff0c;我现…

访问GitHub还在转圈圈吗?快上车!让你加速到飞起!

将开源小分队设为星标 精品文章第一时间读大家好&#xff0c;我是机灵可爱的开源小妹&#xff01;相信每一个关注开源的朋友&#xff0c;都会遇到一个棘手的问题&#xff0c;那就是 Github 的访问不够稳定。Github 就像薛定谔的猫一样&#xff0c;点开时&#xff0c;才知道能不…

爆火,字节、阿里、百度等大厂员工,正在用共享文档相亲...

这年头&#xff0c;好像特别流程利用在线共享文档搞事情。前一段时间&#xff0c;共享加班文档刚刚过去&#xff0c;这两天又爆火出一个“大厂er相亲文档”。已经有上万人浏览&#xff0c;几千个大厂的员工在上面相亲。看了一眼&#xff0c;各种个人信息介绍铺天盖地而来&#…