2 Add Two Numbers

簡單來說,給兩個用linkedlist 表示的數字,你需要加起來,其實就跟高精加法的作法是一樣的。

我們需要新建立一個鏈表頭,然後這裡需要考慮進位問題,其實進位非常簡單就是普通模擬,我們弄一個 進位的變量存下進位信息,他要不是0,要不是1。

就是做鏈表的題目,要時刻檢查當前的node是不是一個空的node,否則容易爆掉

ListNode* addTwoNumber(ListNode* l1, ListNode* l2){
    ListNode* dummy = new ListNode();
    ListNode* ans = dummy;
    int val1, val2, carry = 0;
    while(l1 || l2 || carry){
        val1 = val2 = 0;
        if(l1) val1 = l1->val1;
        if(l2) val2 = l2->val2;
        
        int tempAns = (val1 + val2 + carry)%10;
        int carry = (val1 + val2 + carry) / 10;
        
        ans->next = new ListNode(tempAns);
        ans = ans->next;
        if(l1)l1 = l1->next;
        if(l2)l2 = l2->next;
    } 
    return dummy->next;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值
>