LeetCode python-56. 合并区间

LeetCode python-56. 合并区间

先看题目:
(题目来力扣网站)
LeetCode python-56. 合并区间_第1张图片

思路

①将列表按照第一个值排序。
②重合情况。拿intervals里要比较的数组右端值和已经存在res中的左端值比较,若前者<=后者,则重叠,更新右端值并存入res。
③不重合情况。将此intervals存入res即可。

class Solution:
    def merge(self, intervals):
        sorted(intervals)# 先把intervals按照第一个值进行排序
        n = len(intervals)
        if n == 0:
            return []
        res = [intervals[0]]
        for i in range(1, n):
            if intervals[i][0] <= res[-1][1]: #重合。#res[-1][1] 第一个-1指的是索引从后往前第一个,用-1表示
                res[-1][1] = max(res[-1][1], intervals[i][1])
            else:#不重合
                res.append(intervals[i])
        return res
p = Solution()
intervals = [[0,3],[0,1],[2,4],[5,6],[7,9]]
result = p.merge(intervals)
print(result)
#重合。用intervals[i]左端点与已经存到res里的最后一个区间右端点比较。因为intervas是已经排序好的,所以往res里存的也是按照第一个值升序存的。

在这里插入图片描述

收获

① 当列表由list(或者tuple)组成时,默认情况下,sort和sorted都会根据list[0](或者tuple[0])作为排序的key,进行排序。
#杂记#排序a.sort()与sorted(a)的区别

你可能感兴趣的:(python,LeetCode,排序)