两数相加 II

作者: _阿南_ | 来源:发表于2020-04-14 10:55 被阅读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 每天进步一点点

    相关文章

      网友评论

        本文标题:两数相加 II

        本文链接:https://www.haomeiwen.com/subject/tvlzmhtx.html