《鄰居》leetcode練習(xí)第二題(python)
題目:
2. 兩數(shù)相加
給你兩個?非空?的鏈表,表示兩個非負(fù)的整數(shù)。它們每位數(shù)字都是按照?逆序?的方式存儲的,并且每個節(jié)點(diǎn)只能存儲?一位?數(shù)字。
請你將兩個數(shù)相加,并以相同形式返回一個表示和的鏈表。
你可以假設(shè)除了數(shù)字 0 之外,這兩個數(shù)都不會以 0?開頭。

解析:
運(yùn)行條件:鏈表從頭遍歷到位,逐位相加
(1)需要保存進(jìn)位
(2)需要保存結(jié)果
結(jié)束時:
(1)兩個鏈表只要有一個非空就需要往后進(jìn)行
(2)如果鏈表遍歷結(jié)束,進(jìn)位不為0,需要把進(jìn)位項(xiàng)添加在鏈表后面

代碼:
class Solution:
? ? def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
? ? ? ? # 當(dāng)前指針,結(jié)果鏈表
? ? ? ? result = curr = ListNode()
? ? ? ? # 進(jìn)位項(xiàng)
? ? ? ? remainder = 0
? ? ? ? # 非空滿足循環(huán)條件
? ? ? ? while l1 or l2 :
? ? ? ? ? ? x = l1.val if l1 else 0
? ? ? ? ? ? y = l2.val if l2 else 0
? ? ? ? ? ? total = x + y + remainder
? ? ? ? ? ? curr.next = ListNode(total%10)
? ? ? ? ? ? remainder = total//10
? ? ? ? ? ? # ??防止某一鏈表已經(jīng)為空,空鏈表.next會報(bào)錯
????????????if(l1!=None):l1=l1.next
????????????if(l2!=None):l2=l2.next
? ? ? ? ? ? curr = curr.next
? ? ? ? if remainder : curr.next = ListNode(remainder)
? ? ? ? return result.next

不足之處謝謝指正。