2. Add Two Numbers

更新 發佈閱讀 4 分鐘
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

留言
avatar-img
留言分享你的想法!
avatar-img
星星在晚上的時候不睡覺
0會員
4內容數
資工系的勞碌人生