【LeetCode(445)】
文章图片
通过代码:
typedef struct ListNode LNode;
typedef struct ListNode *LNode_Pointer;
struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2)
{
int flag=false;
LNode_Pointer head1,head2,head3,tail1,tail2,tail1_prior,tail2_prior;
head1=l1;
head2=l2;
head3=(LNode_Pointer)malloc(sizeof(LNode));
head3->next=NULL;
LNode_Pointer head1_temp=(LNode_Pointer)malloc(sizeof(LNode));
head1_temp->next=head1;
LNode_Pointer head2_temp=(LNode_Pointer)malloc(sizeof(LNode));
head2_temp->next=head2;
while(head1_temp->next!=NULL&&head2_temp->next!=NULL)
{
tail1_prior=head1_temp;
tail1=head1;
tail2_prior=head2_temp;
tail2=head2;
while(tail1->next!=NULL)
{
tail1_prior=tail1;
tail1=tail1->next;
}
while(tail2->next!=NULL)
{
tail2_prior=tail2;
tail2=tail2->next;
}LNode_Pointer q=(LNode_Pointer)malloc(sizeof(LNode));
if(flag==false)
{
if(tail1->val+tail2->val>=0&&tail1->val+tail2->val<10)
{
flag=false;
q->val=tail1->val+tail2->val;
q->next=head3->next;
head3->next=q;
tail1_prior->next=NULL;
free(tail1);
tail1=NULL;
tail2_prior->next=NULL;
free(tail2);
tail2=NULL;
}
else
{
q->val=tail1->val+tail2->val-10;
flag=true;
q->next=head3->next;
head3->next=q;
tail1_prior->next=NULL;
free(tail1);
tail1=NULL;
tail2_prior->next=NULL;
free(tail2);
tail2=NULL;
}
}
else
{
if(tail1->val+tail2->val>=0&&tail1->val+tail2->val<10)
{
flag=false;
q->val=tail1->val+tail2->val+1;
if(q->val>=10)
{
q->val=q->val-10;
flag=true;
}
q->next=head3->next;
head3->next=q;
tail1_prior->next=NULL;
free(tail1);
tail1=NULL;
tail2_prior->next=NULL;
free(tail2);
tail2=NULL;
}else
{q->val=tail1->val+tail2->val-10+1;
flag=true;
q->next=head3->next;
head3->next=q;
tail1_prior->next=NULL;
free(tail1);
tail1=NULL;
tail2_prior->next=NULL;
free(tail2);
tail2=NULL;
}
}}
while(head1_temp->next!=NULL)
{
tail1_prior=head1_temp;
tail1=head1;
while(tail1->next!=NULL)
{
tail1_prior=tail1;
tail1=tail1->next;
}
LNode_Pointer q=(LNode_Pointer)malloc(sizeof(LNode));
if(flag==true)
{
q->val=tail1->val+1;
if(q->val==10)
{
q->val=q->val-10;
flag=true;
}
else
flag=false;
}
else
{
q->val=tail1->val;
}
q->next=head3->next;
head3->next=q;
tail1_prior->next=NULL;
free(tail1);
tail1=NULL;
}
while(head2_temp->next!=NULL)
{
tail2_prior=head2_temp;
tail2=head2;
while(tail2->next!=NULL)
{
tail2_prior=tail2;
tail2=tail2->next;
}
LNode_Pointer q=(LNode_Pointer)malloc(sizeof(LNode));
if(flag==true)
{
q->val=tail2->val+1;
if(q->val==10)
{
q->val=q->val-10;
flag=true;
}
else
flag=false;
}
else
{
q->val=tail2->val;
}q->next=head3->next;
head3->next=q;
tail2_prior->next=NULL;
free(tail2);
tail2=NULL;
}
if(flag==true)
{
LNode_Pointer q=(LNode_Pointer)malloc(sizeof(LNode));
q->val=1;
q->next=head3->next;
head3->next=q;
}
return head3->next;
}
提交结果:
文章图片
推荐阅读
- 数据结构与算法|【算法】力扣第 266场周赛
- leetcode|今天开始记录自己的力扣之路
- Python|Python 每日一练 二分查找 搜索旋转排序数组 详解
- 【LeetCode】28.实现strstr() (KMP超详细讲解,sunday解法等五种方法,java实现)
- LeetCode-35-搜索插入位置-C语言
- leetcode python28.实现strStr()35. 搜索插入位置
- Leetcode Permutation I & II
- python|leetcode Longest Substring with At Most Two Distinct Characters 滑动窗口法
- LeetCode 28 Implement strStr() (C,C++,Java,Python)
- Python|Python Leetcode(665.非递减数列)