写在前面

 

老粉丝可能知道现阶段的LeetCode刷题将按照某一个特定的专题进行,之前的【贪心算法】已经结束,虽然只有三个题却包含了简单,中等,困难这三个维度,今天介绍的是第二个专题【数组】

数组(Array)是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。在每一种编程语言中,基本都会有数组这种数据类型。不过,它不仅仅是一种编程语言中的数据类型,还是一种最基础的数据结构。

贪心算法回顾:

【LeetCode】贪心算法--买卖股票的最佳时机II(122)

【LeetCode】贪心算法--划分字母区间(763)

【LeetCode】贪心算法--分发糖果(135)

刷题汇总:

【LeetCode】汇总贴(NO.1-20)

 

今日题目

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

示例 1:
输入: [[1,3],[2,6],[8,10],[15,18]]
输出: [[1,6],[8,10],[15,18]]
解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].
示例 2:
输入: [[1,4],[4,5]]
输出: [[1,5]]
解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。

 

题目分析

先将目标区间数组从小到大排序,然后从第一个区间开始,如果相邻的两个区间,end小于start则合并区间,且生成新的区间,如果不小于,则放到返回区间,可以看下面几个例子。

[1,3][2,6] ->[1,6]

第一个区间的end大于等于第二个区间的start,同时第二个区间的end大于第一个区间的end。

[2,8][3,5] ->[2,8]

第一个区间的end大于等于第二个区间的start,同时第二个区间的end小于第一个区间的end。

[1,2][3,4] -> [1,2][3,4]

第一个区间的end小于第二个区间的start 。

代码实现

 

 1class Solution:
2    def merge(self, intervals):
3        """
4        :type intervals: List[Interval]
5        :rtype: List[Interval]
6        """
7        intervals.sort(key = lambda interval_tmp: interval_tmp.start)  
8        N = len(intervals)
9        s = []
10        for i in range(N):
11            flag = 0
12            for j in range(len(s)):
13                if not (intervals[i].start > s[j].end or intervals[i].end < s[j].start):
14                    s[j].start = min(intervals[i].start, s[j].start)
15                    s[j].end = max(intervals[i].end, s[j].end)
16                    flag = 1
17                    break
18            if flag == 0:
19                s.append(intervals[i])
20        return s

一切低效率的PASS都是耍流氓,今天拒绝耍流氓。

 

【推荐阅读】

【LeetCode】贪心算法--划分字母区间(763)

python异常报错详解

机器学习实战--住房月租金预测(3)

【LeetCode】数组--合并区间(56)的更多相关文章

  1. LeetCode(56):合并区间

    Medium! 题目描述: 给出一个区间的集合,请合并所有重叠的区间. 示例 1: 输入: [[1,3],[2,6],[8,10],[15,18]] 输出: [[1,6],[8,10],[15,18] ...

  2. Java实现 LeetCode 56 合并区间

    56. 合并区间 给出一个区间的集合,请合并所有重叠的区间. 示例 1: 输入: [[1,3],[2,6],[8,10],[15,18]] 输出: [[1,6],[8,10],[15,18]] 解释: ...

  3. 力扣leetcode 56. 合并区间

    56. 合并区间 给出一个区间的集合,请合并所有重叠的区间. 示例 1: 输入: [[1,3],[2,6],[8,10],[15,18]] 输出: [[1,6],[8,10],[15,18]] 解释: ...

  4. leetcode刷题-56合并区间

    题目 给出一个区间的集合,请合并所有重叠的区间. 示例 1: 输入: [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]] 思路 通过设置一个移 ...

  5. LeetCode 56. 合并区间(Merge Intervals)

    题目描述 给出一个区间的集合,请合并所有重叠的区间. 示例 1: 输入: [[1,3],[2,6],[8,10],[15,18]] 输出: [[1,6],[8,10],[15,18]] 解释: 区间 ...

  6. [LeetCode] Merge Intervals 合并区间

    Given a collection of intervals, merge all overlapping intervals. For example, Given [1,3],[2,6],[8, ...

  7. leetcode合并区间

    合并区间     给出一个区间的集合,请合并所有重叠的区间. 示例 1: 输入: [[1,3],[2,6],[8,10],[15,18]] 输出: [[1,6],[8,10],[15,18]] 解释: ...

  8. LeetCode数组解题模板

    一.模板以及题目分类 1.头尾指针向中间逼近 ; ; while (pos1<pos2) { //判断条件 //pos更改条件 if (nums[pos1]<nums[pos2]) pos ...

  9. leetcode数组相关

    目录 4寻找两个有序数组的中位数 11盛最多水的容器,42接雨水 15三数之和,16最接近的三数之和,18四数之和 26/80删除排序数组中的重复项, 27移除元素 31下一个排列 53最大子序和 5 ...

随机推荐

  1. 熟悉LINUX系统

    常用的Shell命令 当用户登录到字符界面系统或使用终端模拟窗口时,就是在和称为shell的命令解释程序进行通信.当用户在键盘上输入一条命令时,shell程序将对命令进行解释并完成相应的动作.这种动作 ...

  2. idea 断点上面有x

    背景:确定你的java代码没有问题,并且编译通过 问题:debug 启动项目的时候没有问题,idea打断点的时候左边红色断点上面有x 原因:java文件和class文件不一致, 解决方法:ant cl ...

  3. 遇到 ORACLE 错误 1658

    在对oracle导入数据时,多次报以下错误: IMP-00003: 遇到 ORACLE 错误 1659ORA-01659: 无法分配超出 1 的 MINEXTENTS (在表空间 ZSTA_DATA_ ...

  4. Tengine 2.1.2 (nginx/1.6.2)安装配置,淘宝 Web 服务器

    简介 Tengine是由淘宝网发起的Web服务器项目.它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性.Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很 ...

  5. Android开发之jdk安装及环境变量配置

    然后开始配置环境变量,JAVA_HOME,Path和classpath三部分: (1)在变量名输入框中写入“JAVA_HOME”,在变量值输入框中写入“C:\Program Files\Java\jd ...

  6. php isset+{} 判断字符串长度比strlen效率高

    PHP 变量后面加上一个大括号{},里面填上数字,就是指 PHP 变量相应序号的字符.例如:$str = 'hello';echo $str{0}; // 输出为 hecho $str{1}; // ...

  7. nmap数据流

    扫描者:1.1.1.1被扫描者:2.2.2.2 0x00 介绍 在日常工作对目标信息收集时,我们经常用到nmap这款网络探测工具和安全/端口扫描器,虽然我们关注的是结果(如目标开启了哪些危险端口,什么 ...

  8. Properties类和如何操作属性

    Properties类继承关系java.lang.Object  java.util.Dictionary<K,V>      java.util.Hashtable<Object, ...

  9. JavaScript函数注意点

    1.return 请注意,函数体内部的语句在执行时,一旦执行到return时,函数就执行完毕,并将结果返回.因此,函数内部通过条件判断和循环可以实现非常复杂的逻辑. 如果没有return语句,函数执行 ...

  10. day71

    上节回顾:(模板层) 1 模板之变量---{{ }}   -支持数字,字符串,布尔类型,列表,字典---相当于对它进行了打印   -函数--->相当于加括号运行(不能传参数)   -对象---& ...