我有一个问题。 我正在LeetCode https://leetcode.com/problems/merge-intervals/
中解决此问题下面是我的解决方案,它可以在我的Python IDE(Google合作实验室)中使用,但不能在LeetCode提交中使用。
在协作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'>
和
在LeetCode中返回<class 'precompiled.interval.Interval'>
。
这是怎么回事?
答案 0 :(得分:2)
我相信Leetcode使用一个类来表示一个Interval而不是一个列表。 尝试将答案重置为默认答案,您将看到定义:
# Definition for an interval.
# class Interval:
# def __init__(self, s=0, e=0):
# self.start = s
# self.end = e
因此,您应该使用间隔而不是Leetcode中的列表。
编辑:
例如,a[0]
应该是a.start
。