leetcode-Add Two Numbers
来源:互联网 发布:我知天下事手抄报 编辑:程序博客网 时间:2024/05/01 12:23
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: int getLength(ListNode *head) { int len = 0; while(head) { len++; head=head->next; } return len; }; ListNode *addTwoNumbers(ListNode *l1, ListNode *l2) { int len1 = getLength(l1); int len2 = getLength(l2); if(len1==0) return l2; if(len2==0) return l1; ListNode *head, *tmp, *p; if(len1<len2) { tmp = l2; l2 = l1; l1 = tmp; } head = l1; while(l2) { l1->val += l2->val; l1 = l1->next; l2 = l2->next; } p = head; int carry = 0; while(p) { if((p->val+carry)>9) { p->val = (p->val+carry)%10; carry = 1; } else { p->val = p->val + carry; carry = 0; } tmp = p; p = p->next; } if(carry==1) tmp->next = new ListNode(1); return head; }};
这里进位是向后的,个位在前面
下面的代码是个位在后面的
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: int getLength(ListNode *head) { int len = 0; while(head) { len++; head=head->next; } return len; }; ListNode *addTwoNumbers(ListNode *l1, ListNode *l2) { int len1 = getLength(l1); int len2 = getLength(l2); if(len1==0) return l2; if(len2==0) return l1; ListNode *head, *tmp, *p; if(len1<len2) { tmp = l2; l2 = l1; l1 = tmp; } head = l1; int len = max(len1,len2) - min(len1,len2); while(len--) l1 = l1->next; while(l1) { l1->val += l2->val; l1 = l1->next; l2 = l2->next; } p = head; head = new ListNode(0); head->next = p; tmp = head; while(p) { if(p->val==9) { p = p->next; } else if(p->val<9) { tmp = p; p = p->next; } else { tmp->val++; p->val %= 10; while(tmp->next!=p) { tmp->next->val = 0; tmp = tmp->next; } tmp = tmp->next; p = p->next; } } if(head->val == 0) { p = head; head = head->next; delete p; } return head; }};
0 0
- LeetCode: Add Two Numbers
- LeetCode: Add Two Numbers
- [LeetCode]Add Two Numbers
- LeetCode Add Two Numbers
- Leetcode: Add Two Numbers
- LeetCode : Add Two Numbers
- LeetCode Add Two Numbers
- [LeetCode] Add Two Numbers
- Leetcode : Add Two Numbers
- 【leetcode】Add Two Numbers
- [LeetCode]Add Two Numbers
- leetcode Add Two Numbers
- LeetCode-Add Two Numbers
- [leetcode] Add Two Numbers
- [LeetCode] Add Two Numbers
- LeetCode - Add Two Numbers
- LeetCode | Add Two Numbers
- 【leetcode】Add Two Numbers
- ASP.NET : 重写页面输出内容的2种方式
- Android之HttpURLConnection
- CSS Reset
- ArcGIS教程:插值方法简介
- 无死角理解保存设置用户ID,设置用户ID位,有效用户ID,实际用户ID
- leetcode-Add Two Numbers
- HDU 4031 Attack
- Linux - VSftpd 服务器的安装与配置
- 如何写行业分析报告
- linux开机启动服务的修改与查看
- 在 yarn kill 后做些什么
- 私人必备知识
- jquery uploadify IE下使用刷新页面时出现"SCRIPT5007: 缺少对象"
- 第一行代码——Android