欢迎光临散文网 会员登陆 & 注册

《邻居》leetcode练习第二题(python)

2021-11-15 17:27 作者:心乡往之_  | 我要投稿

题目:

2. 两数相加

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

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

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

图片来源:LeetCode截图

解析:

运行条件:链表从头遍历到位,逐位相加

(1)需要保存进位

(2)需要保存结果

结束时:

(1)两个链表只要有一个非空就需要往后进行

(2)如果链表遍历结束,进位不为0,需要把进位项添加在链表后面

图片来源:LeetCode截图


代码:

class Solution:

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


        # 当前指针,结果链表

        result = curr = ListNode()

        # 进位项

        remainder = 0


        # 非空满足循环条件

        while l1 or l2 :

            x = l1.val if l1 else 0

            y = l2.val if l2 else 0


            total = x + y + remainder


            curr.next = ListNode(total%10)

            remainder = total//10


            # 🚩防止某一链表已经为空,空链表.next会报错

            if(l1!=None):l1=l1.next

            if(l2!=None):l2=l2.next

            curr = curr.next

        if remainder : curr.next = ListNode(remainder)

        return result.next

不足之处谢谢指正。

《邻居》leetcode练习第二题(python)的评论 (共 条)

分享到微博请遵守国家法律