leetcode56 Merge Intervals
Posted yawenw
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode56 Merge Intervals相关的知识,希望对你有一定的参考价值。
1 """ 2 Given a collection of intervals, merge all overlapping intervals. 3 Example 1: 4 Input: [[1,3],[2,6],[8,10],[15,18]] 5 Output: [[1,6],[8,10],[15,18]] 6 Explanation: Since intervals [1,3] and [2,6] overlaps, merge them into [1,6]. 7 Example 2: 8 Input: [[1,4],[4,5]] 9 Output: [[1,5]] 10 Explanation: Intervals [1,4] and [4,5] are considered overlapping. 11 """ 12 """ 13 将列表按照第一个值排序。 14 重合情况。 15 拿intervals里要比较的数组右端值和已经存在res中的左端值比较, 16 若前者<=后者,则重叠,更新右端值并存入res。 17 不重合情况。将此intervals存入res即可。 18 """ 19 class Solution: 20 def merge(self, intervals): 21 intervals.sort(key=lambda x: x[0]) # !!!把intervals按照第一个值进行排序 22 # print(sorted(C, key=lambda x: x[2])) 23 # x:x[]字母可以随意修改,排序方式按照中括号[]里面的维度进行排序, 24 # [0]按照第一维排序,[2]按照第三维排序 25 #bug 用sorted(intervals) 带0的案例没有通过 26 #Input: [[1,4],[0,4]] 27 #Output: [[1,4]] 28 #Expected: [[0,4]] 29 n = len(intervals) 30 if n == 0: 31 return [] 32 res = [intervals[0]] 33 for i in range(1, n): 34 if intervals[i][0] <= res[-1][1]: #重合。 35 # !!!res[-1][1] 第一个-1指的是索引从后往前第一个,用-1表示 36 res[-1][1] = max(res[-1][1], intervals[i][1]) 37 else:#不重合 38 res.append(intervals[i]) 39 return res
以上是关于leetcode56 Merge Intervals的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode: 56. Merge Intervals(Medium)