Leetcode面试经典150题-2.两数相加

news2024/11/14 14:00:15
2. 两数相加
给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。

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

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

 

示例 1:


输入:l1 = [2,4,3], l2 = [5,6,4]
输出:[7,0,8]
解释:342 + 465 = 807.
示例 2:

输入:l1 = [0], l2 = [0]
输出:[0]
示例 3:

输入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]
输出:[8,9,9,9,0,0,0,1]
 

提示:

每个链表中的节点数在范围 [1, 100] 内
0 <= Node.val <= 9
题目数据保证列表表示的数字不含前导零

解法都在代码里,不懂就留言或者私信

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    /**题目分析:这个题还是比较容易,应该属于简单题
    需要考虑的东西不多,因为题目本身就是给你的逆序的链表,我们按照从开始一直算下去,有进位就给上一位多个进位1就行
    不涉及链表的逆序问题,其他的东西我写在具体的代码的注释里 */
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        int carry = 0;
        /**结果链表的头节点 */
        ListNode head = null;
        /**结果链表遍历过的最后一个节点 */
        ListNode last = null;
        while(l1 != null && l2 != null) {
            /**进位之前的数 */
            int curSum = l1.val + l2.val + carry;
            /**当前节点的最终值(除了进位) */
            int curNum = curSum % 10;
            /**进位信息,其实就是有进位是1,没进位是0,没有其他的可能性 */
            carry = curSum / 10;
            ListNode curNode = new ListNode(curNum);
            if(head == null) {
                head = last = curNode;
            } else {
                /**跟之前的链表节点连接起来 */
                last.next = curNode;
                /**当前节点作为最后一个节点 */
                last = curNode;
            }
            /**切换到下个节点 */
            l1 = l1.next;
            l2 = l2.next;
        }
        /**上面的while退出的时候要么是两个都为null了,要么某个不为null,反正不会同时不为null,所以下面的while最终只能命中一个
        里面的逻辑几乎一样(和上面的while也几乎一样),实际编程中应该抽取成一个方法*/
        while(l1 != null) {
            int curSum = l1.val + carry;
             /**当前节点的最终值(除了进位) */
            int curNum = curSum % 10;
            /**进位信息,其实就是有进位是1,没进位是0,没有其他的可能性 */
            carry = curSum / 10;
            ListNode curNode = new ListNode(curNum);
            /**跟之前的链表节点连接起来 */
            last.next = curNode;
            /**当前节点作为最后一个节点 */
            last = curNode;
            l1 = l1.next;
        }
        while(l2 != null) {
            int curSum = l2.val + carry;
             /**当前节点的最终值(除了进位) */
            int curNum = curSum % 10;
            /**进位信息,其实就是有进位是1,没进位是0,没有其他的可能性 */
            carry = curSum / 10;
            ListNode curNode = new ListNode(curNum);
            /**跟之前的链表节点连接起来 */
            last.next = curNode;
            /**当前节点作为最后一个节点 */
            last = curNode;
            l2 = l2.next;
        }
        /**如果链表都过完了还有进位信息,新new一个节点作为最后一个节点 */
        if(carry != 0) {
            ListNode node = new ListNode(carry);
            last.next = node;
        }
        return head;
    }
}

运行结果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2038226.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

重塑视觉界限:探索InstantID,超越ReActor的下一代换脸技术!

马斯克与郭德纲&#xff0c;一位是相声界的顶流&#xff0c;一位是科技界的大咖。 想象一下&#xff0c;他们的形象融合&#xff0c;会是什么样&#xff1f; 最新推出的开源项目 —— InstantID 让这种“跨界融合”成为可能。 来瞧瞧&#xff0c;“马德纲”有惊艳到你吗&…

回归预测|基于麻雀优化深度神经网络的数据回归预测Matlab程序SSA-DNN 多特征输入单输出 含基础深度神经网络DNN

回归预测|基于麻雀优化深度神经网络的数据回归预测Matlab程序SSA-DNN 多特征输入单输出 含基础深度神经网络DNN 文章目录 前言回归预测|基于麻雀优化深度神经网络的数据回归预测Matlab程序SSA-DNN 多特征输入单输出 含基础深度神经网络DNN 一、SSA-DNN模型1. 麻雀优化算法&…

想发SCI,先写论文还是先选刊?手把手带你分析如何提高发表成功率!

点击关注&#xff1a;关注GZH【欧亚科睿学术】&#xff0c;GET完整版2023JCR分区列表&#xff01; 发SCI是先写论文还是先选刊 发SCI论文时&#xff0c;通常建议先选择合适的期刊再开始写论文。 先选刊的策略意味着你在撰写论文之前&#xff0c;先确定一个或多个可能投稿的期…

2021-11-08 51单片机2位秒表启动清零

缘由c51单片机&#xff0c;程序&#xff0c;仿真图&#xff0c;求帮助-编程语言-CSDN问答 #include "REG52.h"sbit K1 P1^0; sbit K2 P1^1; sbit K3 P1^2; sbit K4 P1^3; sbit P1_0P2^0; sbit P1_1P2^1; sbit P1_2P2^2; sbit P1_3P2^3; sbit P1_4P2^4; sbit P1_…

C++八股文(一)

&#x1f3f3;‍&#x1f308;C基础 &#x1f331;1.C特点 1. C 在 C 语言基础上引入了 面对对象 的机制&#xff0c;同时也 兼容 C 语言 。 2. C 有三大特性 &#xff08; 1 &#xff09;封装。&#xff08; 2 &#xff09;继承。&#xff08; 3 &#xff09;多态&#xff…

网站模板建站和定制网站哪个更适合中小企业?

通俗来说&#xff0c;网站建设有模板建设、定制建站两个门类。在聊聊网站建设多少钱之前&#xff0c;我们可以先来简单分析一下模板建站和定制建站的优缺点在哪。 一、模板建站 优势&#xff1a;1.极大看重性价比&#xff0c;价格优势会较高。 劣势&#xff1a;1.因是在已有的模…

Datawhale AI夏令营--从零入门多模态大模型数据合成Task1

从零入门多模态大模型数据合成 报名赛事注意事项 创建实例跑baseline(预计时间300分钟)改用无卡模式开机创建非指定镜像 下载赛事所需文件包下载模型,数据集以及依赖软件下载模型和相关数据集下载BLIP图片描述模型 数据处理与合成推理和评测打包输出运行结果提交结果 报名赛事 …

Open3D 计算点云的协方差矩阵(原理详细版)

目录 一、概述 1.1协方差矩阵的定义 1.2实现步骤 1.3应用 二、代码实现 1.1实现代码 2.2协方差应用案例 2.2.1主成分分析法的应用 2.2.2平面拟合 三、疑问解答 3.1为什么计算协方差矩阵要去质心&#xff1f; 3.1.1原因 3.1.2区别 Open3D点云算法汇总及实战案例汇总…

WordPress建站之头像及字体错误修正

目录 一、谷歌字体 二、头像网址 三、后续使用中的“坑” 网站建设好以后&#xff0c;会发现有些卡顿&#xff0c;网速好的环境感觉不明写&#xff0c;但是差的环境就难以忍受了。这是打开网页的控制台&#xff08;Console&#xff09;会发现有报错信息&#xff1a; 这些报错…

数组---怎么样定义和引用数组

一怎么定义数组 例 int a[10]; //定义了一个一维数组&#xff0c;数组名为a&#xff0c;此数组包含10个整型元素 所以我们了解到数组的基本定义为 类型符 数组名 [常量表达式] 定义数组可以包括常量和符号常量如 int [ 35 ];但是不能利用变量定义如 int n&#xff1b; …

数据结构(6_1_1)——图的基本概念

图的定义 图G由顶点集V和边集E组成&#xff0c;记为G(V,E),其中V(G)表示图G中顶点的有限非空集&#xff1b;E(G)表示图G中顶点之间的关系(边)集合。若V{v1,v2,.....,vn},则用|V|表示图G中顶点的个数&#xff0c;也称图G的阶&#xff0c; ,用|E|表示图G中的边的条数 注意&…

【产品那些事】The OX Active ASPM Platform

文章目录 前言关于OX Security产品理念 流程体验Complete Visibility&#xff1a;将安全无缝嵌入到SDLC中PBOMOSC&R coverageContextualized Prioritization&#xff1a;快速解决最关键的风险Accelerated Response&#xff1a;简化安全流程See Beyond the Code&#xff1a;…

idea vue项目删除node_modules时报文件损坏且无法读取,导致删除失败

解决办法&#xff0c;查看node_modules所在盘&#xff0c;右击点击属性-工具&#xff0c;点击检查驱动&#xff0c;查完后修复即可&#xff0c; 就能够成功删除损坏的文件了

实时降水、降雨量接口对接,预报未来2小时有没有下雨

可实现的效果图 接口请求地址&#xff1a; http://ykyrain.tianqiapi.com 请求示例&#xff1a; http://ykyrain.tianqiapi.com/?versionrain&appid17256853&appsecretYtFbK6VP&lng114.302953&lat30.585411 请求参数 参数名必选类型说明备注&#xff08;示…

[ 烧录教程 ]Phy6212-ST17H66快捷烧录调试-体验蓝牙烧写调试助手

目录 一、前言 二、任务要求 三、实现步骤 3.1 打开基本任务例程 3.2 编辑任务代码 3.3 通过蓝牙烧写调试助手查看效果 3.4 修改完善代码 3.5 继续烧写调试 四、总结 一、前言 基于Phy6212或ST17H66芯片的烧写的繁琐性&#xff0c;因此我将使用蓝牙调试助手完成本文中…

CentOS部署Oracle19c(rpm方式)

软件包下载地址 一共需要两个软件包 # oracle数据库企业版 oracle-database-ee-19c-1.0-1.x86_64.rpm# Oracle Database 19c的预安装RPM包&#xff0c;它主要用于在正式安装Oracle数据库之前准备系统环境 oracle-database-preinstall-19c-1.0-3.el7.x86_64.rpmhttps://yum.or…

图像复原算法

7.1 逆滤波 (Inverse Filtering) 介绍 逆滤波是一种基本的图像复原方法&#xff0c;用于从退化图像中恢复原始图像。它通过逆向应用退化过程中的滤波器来恢复图像。 原理 逆滤波假设图像在退化过程中受到线性且时不变的滤波器影响&#xff0c;并尝试通过逆向应用该滤波器来…

营销归因软件实战指南:提升营销ROI的关键步骤

在当今这个数据驱动的时代&#xff0c;营销归因已成为企业优化广告投放、提升营销回报率&#xff08;ROI&#xff09;不可或缺的工具。营销归因软件通过精准分析客户旅程中的每一个触点&#xff0c;帮助企业理解哪些营销活动真正驱动了转化&#xff0c;从而指导资源分配&#x…

有什么蓝牙耳机值得推荐一下吗?百元开放式耳机选购指南

在当下科技日新月异的时代&#xff0c;耳机已然融入我们的日常生活&#xff0c;成为不可或缺的存在。开放式耳机作为耳机界的新锐势力&#xff0c;凭借其别具一格的设计与显著优势&#xff0c;赢得了众多消费者的喜爱。 但是&#xff0c;当面对市场上琳琅满目的开放式耳机品牌与…

Linux静态进程和动态进程查看管理

1.静态进程的查看PS PPID&#xff1a;谁启动的父亲ID USER&#xff1a;运行进程的用户名称 PID&#xff1a;进程ID %CPU&#xff1a;CPU的占用比例占用资源 %MEM&#xff1a;内存使用的占用比例 VSZ&#xff1a;占用虚拟内存多少 RSS&#xff1a;占用实际内存多少 TTY:…