HISIOISIH 发表于 2018-9-30 15:02:45

python 链表

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    #去掉空的头结点

HISIOISIH 发表于 2018-9-30 22:38:18

哦哦 已经懂了
页: [1]
查看完整版本: python 链表