我有个问题。我正在 LeetCode https://leetcode.com/problems/merge-intervals/ 中解决这个问题
下面是我的解决方案,它适用于我的 Python IDE(Google Colaboratory),但不适用于 LeetCode 提交。
在 Colaboratory Python3 中,列表列表支持索引、比较(按列表的第一个元素)等。
看看这个代码片段:
def overlap(a,b):
if b[0] >= a[0] and b[0] <= a[1]:
return [a[0], max(a[1], b[1])]
if a[0] >= b[0] and a[0] <= b[1]:
return [b[0], max(b[1], a[1])]
return False
def itemGrabber(listerson):
print(type(listerson))
return listerson[0]
def merge(intervals):
if len(intervals) < 2: return intervals
intervals.sort(key = itemGrabber)
for i in range(len(intervals) - 2):
r = overlap(intervals[i], intervals[i+1])
if r != False:
intervals[i] = r
del intervals[i+1]
return intervals
intervals = [[1,3],[2,6],[8,10],[15,18]]
overlap(b,c)
merge(intervals)
intervals
这一行:
print(type(listerson))
收益<type 'list'>
在colaboratory并返回<class 'precompiled.interval.Interval'>
在本文给出。
这里发生了什么?
我相信 Leetcode 使用一个类来表示一个区间而不是一个列表。尝试将答案重置为默认答案,您将看到定义:
# Definition for an interval.
# class Interval:
# def __init__(self, s=0, e=0):
# self.start = s
# self.end = e
所以你应该在 Leetcode 中使用 Interval 而不是 List。
编辑:例如,a[0]
应该是a.start
.
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句