zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    迭代器
    闭包函数与装饰器
    pyhton的函数
    文件处理
    Python2和Python3编码的区别
    hdu5080:几何+polya计数(鞍山区域赛K题)
    hdu1695:数论+容斥
    HDU3564 --- Another LIS (线段树维护最值问题)
    hdu1521:排列组合---指数型母函数
    poj1014:母函数+优化
  • 原文地址:https://www.cnblogs.com/yawenw/p/12271079.html
Copyright © 2011-2022 走看看