合并区间--Merge Intervals

https://leetcode.com/problems/merge-intervals/

Merge Intervals

Given a collection of intervals, merge all overlapping intervals.

For example,
Given [1,3],[2,6],[8,10],[15,18],
return [1,6],[8,10],[15,18].

题意:合并简化区间列

 1 # Definition for an interval.
 2 # class Interval:
 3 #     def __init__(self, s=0, e=0):
 4 #         self.start = s
 5 #         self.end = e
 6
 7 class Solution:
 8     # @param {Interval[]} intervals
 9     # @return {Interval[]}
10     def merge(self, intervals):
11         intervals.sort(key=lambda x:x.start)                                #注意形式,按区间左边数排序
12         length=len(intervals)                                               #区间总个数
13         res=[]
14         for i in range(length):                                             #用i对每一个区间依次遍历,进行处理
15             if res==[]:                                                     #第一个区间直接加入
16                 res.append(intervals[i])
17             else:
18                 size=len(res)                                               #找到已有区间列res的最后一个区间res[size-1]
19                 if res[size-1].start<=intervals[i].start<=res[size-1].end:  #别忘了两边的等号
20                     res[size-1].end=max(intervals[i].end,res[size-1].end)   #只更新右区间,左仍用res[size-1].start
21                 else:
22                     res.append(intervals[i])                                #若左区间不包含在前一个区间里,则直接加入
23         return res
时间: 2024-11-10 07:06:59

合并区间--Merge Intervals的相关文章

[LeetCode] 56 - Merge Intervals 合并区间

Given a collection of intervals, merge all overlapping intervals. For example,Given [1,3],[2,6],[8,10],[15,18],return [1,6],[8,10],[15,18]. 思路: 我们首先要做的就是给区间集排序,由于我们要排序的是个结构体,所以我们要定义自己的comparator,才能用sort来排序,我们以start的值从小到大来排序,排完序我们就可以开始合并了,首先把第一个区间存入结果

lintcode 容易题:Merge Intervals 合并区间

题目: 合并区间 给出若干闭合区间,合并所有重叠的部分. 样例 给出的区间列表 => 合并后的区间列表: [ [ [1, 3], [1, 6], [2, 6], => [8, 10], [8, 10], [15, 18] [15, 18] ] ]挑战 O(n log n) 的时间和 O(1) 的额外空间. 解题: 先以区间的左边界进行排序,再异步的方式比较右边边界进行合并 程序来源 Java程序 /** * Definition of Interval: * public class Inte

leetCode 56.Merge Intervals (合并区间) 解题思路和方法

Merge Intervals Given a collection of intervals, merge all overlapping intervals. For example, Given [1,3],[2,6],[8,10],[15,18], return [1,6],[8,10],[15,18]. 思路:题意很明确,首先对各区间按开始来排序,最后遍历,如果前面和后面的区间有重合,合并. 具体代码: /** * Definition for an interval. * publi

(Java) LeetCode 56. Merge Intervalse —— 合并区间

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,

LeetCode56 Merge Intervals

题目: Given a collection of intervals, merge all overlapping intervals. For example,Given [1,3],[2,6],[8,10],[15,18],return [1,6],[8,10],[15,18]. (Hard) 分析: 前两天做google的笔试,中间有一道题用到关于区间merge的问题,就把leetcode上这两道区间合并题目先做一下. 思路就是先对每个区间的起始位置进行排序,然后维护一个left和rig

合并区间(LintCode)

合并区间 给出若干闭合区间,合并所有重叠的部分. 样例 给出的区间列表 => 合并后的区间列表: [ [ [1, 3], [1, 6], [2, 6], => [8, 10], [8, 10], [15, 18] [15, 18] ] ] 挑战 O(n log n) 的时间和 O(1) 的额外空间. 思路是清晰的,代码是混乱的.先用Collection.sort()方法对List排序.当然也可以先toArray()然后用Arrays.sort()排序.但是都需要写一个实现Comparator接

【LeetCode】Merge Intervals 题解 利用Comparator进行排序

题目链接Merge Intervals /** * Definition for an interval. * public class Interval { * int start; * int end; * Interval() { start = 0; end = 0; } * Interval(int s, int e) { start = s; end = e; } * } * 题目:LeetCode 第56题 Merge Intervals 区间合并给定一个区间的集合,将相邻区间之间

LeetCode: Merge Intervals 解题报告

Merge IntervalsGiven a collection of intervals, merge all overlapping intervals. For example,Given [1,3],[2,6],[8,10],[15,18],return [1,6],[8,10],[15,18]. SOLUTION 1: 1. 先使用Comparator 的匿名类对intervels进行排序. 2. 把Intervals遍历一次,依次一个一个merge到第1个interval. 把第1

LeetCode: Merge Intervals [055]

[题目] Given an array of non-negative integers, you are initially positioned at the first index of the array. Given a collection of intervals, merge all overlapping intervals. For example, Given [1,3],[2,6],[8,10],[15,18], return [1,6],[8,10],[15,18].