【Coding Girl】LeetCode刷題: 2.兩數相加 Add Two Numbers
阿新 • • 發佈:2018-12-18
描述:
給定兩個非空連結串列來表示兩個非負整數。位數按照逆序方式儲存,它們的每個節點只儲存單個數字。將兩數相加返回一個新的連結串列。你可以假設除了數字 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