# Leetcode 2. Add Two Numbers ###### tags: `Leetcode(C++)` 題目 : https://leetcode.com/problems/add-two-numbers/ 。 想法 : 把L2直接加在L1上面,如果長度上L2如果比較長,那L1要新增新的節點去儲存L2的值,最後還要注意有沒有進位。 時間複雜度 : O(n)。 程式碼 : ``` /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *next) : val(x), next(next) {} * }; */ class Solution { public: ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) { ListNode *ans=l1,*tmp=new(ListNode); int borrow=0; while(l2 != nullptr){ if(l1 == nullptr){ l1=new(ListNode); tmp->next=l1; } cout << l1->val << " " << l2->val << endl; l1->val=l1->val+l2->val+borrow; if(l1->val >= 10) l1->val%=10,borrow=1; else borrow=0; tmp=l1; l1=l1->next; l2=l2->next; } while(l1!=nullptr){ l1->val=l1->val+borrow; if(l1->val >= 10) l1->val%=10,borrow=1; else borrow=0; cout << l1->val << endl; tmp=l1; l1=l1->next; } if(borrow == 1){ l1=new(ListNode); l1->val=1; tmp->next=l1; } return ans; } }; ```
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up