| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
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    #去掉空的头结点 |   
 
 
 
 |