栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

2.两数相加(python 链表ListNode)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

2.两数相加(python 链表ListNode)

两数相加 难点:进位的保存,next值的处理,python中链表节点值的添加方式r.next = ListNode(s%10)。 在本机pycharm上运行需要添加上ListNode函数
class ListNode():
    def __init__(self, val):
        if isinstance(val, int):
            self.val = val
            self.next = None

        elif isinstance(val, list):
            self.val = val[0]
            self.next = None
            cur = self
            for i in val[1:]:
                cur.next = ListNode(i)
                cur = cur.next

    def gatherAttrs(self):
        return ", ".join("{}: {}".format(k, getattr(self, k)) for k in self.__dict__.keys())

    def __str__(self):
        return self.__class__.__name__ + " {" + "{}".format(self.gatherAttrs()) + "}"


def addTwoNumbers(l1, l2):
    if isinstance(l1, list):
        l1 = ListNode(l1)
        l2 = ListNode(l2)
    re = ListNode(0)#创建一个空链表来保存结果
    r = re #r指向首指针
    carry = 0#创建一个变量来保存进位的结果
    re_next = 0#创建一个value_next 来保存进位的结果
    while(l1 or l2):
        x = l1.val if l1 else 0
        y = l2.val if l2 else 0
        s = x + y + carry
        carry = s//10
        r.next =  ListNode(s%10) #首指针的next值为s%0
        r = r.next #r指向第下一个值
        if(l1!=None):l1 = l1.next#移向下一个结点取值
        if(l2!=None):l2 = l2.next
    #循环结束之后,注意如果还有进位需要保存
    if(carry>0):
        r.next = ListNode(1)
    return re.next

print(addTwoNumbers([2,4,3],[5,6,4]))
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/866796.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号