給定兩個非空鏈表來表示兩個非負整數。位數按照逆序方式存儲,它們的每個節點只存儲單個數字。將兩數相加返回一個新的鏈表。 你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。 示例: 輸入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 輸出:7 -> 0 -> 8 原因:342 + 4 ...
給定兩個非空鏈表來表示兩個非負整數。位數按照逆序方式存儲,它們的每個節點只存儲單個數字。將兩數相加返回一個新的鏈表。 你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。
示例: 輸入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 輸出:7 -> 0 -> 8 原因:342 + 465 = 807
代碼實現:
1 class ListNode: 2 def __init__(self, x): 3 self.val = x 4 self.next = None 5 6 def addTwoNumbers(self, l1, l2): 7 """ 8 :type l1: ListNode 9 :type l2: ListNode 10 :rtype: ListNode 11 """ 12 val_sum = l1.val + l2.val 13 list_node = ListNode(val_sum % 10) 14 a = val_sum // 10 15 node = list_node 16 while True: 17 try: 18 l1 = l1.next 19 except: 20 pass 21 try: 22 l2 = l2.next 23 except: 24 pass 25 if not l1 and not l2: 26 break 27 elif not l1: 28 l1_val = 0 29 l2_val = l2.val 30 elif not l2: 31 l2_val = 0 32 l1_val = l1.val 33 else: 34 l1_val = l1.val 35 l2_val = l2.val 36 val_sum = l1_val + l2_val + a 37 temp_node = ListNode(val_sum % 10) 38 node.next = temp_node 39 node = temp_node 40 a = val_sum // 10 41 if a != 0: 42 node.next = ListNode(a) 43 return list_node
註:這是在網上做的練習題,記錄一下,有需要的時候方便自己查看。