【leetcode】【单链表,queue】【2】Add Two Numbers
来源:互联网 发布:添加路由 linux 编辑:程序博客网 时间:2024/05/17 20:30
#include<iostream>#include<queue>using namespace std;struct ListNode {int val;ListNode *next;ListNode(int x) : val(x), next(NULL) {}};class Solution {public:ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {if (l1 == NULL)return l2;if (l2 == NULL)return l1;queue<int> que1;queue<int> que2;while (l1){que1.push(l1->val);l1 = l1->next;}while (l2){que2.push(l2->val);l2 = l2->next;}int carry = 0;//进位标志int sum = que1.front() + que2.front();//从最低位开始加que1.pop();que2.pop();if (sum > 9){carry = 1;sum %= 10;}ListNode* head = new ListNode(sum);ListNode* cur = head;ListNode* temp = NULL;while (!que1.empty()&&!que2.empty()){//从最低位开始加sum =carry+ que1.front() + que2.front();que1.pop();que2.pop();if (sum > 9){carry = 1;sum %= 10;}elsecarry = 0;temp = new ListNode(sum);cur->next = temp;cur = temp;}while (!que1.empty()){sum = carry + que1.front();que1.pop();if (sum > 9){carry = 1;sum %= 10;}elsecarry = 0;temp = new ListNode(sum);cur->next = temp;cur = temp;}while (!que2.empty()){sum = carry + que2.front();que2.pop();if (sum > 9){carry = 1;sum %= 10;}elsecarry = 0;temp = new ListNode(sum);cur->next = temp;cur = temp;}if (carry){ //最后有进位别忘temp = new ListNode(carry);cur->next = temp;cur = temp;}return head;}ListNode* createList(ListNode* head){int numOfNode;int value;cout << "please input number of listNode:";cin >> numOfNode;cin >> value;head = new ListNode(value);ListNode* cur = head;for (int i = 1; i < numOfNode; ++i){cin >> value;ListNode* temp = new ListNode(value);cur->next = temp;cur = temp;}return head;}void printNode(ListNode* head){ListNode* cur = head;while (cur){cout << cur->val << " ";cur = cur->next;}cout << endl;}};int main(){ListNode* head1 = NULL;ListNode* head2 = NULL;Solution solution;head1 = solution.createList(head1);solution.printNode(head1);head2 = solution.createList(head2);solution.printNode(head2);head1 = solution.addTwoNumbers(head1, head2);solution.printNode(head1);system("pause");return 0;}
0 0
- 【leetcode】【单链表,queue】【2】Add Two Numbers
- LeetCode 2 : Add Two Numbers ---- 单链表相加
- LeetCode 2 - Add Two Numbers
- LeetCode 2: Add Two Numbers
- Leetcode: Add Two Numbers (2)
- [leetcode 2] Add Two Numbers
- [Leetcode] 2 - Add Two Numbers
- LeetCode 2:《Add Two Numbers》
- LeetCode | #2 Add Two Numbers
- LeetCode 2 Add Two Numbers
- [Leetcode]2Add Two Numbers
- leetcode #2 Add Two Numbers
- leetcode-2 Add Two Numbers
- LeetCode 2 Add Two Numbers
- [leetcode] #2 Add Two Numbers
- LeetCode-2 Add Two Numbers
- LeetCode-2-Add Two Numbers
- Leetcode[2] Add Two Numbers
- 面试:实现内存复制函数
- 安装Sqlserver2005出现"性能监视器计数器要求"错误解决方法
- Java设计模式之单例模式
- Windows下的上帝模式
- 车牌定位--颜色分割
- 【leetcode】【单链表,queue】【2】Add Two Numbers
- soapUi发送报文错误导致原因CDATA嵌套问题
- 关于div+css设置居中问题
- 数字矩阵->图片
- android 更改整个应用字体
- OpenLayers 项目分析(三)-OpenLayers中定制JavaScript内置类
- 忠国:胜利一定会来赴约
- android sdk离线安装
- TCP 小记————三次握手四次挥手详解