题解 | 链表相加(一)
链表相加(一)
https://www.nowcoder.com/practice/521d83306d964c1188639033eb59621d
/** * struct ListNode { * int val; * struct ListNode *next; * ListNode(int x) : val(x), next(nullptr) {} * }; */ class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param l1 ListNode类 * @param l2 ListNode类 * @return ListNode类 */ ListNode* ListAdd(ListNode* l1, ListNode* l2) { ListNode dummy(0); ListNode *curr = &dummy; int carry = 0; while(carry || l1 || l2){ int val1 = l1? l1->val: 0; int val2 = l2? l2->val: 0; int value = val1 + val2 +carry; carry = value/10; //加int 表示循环内局部变量,一轮循环结束即销毁 value = value%10; //在循环内部声明了一个和外部同名的变量,内部变量会“遮蔽”外部变量,循环体内优先使用内部变量,外部变量不会被修改。 curr->next = new ListNode(value); curr = curr->next; l1 = l1 ? l1->next: nullptr; //更新处理的位 l2 = l2 ? l2->next: nullptr; } return dummy.next; } };