题解 | #链表相加(二)#高精度加法模板

链表相加(二)

https://www.nowcoder.com/practice/c56f6c70fb3f4849bc56e33ff2a50b6b

最好理解的高精度加法模板:(不到30行)
class Solution {
public:
    ListNode* reverse(ListNode* head){
        ListNode* p = NULL, *q = head;
        while(q){
            auto r = q->next;
            q->next = p;
            p = q, q = r;
        }
        return p;
    }
    ListNode* addInList(ListNode* head1, ListNode* head2) {
        head1 = reverse(head1), head2 = reverse(head2);
        int t = 0; // 进位标致
        auto p = head1, q = head2;
        ListNode* dummy = new ListNode(-1);
        auto o = dummy;
        while(p || q || t){
            if(p) t += p->val, p = p->next;
            if(q) t += q->val, q = q->next;
            o->next = new ListNode(t % 10);
            t /= 10;
            o = o->next;
        }
        return reverse(dummy->next);
    }
};


#数据结构编程链表#
全部评论

相关推荐

点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务