You are given two linked-lists representing two non-negative integers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.node
Example:
Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
Output: 7 -> 0 -> 8
Explanation: 342 + 465 = 807.git
從左至右同步遍歷2個鏈表,依次相加每一位的數字,注意處理進位的狀況便可。this
時間複雜度爲 O(n).code
# Definition for singly-linked list. class ListNode(object): def __init__(self, x): self.val = x self.next = None class Solution: def addTwoNumbers(self, l1, l2, c = 0): # Fill this in. result = ListNode(0) p = result addToNextPos = 0 while True: r = 0 if l1: r += l1.val l1 = l1.next if l2: r += l2.val l2 = l2.next r += addToNextPos if r >= 10: p.val = r - 10 addToNextPos = 1 else: p.val = r addToNextPos = 0 if l1 or l2: p.next = ListNode(0) p = p.next else: break return result l1 = ListNode(2) l1.next = ListNode(4) l1.next.next = ListNode(3) l2 = ListNode(5) l2.next = ListNode(6) l2.next.next = ListNode(4) result = Solution().addTwoNumbers(l1, l2) while result: print result.val, result = result.next # 7 0 8