lintcode-链表求和
2018-03-30 23:07
239 查看
http://www.lintcode.com/zh-cn/problem/add-two-numbers/
两个链表求和,我们只需要模仿CPU里的加法器,设置一个S位,一个C位进位即可/**
* Definition of singly-linked-list:
* class ListNode {
* public:
* int val;
* ListNode *next;
* ListNode(int val) {
* this->val = val;
* this->next = NULL;
* }
* }
*/
class Solution {
public:
/**
* @param l1: the first list
* @param l2: the second list
* @return: the sum list of l1 and l2
*/
ListNode * addLists(ListNode * l1, ListNode * l2) {
int c = 0, s = 0;
ListNode *p = l1, *q = l2, *result = new ListNode(0), *a = nullptr;
a = result;
while(p || q){
s = c;
if(p){
s += p->val;
p = p->next;
}
if(q){
s += q->val;
q = q->next;
}
if(s >= 10){
s %= 10;
c = 1;
}else{
c = 0;
}
a->next = new ListNode(s);
a = a->next;
}
if(c){
a->next = new ListNode(c);
}
return result->next;
}
};
两个链表求和,我们只需要模仿CPU里的加法器,设置一个S位,一个C位进位即可/**
* Definition of singly-linked-list:
* class ListNode {
* public:
* int val;
* ListNode *next;
* ListNode(int val) {
* this->val = val;
* this->next = NULL;
* }
* }
*/
class Solution {
public:
/**
* @param l1: the first list
* @param l2: the second list
* @return: the sum list of l1 and l2
*/
ListNode * addLists(ListNode * l1, ListNode * l2) {
int c = 0, s = 0;
ListNode *p = l1, *q = l2, *result = new ListNode(0), *a = nullptr;
a = result;
while(p || q){
s = c;
if(p){
s += p->val;
p = p->next;
}
if(q){
s += q->val;
q = q->next;
}
if(s >= 10){
s %= 10;
c = 1;
}else{
c = 0;
}
a->next = new ListNode(s);
a = a->next;
}
if(c){
a->next = new ListNode(c);
}
return result->next;
}
};
相关文章推荐
- LintCode | 167. 链表求和
- 链表求和(LintCode)
- 链表求和 II-LintCode
- LintCode 链表求和
- lintcode ----链表求和
- lintcode-221-链表求和 II
- LintCode-第168题 链表求和
- 链表求和-LintCode
- 链表求和(LintCode)
- python_lintcode_167链表求和
- LintCode【简单】167. 链表求和 。代码及思路
- 链表求和-LintCode
- LintCode-[中等] 221. 链表求和 II
- LintCode 第167题目 链表求和
- [LintCode]167.链表求和
- LintCode_167_链表求和
- lintcode,167,链表求和
- [Lintcode] #167 链表求和
- lintcode-167-链表求和
- lintcode-链表求和