LeetCode: Add Two Numbers

思路:按照加法法则相加即可,尽量少使用额外空间,注意进位的处理,如果最后的进位还是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;
    }
};


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值