https://leetcode.com/problems/add-two-numbers?envType=problem-list-v2&envId=rabvlt31
很簡單的一題,不知道為啥加在 Medium。
簡單來說,就是每個位數的相加,沒有難度,題目甚至已經是 reverse 的 list 了,直接從個位數加起來即可。比較要注意的是進位還有最後一個位數如果有進位的話答案的位數會比兩個相加的 list 長度更長。
class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
ListNode *ans_dummy = new ListNode(), *ans_cur;
ans_cur = ans_dummy;
ListNode *cur_l1 = l1, *cur_l2 = l2;
int cur_digit = 0;
int adv_digit = 0;
while(cur_l1 != nullptr && cur_l2 != nullptr){
cur_digit = (cur_l1->val + cur_l2->val + adv_digit) % 10;
adv_digit = (cur_l1->val + cur_l2->val + adv_digit) / 10;
ans_cur->next = new ListNode(cur_digit);
ans_cur = ans_cur->next;
cur_l1 = cur_l1->next;
cur_l2 = cur_l2->next;
}
while(cur_l1 != nullptr) {
cur_digit = (cur_l1->val + adv_digit) % 10;
adv_digit = (cur_l1->val + adv_digit) / 10;
ans_cur->next = new ListNode(cur_digit);
ans_cur = ans_cur->next;
cur_l1 = cur_l1->next;
}
while(cur_l2 != nullptr) {
cur_digit = (cur_l2->val + adv_digit) % 10;
adv_digit = (cur_l2->val + adv_digit) / 10;
ans_cur->next = new ListNode(cur_digit);
ans_cur = ans_cur->next;
cur_l2 = cur_l2->next;
}
if (adv_digit != 0) {
ans_cur->next = new ListNode(adv_digit);
ans_cur = ans_cur->next;
}
return ans_dummy->next;
}
};
Best Solution
TODO