1. 程式人生 > >leetcode 2.兩數相加

leetcode 2.兩數相加

題目連結:傳送門
2. 兩數相加
題目描述提示幫助提交記錄社群討論閱讀解答
給定兩個非空連結串列來代表兩個非負整數,位數按照逆序方式儲存,它們的每個節點只儲存單個數字。將這兩數相加會返回一個新的連結串列。

你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。

示例:

輸入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
輸出:7 -> 0 -> 8
原因:342 + 465 = 807

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
# self.val = x # self.next = None class Solution(object): def addTwoNumbers(self, l1, l2): """ :type l1: ListNode :type l2: ListNode :rtype: ListNode """ tail = ListNode(0) p1 = l1 p2 = l2 head = tail cnt = 0
#cnt表示進位 # 二者公共部分 while p1 !=None and p2 !=None: sum = p1.val + p2.val + cnt cnt = int(sum/10) tail.next= ListNode(sum%10) tail = tail.next p1 = p1.next p2 = p2.next if p1 == None: p1 = p2 # 二者剩餘部分
while p1 !=None: sum =p1.val + cnt cnt = int(sum/10) tail.next = ListNode(sum%10) tail = tail.next p1 = p1.next if cnt!=0: tail.next = ListNode(cnt) tail= tail.next tail.next = None return head.next