算法学习:两数相加

给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。

请你将两个数相加,并以相同形式返回一个表示和的链表。

你可以假设除了数字 0 之外,这两个数都不会以 0 开头。

示例 1:

输入:l1 = [2,4,3], l2 = [5,6,4]

输出:[7,0,8]

解释:342 + 465 = 807.

示例 2:

输入:l1 = [0], l2 = [0]

输出:[0]

示例 3:

输入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]

输出:[8,9,9,9,0,0,0,1]

提示:

每个链表中的节点数在范围 [1, 100] 内

0 <= Node.val <= 9

题目数据保证列表表示的数字不含前导零

写的答案有问题,会直接报错,测试的时候没什么问题,但是又是在leetcode上跑不通,不是很理解,记录一下。

思路:

我的思路是先翻转两个数组,然后将翻转后的数组数字取出来拼接成整数,相加之后再将数字转成列表继续翻转,得到想要的序列。(看起来就很麻烦= =)

class Solution(object):
    def addTwoNumbers(self, l1, l2):
        """
        :type l1: ListNode
        :type l2: ListNode
        :rtype: ListNode
        """
        # 翻转l1,l2
        l1.reverse()
        l2.reverse()
        # 取出l1和l2并把它们拼接成整数
        l1 = [str(i) for i in l1]
        a = int(''.join(l1))
        l2 = [str(i) for i in l2]
        b = int(''.join(l2))
        # 加在一块后再把整数转为列表 最后再翻转
        c =a+b
        list_a = list(map(int, str(c)))
        list_a.reverse()
        return print(list_a)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值