- 給出兩個 非空 的連結串列用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。
- 如果,我們將這兩個數相liang加起來,則會返回一個新的連結串列來表示它們的和。
- 您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。
仿leetcode官方類ListNode定義
解決除錯程式碼報錯:
name 'ListNode' is not defined//ListNode' object has no attribute 'val'.
原因:估計leetcode上面平臺除錯程式碼的時候啟用了自己的一些庫檔案。 在本地ied除錯的時候要加上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())+"}"
不過就算我們定義了這個類,在本地除錯的過程中,我們傳參的形式還是list。但是在leetcode提交程式碼並不是,而是應該官方透過介面將我們傳入的[1,2,3]list形式引數轉化成了ListNode了。
所以我們還要在本地測試之前新增判斷引數形式的程式碼
if isinstance(l1,list):
l1 = ListNode(l1)
l2 = ListNode(l2)
我們來看看vscode除錯列印的效果:
if __name__ == "__main__":
test = Solution()
print(test.addTwoNumbers([1,3],[2,1,3]))
除錯結果:(和官方定義得那個輸出是一樣的)
f:/Leetcode/2.兩數相加.py
ListNode {val: 3, next: ListNode {val: 4, next: ListNode {val: 3, next: None}}}
原始碼儲存在github上,歡迎來提bug哦!-點選訪問
如果覺得不錯請給我一個star謝謝了Stray_Camel(^U^)ノ~YO
本作品採用《CC 協議》,轉載必須註明作者和本文連結
文章!!首發於我的部落格Stray_Camel(^U^)ノ~YO。