提交代码:
class Solution:
def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
temp=ListNode(0) #创建一个新链表
l3=temp #将temp头部赋予l3
a=0
while l1!=None or l2!=None or a!=0:
if l1!=None: #如果l1不空,将a与指向l1数据相加,并l1向后移动
a+=l1.val
l1=l1.next
if l2!=None: #同理
a+=l2.val
l2=l2.next
temp.next=ListNode(a%10) #临时链表下一个结点即是a除以10的模
temp=temp.next #指针后移
a=a//10 #a除以10,也就是a进位的数字
return l3.next
运行测试代码:
class ListNode(object):
def __init__(self, x):
self.val = x
self.next = None
class Solution:
def addTwoNumbers(self,l1, l2):
temp=ListNode(0)
l3=temp
a=0
while l1!=None or l2!=None or a!=0:
if l1!=None:
a+=l1.val
l1=l1.next
if l2!=None:
a+=l2.val
l2=l2.next
temp.next=ListNode(a%10)
temp=temp.next
a=a//10
return l3.next
def printList(l):
while(True):
print(l.val)
if l.next is not None:
l = l.next
else:
print()
break
if __name__ == '__main__':
# 342 + 465 = 807
l1_1 = ListNode(3)
l1_2 = ListNode(4)
l1_3 = ListNode(2)
l1_1.next = l1_2
l1_2.next = l1_3
l2_1 = ListNode(4)
l2_2 = ListNode(6)
l2_3 = ListNode(5)
l2_1.next = l2_2
l2_2.next = l2_3
l3 = Solution().addTwoNumbers(l1_1, l2_1)
printList(l3)
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
if(!l1) return l2;
if(!l2) return l1;
int add=0,tmp;
ListNode *l3=new ListNode(0),*p3=l3,*p1=l1,*p2=l2;
while(p1||p2||add){
tmp=add;
if(p1){
tmp+=p1->val;
p1=p1->next;
}
if(p2){
tmp+=p2->val;
p2=p2->next;
}
add=tmp/10;
tmp=tmp%10;
p3->next=new ListNode(tmp);
p3=p3->next;
}
return l3->next;
}
};