[leetcode] Add Two Numbers

You are given two linked lists representing two non-negative numbers. 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.

Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)

Output: 7 -> 0 -> 8

思路:思路很簡單,類似add binary, 逐位比較,過十進位

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution:
    # @return a ListNode
    def addTwoNumbers(self, l1, l2):
        newhead = ListNode(0)
        head1 = l1
        head2 = l2
        node = newhead
        carry = 0
        while head1 != None or head2 != None:
            val1 = head1.val if head1 != None else 0
            val2 = head2.val if head2 != None else 0
            val = val1 + val2 + carry
            node.next = ListNode(val % 10)
            carry = val / 10
            node = node.next
            head1 = head1.next if head1 != None else head1
            head2 = head2.next if head2 != None else head2
        if carry == 0:
            node.next = None
        else:
            node.next = ListNode(1)
            node.next.next =None
        return newhead.next
        
        


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章