博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【LeetCode每天一题】Merge Intervals(合并区间)
阅读量:7031 次
发布时间:2019-06-28

本文共 1195 字,大约阅读时间需要 3 分钟。

Given a collection of intervals, merge all overlapping intervals.

Example 1:

Input: [[1,3],[2,6],[8,10],[15,18]]Output: [[1,6],[8,10],[15,18]]Explanation: Since intervals [1,3] and [2,6] overlaps, merge them into [1,6].

Example 2:

Input: [[1,4],[4,5]]Output: [[1,5]]Explanation: Intervals [1,4] and [4,5] are considered overlapping.

思路


      这道题我当时看到之后想的的办法就是将nums中第一个添加进结果集中,然后从nums的第一个开始遍历和和res结果集中进行比较。按照这个思路当时提交之后发现输入的nums并不是有序的,因此先对其进行排序。然后得到排序之后的结果。这次在提交就解决了。 时间复杂度为O(nlogn), 空间复杂度为O(1)。

解决代码


 

1 class Solution(object): 2     def merge(self, nums): 3         """ 4         :type intervals: List[List[int]] 5         :rtype: List[List[int]] 6         """ 7         if not nums or len(nums) < 2:     # 数量小于2个时直接返回结果 8             return nums 9         nums.sort()                     # 排序10         res = [nums[0]]                 # 将nums中第一个元素添加进res中11         for li in nums[1:]:             # 开始遍历12             if res[-1][-1] < li[0]:      # 如果当前遍历的范围的起始值大于结果集中的最后一个范围的终止范围值。直接添加13                 res.append(li)14             else:15                 res[-1][-1] = max(res[-1][-1], li[-1])    # 否则我们选择最大的值作为结束值,并改变res中的值16         return res

 

转载于:https://www.cnblogs.com/GoodRnne/p/10740674.html

你可能感兴趣的文章
1110: 最近共同祖先(函数专题)
查看>>
PowerDesigner V16.5 安装教程以及汉化(数据库建模)
查看>>
li 在 UL 中居中均匀显示
查看>>
[转]Beanstalkd简介(job生命周期)
查看>>
JQuery 限制文本输入只能输入数字(可自定义正则表达式)
查看>>
Vim使用Vundle安装代码补全插件(YouCompleteMe)
查看>>
【树莓派】spi测试
查看>>
hdoj2111 Saving HDU
查看>>
python 依赖关系 与关联关系
查看>>
【matlab】读写文件
查看>>
超越函数/微分方程 /积分中的技术/级数
查看>>
paper 34 :常见函数的举例(更新ing)2
查看>>
用requirejs使angularJS模块化开发
查看>>
Eclipse Maven工作空间中工程依赖调试的源码问题(转)
查看>>
MLP Coursework Machine Learning Practical
查看>>
html5 随机数函数
查看>>
: error C3861: “Sleep”: 找不到标识符
查看>>
蓝桥杯 字母组串(递归)
查看>>
【LeetCode 231_整数_位运算】Power of Two
查看>>
解决小BUG的罗列
查看>>