Lintcode Add Two Numbers II
来源:互联网 发布:java web毕业论文 编辑:程序博客网 时间:2024/06/07 01:04
Example
Given 6->1->7 + 2->9->5. That is, 617 + 295.
Return 9->1->2. That is, 912.
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: /** * @param l1: the first list * @param l2: the second list * @return: the sum list of l1 and l2 */ void ListReverse(ListNode*& list) //List Reverse { if (list == NULL || list->next == NULL) //特殊情况 return; ListNode* prev = list, *p = list->next, *pnext = p->next; // 记录三个节点的位置 prev->next = NULL; while (p != NULL) { pnext = p->next; //记录下一位置 p->next = prev; //指针前指 prev = p; p = pnext; // 下一位置继续循环 } list = prev; // 首节点为原来的尾节点 } ListNode* Add(ListNode* l1, ListNode* l2) { ListNode* sum = NULL, *p1 = NULL, *pf = sum; // 先把所有的对应位置都进行相加 保存到sum 中 while (l1 != NULL && l2 != NULL) { if (sum == NULL) { sum = new ListNode(l1->val + l2->val); pf = sum; } else { pf->next = new ListNode(l1->val + l2->val); pf = pf->next; } l1 = l1->next; l2 = l2->next; } while (l1 != NULL) { if (sum == NULL) //sum is Null, sum = new listnode { sum = new ListNode(l1->val); pf = sum; } else { pf->next = new ListNode(l1->val); pf = pf->next; } l1 = l1->next; } while (l2 != NULL) { if (sum == NULL) { sum = new ListNode(l2->val); pf = sum; } else { pf->next = new ListNode(l2->val); pf = pf->next; } l2 = l2->next; } p1 = sum; bool flag = false; //进位记录 while (p1 != NULL) { if (flag == true) p1->val++; if (p1->val >= 10) { flag = true; p1->val -= 10; } else flag = false; if (flag == true && p1->next == NULL) { p1->next = new ListNode(1); flag = false; } p1 = p1->next; } return sum; } ListNode *addLists2(ListNode *l1, ListNode *l2) { // write your code here ListReverse(l1); ListReverse(l2); ListNode* out = Add(l1, l2); ListReverse(out); return out; } };
阅读全文
1 0
- Lintcode Add Two Numbers II
- LintCode - Add Two Numbers
- LintCode:Add Two Numbers
- Add Two Numbers II
- Add Two Numbers II
- Add Two Numbers II
- Add Two Numbers II
- 445. Add Two Numbers II
- [LeetCode]Add Two Numbers II
- Add Two Numbers II ---LeetCode
- 445. Add Two Numbers II
- LeetCode445. Add Two Numbers II
- 445. Add Two Numbers II
- Leetcode Add Two Numbers II
- 445. Add Two Numbers II**
- 445. Add Two Numbers II
- leetcode_middle_12_445. Add Two Numbers II
- 445. Add Two Numbers II
- Python selenium中一定要会用selenium等待的三种等待方式解读
- MySQL二进制日志
- Linux下安装erlang及rabbitmq
- 初探vim编辑器(一)
- 学习oracle的一些知识点记录
- Lintcode Add Two Numbers II
- HSSFWorkbook导出Excel
- 计算传入文件的大小
- centos5.8安装snmp服务
- RMAN 增量备份学习与实践
- 正则表达式
- VS2013安装破解教程
- Get和POST的区别
- OpenCV自学笔记20. 基于SVM和神经网络的车牌识别(四)