直接將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/