Leecode 2. 兩數相加(Add Two Numbers)
阿新 • • 發佈:2018-12-16
題目:
給定兩個非空連結串列來表示兩個非負整數。位數按照逆序方式儲存,它們的每個節點只儲存單個數字。將兩數相加返回一個新的連結串列。 你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。 示例:
輸入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 輸出:7 -> 0 -> 8 原因:342 + 465 = 807
// 解題思路:先將兩個連結串列相加,然後再將結果進行按位進行分解,重建連結串列,進行返回新建的連結串列。
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) { ListNode *result = new ListNode(0); ListNode *tmp = result; int sum = 0; while(l1 || l2){ if(l1){ sum += l1->val; l1 = l1->next; } if(l2){ sum += l2->val; l2 = l2->next; } tmp->next = new ListNode(sum%10); sum /= 10; tmp = tmp->next; } if(sum) tmp->next = new ListNode(1); return result->next; } };