直接将leetcode上写的代码复制到IDE上会有问题 因为python没有ListNode对象,所以lc自己创建了一个ListNode类:
class ListNode:
def __init__(self, val):
if isinstance(val, int):
self.val = val
self.next = None
但是就算加上这个类,也没法在PyCharm上正常运行,会出现下面报错:
'ListNode' object has no attribute 'val'
在IDE上传参的形式还是 list。可能力扣通过接口将我们传入的list转化成了 ListNode 了。
所以还需添加判断参数形式的代码:
class ListNode:
def __init__(self, val):
if isinstance(val, int):
self.val = val
self.next = None
elif isinstance(val, list):
self.val = val[0]
self.next = None
cur = self
for i in val[1:]:
cur.next = ListNode(i)
cur = cur.next
def gatherAttrs(self):
return ", ".join("{}: {}".format(k, getattr(self, k)) for k in self.__dict__.keys())
def __str__(self):
return self.__class__.__name__ + " {" + "{}".format(self.gatherAttrs()) + "}"
这部分是ListNode类的代码,整个都需要添加
下面这部分是改变传参的代码,需要加入到Solution类里
class Solution:
def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode:
if isinstance(l1, list):
l1 = ListNode(l1)
l2 = ListNode(l2)
#下面是自己写的代码
再次运行起码没有ListNode类的问题了。精力跟时间其实应该放在算法上,但是在通过代码实现算法的过程中总是有很多甚至占了主要时间和精力的问题。解决了又会有本末倒置的悔感,可是不解决···那不就是没实现吗
有参考https://leetcode-cn.com/circle/article/s3RcOW/