Leetcodeリンクリストアルゴリズム

2つの数値を加算

難易度:中型:リンクリスト


空でない2つのリンクリストは、2つの負でない整数を表すために指定されています。それらの中で、それらのそれぞれの数字は逆の順序で保存され、それらの各ノードは1つの数字しか保存できません。

これら2つの数値を加算すると、それらの合計を表す新しいリンクリストが返されます。

数字の0を除いて、これらの数字のどちらも0で始まらないと想定できます。

入力:(2-> 4-> 3)+(5-> 6-> 4)
出力:7-> 0-> 8
理由:342 + 465 = 807

問題解決のアイデア


2つのリストが同時にトラバースされ、ビットごとに追加され、キャリーが保持されます

コードの実装

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
# self.next = None class Solution: def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode: dummy = ListNode(0) cur = dummy carry = 0 while l1 or l2: num1 = l1.val if l1 else 0 num2 = l2.val if l2 else 0 sum = num1 + num2 + carry carry = sum // 10 cur.next = ListNode(sum%10) cur = cur.next l1 = l1.next if l1 else None l2 = l2.next if l2 else None if carry: cur.next = ListNode(carry) return dummy.next


著者:wzNoteの
リンクします。https://www.jianshu.com/p/8ea60c68cde7
出典:ジェーンの本が
著者によって著作権で保護されています。営利目的の複製については、作者に連絡して承認を得てください。非営利目的の複製については、出典を明記してください。

おすすめ

転載: www.cnblogs.com/xinghaiyige/p/12700369.html