LeetCode刷题笔记----P2两数相加
0.问题描述
You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order, and each of their nodes contains a single digit. Add the two numbers and return the sum as a linked list.
You may assume the two numbers do not contain any leading zero, except the number 0 itself.
1.链表
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode() : val(0), next(nullptr) {}
* ListNode(int x) : val(x), next(nullptr) {}
* ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
int num=0;
int flag=0;//判断有无进位
ListNode *result=nullptr,*tem=nullptr;
while(l1||l2){
num=0;
if(l1==nullptr) num+=0;
else num+=l1->val;
if(l2==nullptr) num+=0;
else num+=l2->val;
num+=flag;
flag=0;
if(num>9){
num=num-10;
flag=1;
}
if(result==nullptr)
{
result=tem=new ListNode(num);
}
else{
tem->next=new ListNode(num);//new即返回一个引用类型
tem=tem->next;
}
if(l1) l1=l1->next;
if(l2) l2=l2->next;
}
if(flag==1)
{
tem->next=new ListNode(1);//new即返回一个引用类型
tem=tem->next;
}
return result;
}
};