445. Add Two Numbers II

参考 Q2,用 decode - encode 的方式写,不做逆序。

2. Add Two Numbers

12/30/2020 Update:

把两个左对称的 linked list 变成右对称 ----> 可以用 stack,last in first out

两个 stack 加起来变回 linked list 的方法也不简单,注意 residual 和对 next 指针的处理。

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
        return self.encode(self.decode(l1) + self.decode(l2))
    
    def decode(self, node):
        number = 0
        while node:
            number *= 10
            number += node.val
            node = node.next
        return number
            
    def encode(self, number):
        tail = None
        if number == 0: return ListNode(0)
        while number:
            number, m = divmod(number, 10)
            cur = ListNode(m)
            cur.next = tail
            tail = cur
        return tail

Last updated

Was this helpful?