leetcode-华为专题-445. 两数相加 II
/** * 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) { vector<int> tmp1; vector<int> tmp2; while(l1){ tmp1.push_back(l1->val); l1 = l1->next; } while(l2){ tmp2.push_back(l2->val); l2 = l2->next; } int i = tmp1.size()-1; int j = tmp2.size()-1; int sum = 0; int cur = 0; int res = 0; vector<int> vec; while(i>=0||j>=0){ cout<<"i:"<<i<<" j: "<<j<<endl; if(i<0) sum = tmp2[j]; else if(j<0) sum = tmp1[i]; else sum = tmp1[i]+tmp2[j]; cur = (sum+res)%10; res = (sum+res)/10; vec.push_back(cur); i--; j--; } if(res>0) // 如果最后还有进位 vec.push_back(res); ListNode* H = new ListNode(); ListNode* L = H; for(int i = vec.size()-1; i >= 0; i--){ ListNode* tmp = new ListNode(vec[i]); L->next = tmp; L = L->next; } return H->next; } };