算法提高之LeetCode刷题数据结构和算法分析

两数相加 II

2020-04-14  本文已影响0人  _阿南_

题目:

给你两个 非空 链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。
你可以假设除了数字 0 之外,这两个数字都不会以零开头。
进阶:
如果输入链表不能修改该如何处理?换句话说,你不能对列表中的节点进行翻转。

示例:
输入:(7 -> 2 -> 4 -> 3) + (5 -> 6 -> 4)
输出:7 -> 8 -> 0 -> 7

题目的理解:

链表表示整数的每一位,获取出来组成一个整数。两个整数相加等到A。
将A转成数组,倒序后存在链表。

python实现

from typing import List

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


class Solution:
    def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:

        def nodeToValue(node: ListNode) -> int:
            result = 0
            
            while node is not None:
                result = result * 10 + node.val
                
                node = node.next
            
            return result
        
        value = list(str(nodeToValue(l1) + nodeToValue(l2)))
        value.reverse()
        
        current = ListNode(value[0])
        value.pop(0)
        
        for num in value:
            node = ListNode(num)
            node.next = current
            
            current = node
        
        return current

想看最优解法移步此处

提交

哈哈

每天被困难难度折磨的不像人样了,最后问题都转化成了数学问题,数学知识又忘记的差不多了,尴尬啊

// END 每天进步一点点

上一篇下一篇

猜你喜欢

热点阅读