Leetcode 2 Add two Numbers
2015-12-14 23:39
417 查看
You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.
Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
Output: 7 -> 0 -> 8
Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
Output: 7 -> 0 -> 8
#include <iostream> #include <vector> #include <algorithm> using namespace std; struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) { } }; class Solution { public: /*ListNode* convert(ListNode* head) {//link reverse ListNode* cur=head; ListNode* next=cur->next; ListNode* pre=NULL; ListNode* tmp = NULL; while(next!=NULL) { cur->next = pre; pre = cur; tmp = next->next; next->next=cur; cur = next; next = tmp; } return cur; } int listLength(ListNode* head) {// the length of the link int cnt = 0; while(head!=NULL) { cnt++; head = head->next; } }*/ ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) { ListNode* h1 = l1; ListNode* ans = NULL; ListNode* h2 = l2; ans=h1; int cnt = 0; ListNode* pre = NULL; for(; h1 != NULL && h2 != NULL; h1 = h1->next, h2=h2->next) { pre=h1; h1->val += h2->val+cnt; cnt = h1->val/10; h1->val = h1->val%10; } ListNode *h = h1 == NULL ? h2 : h1; if(h != h1) { pre->next = h; } for(; h!=NULL; h=h->next) { pre = h; h->val += cnt; cnt = h->val/10; h->val %= 10; } if(cnt > 0) { pre->next = new ListNode(cnt); } return ans; } }; int main() { ListNode *h1 = new ListNode(1), *h2 = new ListNode(9); h2->next = new ListNode(9); Solution *s1 = new Solution(); ListNode *ans = s1->addTwoNumbers(h1, h2); while(ans!=NULL) { cout << ans->val << " "; ans = ans->next; } cout << endl; }
相关文章推荐
- Nginx 的启动、停止、平滑重启、信号控制和平滑升级
- Android学习笔记
- java基础之正则表达式
- High Performance Mysql 读书笔记——创建高性能索引
- leetcodeNim Game
- iOS中对数据的存储的一种方法--归档
- leetcode 1 Two Sum
- 数据结构-Java实现-链表回顾
- OpenCV3.0丢失Nonfree模块
- Java开发者必备的六款工具
- Essential Notes on Database(III) Normalization 范式 (I)
- 有吧友需要PDF的下载站点,好吧,我这边汇总一下
- Oracle 汉字在不同字符集下所占字节
- Github上如何取消fork别人的repository
- Android多媒体应用——通知的使用(Notification)
- oc中自定义结构体
- leetcodeMove Zeroes
- Github上如何取消fork别人的repository
- 每天一个linux命令--more/less
- 【随笔】聊一聊服务器的那些事儿