您的位置:首页 > 其它

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;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: