入力:(2-> 4-> 3)+(5-> 6-> 4)
出力:7-> 0-> 8
理由:342 + 465 = 807
トピックの紹介はまだ比較的単純です。この質問も比較的単純です。次の点に注意する必要があります。
リンクリストの整合性を維持するには、最終的なNext値をnoneにする必要があります
キャリーの問題、キャリーがあるかもしれません
最後に、公式の問題解決策はpython3では解決できないため、python2をお勧めします。理由としては、一夜にして理解できませんでした。
# Definition for singly-linked list.
# classListNode(object):
# def __init__(self, x):
# self.val = x
# self.next = None
classSolution(object):
def addTwoNumbers(self, l1, l2):"""
: type l1: ListNode
: type l2: ListNode
: rtype: ListNode
"""
p = l1
q = l2
res =ListNode(0)
r = res
s =0 #運ぶ
# もちろん、リードノードにしてresに戻すこともできます.次
while(p!=None or q!=None):
p_v =0if p==None else p.val
q_v =0if q==None else q.val
r_v =(p_v+q_v+s)%10
s =(p_v+q_v+s)//10
r.next =ListNode(r_v)
r = r.next
r.next = None
# なしでない場合は、トラバースを続行します。それ以外の場合は、トラバースを停止します。
p =p if p==None else p.next
q =q if q==None else q.next
if s !=0:
r.next =ListNode(s)
r = r.next
r.next = None
return res.next