LeetCode--Python解析【Add Two Number】

本文介绍了一种链表数值相加的方法,通过遍历链表取反后相加,再构建新链表返回结果。该方法较为繁琐,涉及多次数据类型转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:

方法:

用了比较笨的办法,先遍历两个链表,将链表的值取反,然后相加,再取反,再构建新的链表。

取反和求和的时候反复将数据类型在int和str之间转换,感觉过于繁琐。

最后构造新的链表的时候用到了p,可以理解为一个指针。

网上还有其他方法直接在链表中求和进位,感觉回比这种方法效率更高。

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

class Solution:
    
    def addTwoNumbers(self, l1, l2):
        """
        :type l1: ListNode
        :type l2: ListNode
        :rtype: ListNode
        """
        result = 0
        str_l1_value = str()
        str_l2_value = str()
        while l1 != None:
            value = str(l1.val)
            l1 = l1.next
            str_l1_value = str_l1_value + value
        l1_value = int(str_l1_value[::-1])
        while l2 != None:
            value = str(l2.val)
            l2 = l2.next
            str_l2_value = str_l2_value + value
        l2_value = int(str_l2_value[::-1])
        result = str(l1_value + l2_value)[::-1]
        l3 = ListNode(0)
        p = l3
        for i in range(len(result)-1):
            temp = ListNode(None)
            p.val = int(result[i])
            p.next = temp
            p = temp
        p.val = int(result[-1])
        return l3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值