力扣-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;
    }
};

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

相关推荐
wen__xvn4 分钟前
代码随想录算法训练营DAY3第一章 数组part02
java·数据结构·算法
一起养小猫15 分钟前
LeetCode100天Day8-缺失数字与只出现一次的数字
java·数据结构·算法·leetcode
梭七y18 分钟前
【力扣hot100题】(115)缺失的第一个正数
数据结构·算法·leetcode
嵌入式进阶行者24 分钟前
【算法】回溯算法的基本原理与实例:华为OD机考双机位A卷 - 乘坐保密电梯
c++·算法
McGrady-17533 分钟前
portal 在scene graph 中怎么生成?
算法·机器人
川西胖墩墩41 分钟前
智能体在科研辅助中的自动化实验设计
人工智能·算法
ouliten1 小时前
石子合并模型
c++·算法
weixin_461769401 小时前
5. 最长回文子串
数据结构·c++·算法·动态规划
补三补四1 小时前
XGBoost(eXtreme Gradient Boosting)算法的核心原理与底层实现技术
算法·集成学习·boosting
多打代码1 小时前
2026.1.2 删除二叉搜索树中的节点
开发语言·python·算法