首页 > 其他分享 >【LeetCode Hot 100】2. 两数相加

【LeetCode Hot 100】2. 两数相加

时间:2024-09-13 19:12:57浏览次数:1  
标签:ListNode tail next Hot l2 l1 100 null LeetCode

题目描述

题目手下留情给出的链表使用逆序表示加数,因此我们可以从链表头开始逐位相加。我总结了一下有几点需要注意:

  1. 显然加法需要注意进位,此外需要格外注意的是最后一位没有加数时,还需要考虑进位是否被置位,如果最后的进位为1,我们还需要创建一个新的节点。
  2. 当其中一个链表走完,需要注意要把另一个链表余下的部分继续走完。
// C++
class Solution {
public:
    ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
        ListNode* head = nullptr;
        ListNode* tail = nullptr;
        int c = 0;
        while (l1 || l2) {
            int val1 = l1 ? l1->val : 0;
            int val2 = l2 ? l2->val : 0;
            int s = c + val1 + val2;
            c = s / 10;
            if (head) {
                tail->next = new ListNode(s % 10);
                tail = tail->next;
            } else {
                head = tail = new ListNode(s % 10);
            }
            if (l1) {
                l1 = l1->next;
            }
            if (l2) {
                l2 = l2->next;
            }
        }
        if (c) {
            tail->next = new ListNode(c);
        }
        return head;
    }
};

// Java
class Solution {
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        ListNode head = null;
        ListNode tail = null;
        int c = 0;
        while (l1 != null || l2 != null) {
            int val1 = (l1 == null ? 0 : l1.val);
            int val2 = (l2 == null ? 0 : l2.val);
            int s = val1 + val2 + c;
            c = s / 10;
            if (head == null) {
                head = tail = new ListNode(s % 10);
            } else {
                tail.next = new ListNode(s % 10);
                tail = tail.next;
            }
            if (l1 != null) {
                l1 = l1.next;
            }
            if (l2 != null) {
                l2 = l2.next;
            }
        }
        if (c != 0) {
            tail.next = new ListNode(c);
        }
        return head;
    }
}

标签:ListNode,tail,next,Hot,l2,l1,100,null,LeetCode
From: https://www.cnblogs.com/louistang0524/p/18412742

相关文章

  • 【每日一题】LeetCode 2398.预算内的最多机器人数目(滑动窗口、数组、二分查找、前缀和
    【每日一题】LeetCode2398.预算内的最多机器人数目(滑动窗口、数组、二分查找、前缀和、堆(优先队列))题目描述给定两个整数数组chargeTimes和runningCosts,分别代表n个机器人的充电时间和运行成本。再给定一个整数budget,表示预算。我们需要计算在不超过预算的情况下,最......
  • msvcr100.dll丢失导致快吧迷你页异常?深度解析快吧迷你页msvcr100.dll文件丢失原因与修
    在使用快吧迷你页等软件时,有时会遇到“msvcr100.dll丢失”的错误提示,导致软件无法正常运行。这一问题主要由msvcr100.dll文件丢失或损坏引起,该文件是MicrosoftVisualC++2010RedistributablePackage中的一个重要组件,负责提供程序运行所需的运行时库支持。以下是对该问题的......
  • leetcode刷题day17|二叉树Part05(654.最大二叉树、617.合并二叉树、700.二叉搜索树中的
    654.最大二叉树构造树一般采用的是前序遍历,因为先构造中间节点,然后递归构造左子树和右子树。递归三步曲:1、传入参数,整数数组,数组的开始和结束,返回树的中间节点。2、终止条件:开始大于等于结束,即数组为空。3、递归逻辑:找到最大的元素,记录元素其下标,构建中间节点;递归构造......
  • 《星球大战:亡命之徒》游戏启动时崩溃弹窗“找不到mfc100.dll”该怎么办?星球大战亡命之
    当《星球大战:亡命之徒》游戏启动时崩溃弹窗提示“找不到mfc100.dll”,可以这样做:首先,从可靠的网站下载mfc100.dll文件,要注意与系统位数匹配。然后将其复制到系统的System32文件夹中。也可以尝试重新安装游戏相关组件或者修复系统,看是否能解决问题。本篇将为大家带来《星球大战:亡......
  • 金典120GB固态硬盘SM2258XT量产修复成功记录,附SM2258XT B16A开卡软件,VM29F01TEME1(2CA
    偶得一块二手的120G金典SSD,闲来无事搞一下量产,先上外观图片给大家看看:玩量产的一般都知道,找量产工具,肯定是要根据主控型号和闪存颗粒制程,来找相匹配的软件才行。因此我们拆开外壳,下图看到里面主控SM2258XT,颗粒丝印VM29F01TEME1-B16A,这块固态比较方便的地方是,单从丝印上就能看出是B1......
  • LeetCode算法—分治法
    思路:分治法的核心思想是“分而治之”,即将一个复杂的问题分成多个较小的子问题,分别求解这些子问题,然后将子问题的解合并,得到原问题的解。具体到求众数的问题上,分治法通过递归地将数组分成两部分,分别找出每一部分的众数,最后通过合并步骤来确定整个数组的众数。LeetCode169多数元素......
  • LeetCode 692.前K个高频单词
    LeetCode692.前K个高频单词C++思路......
  • 【LeetCode Hot 100】1. 两数之和
    题目描述显然,最简单和直接的想法是使用暴力枚举:使用双重循环枚举符合条件的下标对并返回。这种方法的时间复杂度是平方级别\(O(N^2)\)。对于每个确定的数x,我们需要找到target-x对应的下标,暴力枚举方法使用的是直接遍历,这个操作的复杂度是线性的,而如果我们使用哈希表将元素及其......
  • Python “集合” 100道实战题目练习,巩固知识、检查技术
     本文主要是作为Python中列表的一些题目,方便学习完Python的列表之后进行一些知识检验,感兴趣的小伙伴可以试一试,含选择题、判断题、实战题、填空题,答案在第五章。在做题之前可以先学习或者温习一下Python的列表,推荐阅读下面这篇文章:Python全网最全基础课程笔记(九)——集合......
  • 【北京迅为】itop-龙芯2k1000 sylixos 嵌入式实时系统烧写手册-第三章工具使用
     迅为itop-龙芯2k1000开发板  硬件配置:国产龙芯处理器,双核64位系统,板载2GDDR3内存,流畅运行Busybox、Buildroot、Loognix、QT5.12系统!接口:板载4路USBHOST、2路千兆以太网、2路UART、2路CAN总线、MiniPCIE、SATA固态盘接口、4G接口、GPS接口、WIFI、蓝牙、MiniHDMI......