您的位置:首页 > 其它

LeetCode: Add Two Numbers

2014-04-21 11:39 288 查看
思路:按照加法法则相加即可,尽量少使用额外空间,注意进位的处理,如果最后的进位还是1,说明需要增加一个节点,其值为1

class Solution {
public:
ListNode *addTwoNumbers(ListNode *l1, ListNode *l2){
int addBit = 0;
ListNode * firstList = l1, *secondList = l2, *h = l1, *p = l1;
while(firstList && secondList){
int ret = firstList->val + secondList->val + addBit;
addBit = ret / 10;
ret %= 10;
firstList->val = ret;
p = firstList;
firstList = firstList->next;
secondList = secondList ->next;
}
if(secondList)p->next = secondList;
while(secondList){
secondList->val += addBit;
addBit = secondList->val / 10;
secondList->val %= 10;
p = secondList;
secondList = secondList->next;
}
while(firstList){
firstList->val += addBit;
addBit = firstList->val / 10;
firstList->val %= 10;
p = firstList;
firstList = firstList->next;
}
if(addBit){
ListNode *temp = new ListNode(1);
p->next = temp;
}
return h;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: