鱼C论坛

 找回密码
 立即注册
查看: 2765|回复: 1

python 链表

[复制链接]
发表于 2018-9-30 15:02:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
leetcode上的一道题    问题在注释

class ListNode(object):           #节点类
    def __init__(self, x):
         self.val = x
         self.next = None

class Solution(object):
    def addTwoNumbers(self, l1, l2):
        """
        :type l1: ListNode
        :type l2: ListNode
        :rtype: ListNode
        """
        head, p1, p2= ListNode(0), l1, l2   #空的头结点
        tail = head #尾结点
        carry = 0;  #进位

        while p1 and p2:                          #遍历两条链公共部分
            num = p1.val + p2.val + carry
            if num > 9:
                num -= 10
                carry = 1
            else:
                carry = 0

                # 添加结点
            tail.next = ListNode(num)
            tail = tail.next
            # 移动两条链
            p1 = p1.next
            p2 = p2.next

        # 取两条链长的那条剩下的部分
        if p2: p1 = p2                                                                       #????这句是什么意思 为什么可以取长的那条剩下的部分?????
        while p1:
            num = p1.val + carry
            if (num > 9):
                num -= 10
                carry = 1
            else:
                carry = 0
            
            tail.next = ListNode(num)
            tail = tail.next
            p1 = p1.next

        # 如果最后还有进位,再分配一个结点
        if carry:
            tail.next = ListNode(1)
            tail = tail.next
        tail.next = None    # 将链表收尾
        return head.next    #去掉空的头结点
~SVI)8F{A4%0C$DIZ@L_@HH.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-9-30 22:38:18 | 显示全部楼层
哦哦 已经懂了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-22 14:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表