Add Two Numbers
解法1
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
l3=ListNode(0)#创建一个新链表
res=l3
flag=0#进位符,初始化为0
while (l1 is not None) or (l2 is not None):
#若l1和l2有为空,为其创建新节点并将val初始化为0
if l1 is None:
l1=ListNode(0)
if l2 is None:
l2=ListNode(0)
sum=l1.val+l2.val#储存两数之和
#print(sum)
if flag+sum>=10:
res.next=ListNode(flag+sum-10)#若发生进位则保留个位
flag=1#进位标志设置为1,表示下一位需要+1
res=res.next#指向下一个节点
#print(res.val)
res.next=ListNode(flag)#将1先加到val上
else:
res.next=ListNode(flag+sum)#无进位直接赋值给当前指针指向的val
flag=0
res=res.next
#res=ListNode(flag)
#res=res.next
#指针后移
l1=l1.next
l2=l2.next
return l3.next
这里为了方便返回指针,从res.next开始赋值,所以返回的指针不是l3,而是l3.next