其他分享
首页 > 其他分享> > 【Leetcode】No.2 两数相加(链表)

【Leetcode】No.2 两数相加(链表)

作者:互联网

文章参考了Leetcode中评论和题解,实现方法用Python3

题目描述:

给出两个非空的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储以为数字。
如果,我们将这两个数相加起来,则会返回一个新的链表来表示他们的和。
您可以假设除了数字0之外,这两个数都不会以0开头。
实例:
输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
输出: 7 -> 0 -> 8
原因:342 + 465 = 807

这个题是简单的链表问题。代码如下

class Solution:
    def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
        result = ListNode(0)
        carry = 0
        sum = 0
        result_point = result
        sum = 0
        result_point = result
        while (l1 or l2):
            if l1 is not None:
                num1 = l1.val
            else:
                num1 = 0
            if l2 is not None:
                num2 = l2.val
            else:
                num2 = 0
            sum = carry+ num1+ num2
            carry = sum // 10
            sum = sum % 10
            result_point.next = ListNode(sum)
            result_point = result_point.next
            if(l1!= None):
                l1 = l1.next
            if(l2!=None):
                l2 = l2.next
        if carry >0:
            result_point.next = ListNode(1)
        return result.next

其中,节点的代码块如下:

class ListNode:
    def __init__(self, x):
        self.val = x
        self.next = None

将数按逆序转换成链表模式如下(自己写的不知是否有错)

def transfer(num):
    re = num%10
    node = ListNode(0)
    xx = node
    while re :
        re = num %10
        num = num//10
        xx.next = ListNode(re)
        xx = xx.next
    return node.next

python中 // 表示整除,代码的实现思想是加法的步骤,实现的结果是用时96ms,消耗内存14MB。如有更好的方法将在以后更新

标签:ListNode,sum,next,链表,l2,result,l1,Leetcode,No.2
来源: https://blog.csdn.net/qq_44028801/article/details/99470789