从个位数开始相加,需要考虑进位。用count来记录需要进位的数值。这里需要注意的是在相加的过程中,新链表会一直往后遍历以至于找不到新链表的头,所以要做好保存工作,在该题中用pNew保存新链表的头部信息,其实该新链表的头部是从第二个节点开始的
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
count = 0
pNode1 = l1
pNode2 = l2
pTemp = ListNode(0)
pNew = pTemp
while pNode1 and pNode2:
val1 = pNode1.val
val2 = pNode2.val
res = val1 + val2 + count
count = res // 10
new_val = res % 10
pTemp.next = ListNode(new_val)
pTemp = pTemp.next
pNode1 = pNode1.next
pNode2 = pNode2.next
while pNode1:
val1 = pNode1.val
res = val1 + count
count = res // 10
new_val = res % 10
pTemp.next = ListNode(new_val)
if pNew is None:
pNew = pTemp
pTemp = pTemp.next
pNode1 = pNode1.next
while pNode2:
val2 = pNode2.val
res = val2 + count
count = res // 10
new_val = res % 10
pTemp.next = ListNode(new_val)
pTemp = pTemp.next
pNode2 = pNode2.next
if count > 0:
pTemp.next = ListNode(count)
PTemp = pTemp.next
return pNew.next