题目:两数相加
首先明确思路,逐节点的将l1和l2相加,如果遇到需要进位的情况,就单独将所进的位数保存起来,并加到下一次的sum中去,然后在同一次循环中构造好相加后的链表
1ListNode* addTwoNumbers(ListNode* l1, ListNode* l2)
2{
3 ListNode dummy(0);
4 ListNode* curr = &dummy;
5
6 int carry = 0;
7 while(l1 || l2 || carry != 0)
8 {
9 int sum = carry;
10 if(l1)
11 {
12 sum += l1->val;
13 l1 = l1->next;
14 }
15 if(l2)
16 {
17 sum += l2->val;
18 l2 = l2->next;
19 }
20
21 // 进位
22 carry = sum / 10;
23 int digit = sum % 10;
24 curr->next = new ListNode(digit);
25 curr = curr->next;
26 }
27 return dummy.next;
28}