计算机低能儿从0刷leetcode | 2.两数相加

题目:2. 两数相加

解答:

整体思路:将两个链表对应位相加,得到结果链表的相应位。

细节:1.考虑到进位,本题进位只会是1,因此设置一个变量c记录上一位的进位,同时计算下一位的进位。

           2.考虑到两个链表长度不一致,只需要在循环中检测链表是否到达了末尾,如果到了末尾,那么其中一个加数为0。

           3.循环结束(即两个链表都到了末尾)之后,不要忘记检查是否有进位,如果有还需要再添加一个结点。

代码:

class Solution {
public:
    ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
int c=0;
     int a=0,b=0;
     ListNode* res=new ListNode(-1);
     ListNode* head=res;//头结点
     while(l1!=NULL || l2!=NULL){
         if(l1==NULL) a=0;
         else {
            a=l1->val;
            l1=l1->next;
         }
         if(l2==NULL) b=0;
         else {
            b=l2->val;
            l2=l2->next;
         }
         
         ListNode *cur=new ListNode((a+b+c)%10);
         head->next=cur;
         head=head->next;
         if(a+b+c>=10)c=1;
         else c=0;
     }
     if(c==1){
        ListNode *cur=new ListNode(1);
        head->next=cur;
     }
     head=res->next;
     return head;
    }
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我哋每一个人都要ga油啊

您的鼓励是支持我继续的极大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值