LeetCode(445)

【LeetCode(445)】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; }

提交结果:
LeetCode(445)
文章图片

    推荐阅读