2. Add Two Numbers 大数运算
发布时间:2021-01-21 05:33:05 所属栏目:大数据 来源:网络整理
导读:题目地址 注意长度不等时的情况 class Solution { public : ListNode *addTwoNumbers(ListNode *l1,ListNode *l2) { vector int v1,v2,v3; while (l1 != NULL) { v1.push_back(l1-val); l1 = l1-next; } while (l2 != NULL) { v2.push_back(l2-val); l2 = l2
题目地址 注意长度不等时的情况 class Solution { public: ListNode *addTwoNumbers(ListNode *l1,ListNode *l2) { vector<int> v1,v2,v3; while (l1 != NULL) { v1.push_back(l1->val); l1 = l1->next; } while (l2 != NULL) { v2.push_back(l2->val); l2 = l2->next; } int i = 0,j = 0,k = 0; int carry = 0; while (i < v1.size() && j < v2.size()) { int now = (v1[i] + v2[j] + carry) % 10; carry = (v1[i] + v2[j] + carry) / 10; v3.push_back(now); i++; j++; } if (carry) { if (i < v1.size()) { while (i < v1.size()) { int now = (v1[i] + carry) % 10; carry = (v1[i] + carry) / 10; v3.push_back(now); i++; } } else if (j < v2.size()) { while (j < v2.size()) { int now = (v2[j] + carry) % 10; carry = (v2[j] + carry) / 10; v3.push_back(now); j++; } } if (carry) v3.push_back(carry); } else { while (i < v1.size()) v3.push_back(v1[i++]); while (j < v2.size()) v3.push_back(v2[j++]); } ListNode *p = new ListNode(v3[0]); ListNode *ans = p; for (int k = 1; k < v3.size(); ++k) { ListNode *temp = new ListNode(v3[k]); p->next = temp; p = temp; } return ans; } }; (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |