【5分钟力扣】56.合并区间

文章目录

    • 一、前言
    • 二、题目
    • 三、解法和思路

一、前言

一个100行的代码调试都可能会让程序员遇到很多挫折,所以,面对挫折,我们永远不能低头。

每天五分钟,看懂一道简单、中等难度的算法题,尽可能将复杂的题讲清楚。

疯狂学习python中,2020-09-06更新

【5分钟力扣】56.合并区间_第1张图片

二、题目

给出一个区间的集合,请合并所有重叠的区间。

示例 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] 可被视为重叠区间。
注意:输入类型已于2019年4月15日更改。 请重置默认代码定义以获取新方法签名。

提示:

intervals[i][0] <= intervals[i][1]

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/merge-intervals
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

三、解法和思路

  1. 将区间内所有集合以集合左端元素大小进行升序排序。
  2. 创建一个新数组用于储存输入内容
  3. 循环遍历排序后的区间集合,如果新数组内集合右端元素小于原数组集合右端元素,则将该集合加入新数组
  4. 如果新数组内集合右端元素大于等于原数组集合右端元素,则两个集合的右端元素,将最大的值赋值给新数组。
from typing import List

intervals = [[1,3], [2,6],  [8,10], [15,18]]
class Solution:
    def merge(self, intervals: List[List[int]]) -> List[List[int]]:
        # 以区间左端元素大小进行升序排序
        intervals.sort(key=lambda x: x[0])

        reslut = []
        for interval in intervals:
            #  reslut[-1][-1] 保证取到区间集合最后一个值的右端元素
            if not reslut or reslut[-1][-1] < interval[0]:
                reslut.append(interval)
            else:
                reslut[-1][-1] = max(reslut[-1][-1],interval[-1])
        return reslut

【5分钟力扣】56.合并区间_第2张图片

你可能感兴趣的:(金鞍少年的刷题之路,leetcode,python)