题解 | #链表相加(二)#
链表相加(二)
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; }