题目二
:
解答:
1、判断链表的长度
2、如何增加节点(调用类)
3、进位问题,如果进位的下一个节点为空,则必须新添加一个节点
# Definition for singly-linked list.
# 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
"""
if self.getLength(l1) < self.getLength(l2): #保证l1永远比l2更长
l1, l2 = l2, l1
#将未处理的链表的头节点赋值给head1和head2
head1 = l1
head2 = l2
while(head2):#执行加法
head1.val += head2.val
head1 = head1.next
head2 = head2.next
head1 = l1 #将已经相加的链表的头节点赋值给head1
while(head1):
if head1.val > 9:
if head1.next:
head1.next.val += 1
head1.val -= 10
else:
head1.next = ListNode(1)
head1.val -= 10
head1 = head1.next
return l1
def getLength(self, l):#计算链表长度
length = 0
while(l):
length += 1
l = l.next
return length