2020-08-15 链表求和

1. 链表求和

反向求和,比较简单,从左到右扫描就可以

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
        ListNode *sum = new ListNode(0);
        ListNode *cur = sum;
        bool add_one = false;
        if(l1 == nullptr && l2 == nullptr)
            return sum;
        if(l1 != nullptr && l2 == nullptr)
            return l1;
        if(l1 == nullptr && l2 != nullptr)
            return l2;
        while(l1 != nullptr || l2 != nullptr){
            if(add_one)
                cur -> next = new ListNode(1);
            else
                cur -> next = new ListNode(0);
            cur = cur -> next;
            if(l1 != nullptr){
                cur -> val += l1 -> val;
                l1 = l1 -> next;
            }
            if(l2 != nullptr){
                cur -> val += l2 -> val;
                l2 = l2 -> next;
            }
            if(cur -> val > 9){
                cur -> val %= 10;
                add_one = true;
            }
            else add_one = false;
        }
        if(add_one)
            cur -> next = new ListNode(1);
        return sum -> next;
    }
};
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。