在Colaboratory vs LeetCode中Python中的对象类型不匹配

时间:2018-10-16 18:07:06

标签: python python-3.x

我有一个问题。 我正在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'>

这是怎么回事?

1 个答案:

答案 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