力扣-2.两数相加

题目描述

给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。

请你将两个数相加,并以相同形式返回一个表示和的链表。

你可以假设除了数字 0 之外,这两个数都不会以 0 开头。

cpp 复制代码
class Solution {
public:
    ListNode *addTwoNumbers(ListNode *l1, ListNode *l2) {
        ListNode *l = new ListNode(-1);
        ListNode *p = l;
        int flag = 0;
        while (l1 && l2) {
            if (l1->val + l2->val + flag < 10) {
                p->next = new ListNode(l1->val + l2->val + flag);
                flag = 0;
            } else {
                p->next = new ListNode(l1->val + l2->val + flag - 10);
                flag = 1;
            }
            l1 = l1->next;
            l2 = l2->next;
            p = p->next;
        }
        while (l1) {
            if (l1->val + flag < 10) {
                p->next = new ListNode(l1->val + flag);
                flag = 0;
            } else {
                p->next = new ListNode(l1->val + flag - 10);
                flag = 1;
            }
            l1 = l1->next;
            p = p->next;
        }
        while (l2) {
            if (l2->val + flag < 10) {
                p->next = new ListNode(l2->val + flag);
                flag = 0;
            } else {
                p->next = new ListNode(l2->val + flag - 10);
                flag = 1;
            }
            l2 = l2->next;
            p = p->next;
        }
        if (flag == 1) {
            p->next = new ListNode(1);
        }
        return l->next;
    }
};

小结:上面的写法有一些冗余,但是思路看起来比较清晰,也是一遍过了

相关推荐
CHANG_THE_WORLD2 小时前
金字塔降低采样
算法·金字塔采样
不知天地为何吴女士4 小时前
Day32| 509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯
算法
小坏坏的大世界4 小时前
C++ STL常用容器总结(vector, deque, list, map, set)
c++·算法
励志要当大牛的小白菜6 小时前
ART配对软件使用
开发语言·c++·qt·算法
qq_513970446 小时前
力扣 hot100 Day56
算法·leetcode
PAK向日葵7 小时前
【算法导论】如何攻克一道Hard难度的LeetCode题?以「寻找两个正序数组的中位数」为例
c++·算法·面试
爱喝矿泉水的猛男9 小时前
非定长滑动窗口(持续更新)
算法·leetcode·职场和发展
YuTaoShao9 小时前
【LeetCode 热题 100】131. 分割回文串——回溯
java·算法·leetcode·深度优先
YouQian77210 小时前
Traffic Lights set的使用
算法
go546315846511 小时前
基于深度学习的食管癌右喉返神经旁淋巴结预测系统研究
图像处理·人工智能·深度学习·神经网络·算法