题解 | #链表相加(二)#
链表相加(二)
https://www.nowcoder.com/practice/c56f6c70fb3f4849bc56e33ff2a50b6b
/**
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param head1 ListNode类
* @param head2 ListNode类
* @return ListNode类
*/
typedef struct ListNode LN;
struct ListNode* addInList(struct ListNode* head1, struct ListNode* head2 )
{
int flag = 0;
LN* newhead = NULL;
int* arr1 = (int*)malloc(sizeof(int)*1000000);
int* arr2 = (int*)malloc(sizeof(int)*1000000);
LN* pmove1 = head1;
int num1 = 0;
LN* pmove2 = head2;
int num2 = 0;
while(pmove1)
{
arr1[num1++] = pmove1->val;
pmove1 = pmove1->next;
}
while(pmove2)
{
arr2[num2++] = pmove2->val;
pmove2 = pmove2->next;
}
num1--;
num2--;
while(num1>=0||num2>=0)
{
LN* newnode = (LN*)malloc(sizeof(LN));
int x = num1>=0?arr1[num1]:0;
int y = num2>=0?arr2[num2]:0;
int add = (x+y+flag)%10;
newnode->val = add;
newnode->next = newhead;
newhead = newnode;
if(x+y+flag>=10)
{
flag = 1;
}
else
{
flag = 0;
}
if(num1>=0)
{
num1--;
}
if(num2>=0)
{
num2--;
}
}
if(flag)
{
LN* newnode = (LN*)malloc(sizeof(LN));
newnode->next = NULL;
newnode->val = 1;
newnode->next = newhead;
newhead = newnode;
}
return newhead;
}

