1. 程式人生 > >【Coding Girl】LeetCode刷題: 2.兩數相加 Add Two Numbers

【Coding Girl】LeetCode刷題: 2.兩數相加 Add Two Numbers

描述:

給定兩個非空連結串列來表示兩個非負整數。位數按照逆序方式儲存,它們的每個節點只儲存單個數字。將兩數相加返回一個新的連結串列。你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。

示例:

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

面對的問題:

Python 連結串列的構建和基本方法,結果Node練成連結串列

兩個輸入連結串列不等長的情況

注意進位

1. 純屬暴力也並不全對的辣雞解法,只能通過一部分測試用例,像[2] [8,9,9,9,9]這種一直進位的情況沒有解決,待晚些時候貼完全通過的程式碼。

# Definition for singly-linked list.
# class ListNode(object):
#     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
        """
        head =  ListNode(0)
        lr = head
        if l1 != None and l2 != None:
            jw = 0
           
            while l2!=None and l1 !=None:
                cur = l1.val + l2.val +jw
                jw = 0
                if cur <10:
                    data = cur
                else:
                    data = cur % 10
                    jw = 1
                tmp = ListNode(data)
                head.next = tmp
                head = tmp
                l1 = l1.next
                l2 = l2.next
                
            if l2 == None and l1 !=None:
                cur = l1.val + jw
                jw = 0
                if cur <10:
                    data = cur
                else:
                    data = cur % 10
                    jwn = 1
                tmp = ListNode(data)
                head.next = tmp
                head = tmp
                if jw==1:
                    jwn = ListNode(1)
                    head.next = jwn
                    head = jwn
                    jwn = 0
                head.next = l1.next
                jw = 0
                
            if l2 != None and l1 ==None:
                cur = l2.val + jw
                jw = 0
                if cur <10:
                    data = cur
                else:
                    data = cur % 10
                    jw = 1
                tmp = ListNode(data)
                head.next = tmp
                head = tmp
                if jw==1:
                    jwn = ListNode(1)
                    head.next = jwn
                    head = jwn
                head.next = l2.next
                jw = 0
                
            if l2 == None and l1 ==None and jw==1:
                end = ListNode(1)
                head.next = end
                
               
        return lr.next