当前位置: 首页 > news >正文

LeetCode 全题解笔记:两数相加(02)

两数相加(medium)

题目描述

  • 给你两个非空的链表,表示两个非负的整数。
  • 它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储 一位数字。
  • 请你将两个数相加,并以相同形式返回一个表示和的链表。
  • 你可以假设除了数字 0 之外,这两个数都不会以 0 开头。
  • 注意点:
    • 每个链表中的节点数在范围 [1, 100] 内。
    • 0 <= Node.val <= 9。
    • 题目数据保证列表表示的数字不含前导零。

举例说明

  • 示例 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]

面试解法

  • 关键词
    • 预先指针
    • 短链表补零
  • 思路
    • 对于链表问题,返回结果为头结点时,通常需要先初始化一个预先指针 pre,该指针的下一个节点指向真正的头结点 head。
    • 使用预先指针的目的在于链表初始化时无可用节点值,而且链表构造过程需要指针移动,进而会导致头指针丢失,无法返回结果。
    • 将两个链表看成是相同长度的进行遍历,如果一个链表较短则在前面补 0,比如 987 + 23 = 987 + 023 = 1010;
    • 每一位计算的同时需要考虑上一位的进位问题,而当前位计算结束后同样需要更新进位值;
    • 如果两个链表全部遍历完毕后,进位值为 1,则在新链表最前方添加节点 1。
  • 复杂度
    • 时间复杂度:O(max(m,n)),其中 m 和 n 分别为两个链表的长度,因为需要遍历两个链表的全部位置,而处理每个位置只需要 O(1) 的时间。
    • 空间复杂度:O(1),注意返回值不计入空间复杂度。
  • 代码
    class Solution {public ListNode addTwoNumbers(ListNode l1, ListNode l2) {/** 设立预先指针和遍历指针,初始进位值为 0*/ListNode pre = new ListNode(0);ListNode cur = pre;int carry = 0;while (l1 != null || l2 != null) {/** 在短链表末尾虚拟添加 0,使得两个链表等长*/int value1 = l1 == null ? 0 : l1.val;int value2 = l2 == null ? 0 : l2.val;int sum = value1 + value2 + carry;/** 更新进位值并将遍历指针后移*/carry = sum / 10;sum %= 10;cur.next = new ListNode(sum);cur = cur.next;/** 将链表指针后移*/if (l1 != null) {l1 = l1.next;}if (l2 != null) {l2 = l2.next;}}/** 处理最后产生进位的问题 */if (carry == 1) {cur.next = new ListNode(1);}return pre.next;}
    }
    

相关文章:

LeetCode 全题解笔记:两数相加(02)

两数相加&#xff08;medium&#xff09; 题目描述 给你两个非空的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照逆序的方式存储的&#xff0c;并且每个节点只能存储 一位数字。请你将两个数相加&#xff0c;并以相同形式返回一个表示和的链表。你可以假设除了数…...

网络工程师面试题(面试必看)(1)

作者简介:一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​​ 目录 前言 一.正题 1.TCP UDP协议的区别...

MySQL基础操作指南:第一篇

MySQL基础操作指南 一、数据库操作 1.1 概念阐述 基本操作语法结构创建数据库create database 数据库名 character set utf8;删除数据库drop database 数据库名选择数据库use 数据库名&#xff1b;查看当前选择的数据库select database();查看当前数据库包含的数据表show ta…...

C#中包含?的运算符使用汇总

总目录 文章目录总目录前言一、使用概述二、使用说明1.可空类型修饰符2.三目运算符3.空合并运算符4.NULL 检查运算符结语前言 本文将含有&#xff1f;运算符的各种使用进行汇总&#xff0c;方便系统性记忆和知识回顾。 一、使用概述 用法描述?可空类型修饰符?:三目运算符?…...

剑指 Offer 56 - I. 数组中数字出现的次数

剑指 Offer 56 - I. 数组中数字出现的次数 难度&#xff1a;middle\color{orange}{middle}middle 题目描述 一个整型数组 numsnumsnums 里除两个数字之外&#xff0c;其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n)&#xff0c;空间复杂度…...

MySQL事务日志

1.概述 事务有4种特性:原子性、一致性、隔离性和持久性。那么事务的四种特性到底是基于什么机制实现呢? 事务的隔离性由 锁机制 实现而事务的原子性、一致性和持久性由事务的 redo 日志和undo 日志来保证 REDO LOG 称为 重做日志&#xff0c;提供再写入操作&#xff0c;恢复…...

极速开发,无限可能,2023网易低代码大赛全新赛季启动

去年火爆的低代码大赛还犹在目&#xff0c;近800人用轻舟低代码平台畅享开发乐趣。这不&#xff0c;2023网易低代码大赛即刻启动&#xff0c;3月6日至3月27日限时开放报名&#xff0c;全新角逐&#xff0c;正式展开&#xff01;1\ 获胜者可得万元大奖、猪厂工作机会 /Low Code …...

C++ | 详细介绍缺省参数的作用

文章目录一、前言1、缺省参数概念2、缺省参数的使用规则二、全缺省参数【备胎是如何使用的♿】1、四种实参传递方式说明2、疑难细究三、半缺省参数【⭐】1、错误用法示范2、正确用法示范&#x1f525;实参缺省与形参缺省的混合辨析&#x1f525;3、小结四、缺省参数的实际应用 …...

【sdx62】sdx62分析代码中Serial Number的寄存器地址及获取Serial Number的方法

计算Serial Number寄存器地址 查看Serial Number ./boot_images/boot/QcomPkg/SocPkg/Library/XBLLoaderLib/boot_info_log.c /* Array of raw fuse addresses and names to be logged during boot loginitialization. Array must be null terminated. */ static struct boot_…...

MATLAB的快速入门

第一部分&#xff1a;基础知识常用命令&#xff1a;clc %清除命令行窗口 clear %清空工作区数据 cd %显示或改变工作目录 clf %清除图形窗口 help %打开帮助文档 save %保存内存变量到指定文件 hold %保持图形 close %关闭当前图窗 quit %退出变量&#x…...

Python中赋值、引用、深浅拷贝的区别和联系

文章目录一、对象的唯一id二、赋值三、可变对象和不可变对象四、函数的参数传递五、深拷贝和浅拷贝六、举个栗子6.1 不可变对象的拷贝6.2 可变对象的拷贝6.3 可变对象改变外层元素6.4 可变对象改变内层元素七、总结一、对象的唯一id python中的所有对象都有自己的唯一id&#…...

春招冲刺(十一):前端面试之网络总结

网络总结 Q1: GET和POST的请求的区别 应用场景&#xff1a;Get是一个幂等请求&#xff0c;一般用于请求资源。post不是幂等请求&#xff0c;一般用于修改资源。缓存&#xff1a;Get请求一般缓存&#xff0c;Post一般不缓存报文格式&#xff1a;Get请求体一般为空&#xff0c;…...

Mybatis插件

插件使用 动手实现plugin 首先我们需要实现一下这个Interceptor&#xff0c;其中plugin和setProperties方法可以不实现&#xff0c;plugin是因为已经有了完善的逻辑&#xff0c;而setProperties&#xff0c;如果不需要在intercept()中使用属性&#xff0c;也可以不设置。然后…...

计算机学科专业基础综合科目(408)

文章目录408 第一章 数据结构数据是客观事物的符号表示&#xff0c;是对现实世界的事物采用计算机能够识别&#xff0c;存储和处理的形式进行描述的符号的集合。 数据元素是数据的基本单位。一个数据元素由若干个数据项组成。数据项又成为简单数据项及复合数据项两种。简单数据…...

centos7安装教程

1.点击文件–新建虚拟机 2.根据图片一直下一步或者做一些改动 3. 点击自定义硬件&#xff0c;点击浏览选中下载好的ISO文件 4.配置完成后启动虚拟机 5.选择语言&#xff0c;中英文都可&#xff0c;按需求选择 6.进行设置目标位置&#xff0c;配置分区 7.选择网络和主机名 8.配置…...

Kafka 重平衡

Kafka 重平衡协调者RebalanceRebalance 条件Rebalance 避免Rebalance : 让单 Group 下所有的 Consumer 怎么消费订阅主题的所有分区Rebalance 时 , 所有 Consumer 要共同参与 (无法消费)&#xff0c;在协调者 (Coordinator) 协调下&#xff0c;完成订阅主题分区的分配 协调者…...

PTA:L1-022 奇偶分家、L1-023 输出GPLT、L1-024 后天(C++)

目录 L1-022 奇偶分家 问题描述&#xff1a; L1-023 输出GPLT 问题描述&#xff1a; 实现代码&#xff1a; L1-024 后天 问题描述&#xff1a; 实现代码&#xff1a; 简单题&#xff0c;没写题解&#xff0c;看代码就能看懂 L1-022 奇偶分家 问题描述&#xff1a; 给…...

IDEA插件开发入门.02

前言许久没更新IDEA插件开发系列了。最近刚好在汇总日常开发中常见的代码“异味”&#xff0c;共享文档复制黏贴略显麻烦&#xff0c;所以想着是否可以搞一个IDEA插件来帮忙收集常见代码&#xff0c;毕竟IDEA作为后端程序员必备的开发工具&#xff0c;显然会方便很多。于是&…...

如何用 23 种编程语言说“Hello World”

在编程的世界里&#xff0c;" Hello World " 往往是开发者开始学习一种新语言时写的第一个程序。这个简单的程序会将 “Hello World“ 输出在我们的屏幕上。看似很简单的行为&#xff0c;实际上对于每一个新学习编程语言的人来说&#xff0c;它代表着新的起点。那么&…...

【Linux快速入门】文件目录操作

文章目录概念1. Linux文件系统概述2. Linux文件目录结构3. Linux文件和目录操作3.1 文件操作3.1.1 创建文件3.1.2 复制文件3.1.3 移动文件3.1.4 删除文件3.1.5 查看文件3.1.6 输出指令3.1.7 >和>>指令3.2 目录操作3.2.1 创建目录3.2.2 复制目录3.2.3 移动目录3.2.4 删…...

字体反爬慢慢总结破解方式

什么是字体反爬 网页开发者自己创造一种字体&#xff0c;因为在字体中每个汉字都有其代号&#xff0c;那么以后再网页中不会直接显示这个文字的效果。而是显示其代号&#xff0c;因此即使获取了网页的文本内容。也只是获取到文字的代号&#xff0c;而不是文字本身。 简单来说&…...

Kafka 位移提交

Kafka 位移提交自动提交手动提交Consumer 的消费位移 : 记录 Consumer 下一条消息的消费位移 如 : Consumer 已消费 5 条消息 (位移: 0 - 4) , 此时 Consumer 位移 5 : 指向下一条消息的位移 提交位移 (Committing Offsets) : Consumer 向 Kafka 汇报位移数据 Consumer 能同…...

kubernetes--监控容器运行时:Falco

目录 Falco介绍 Falco架构 Falco的安装 告警规则示列 威胁场景测试&#xff1a; 监控容器创建的不可信任进程&#xff08;自定义规则&#xff09; Falco支持五种输出告警方式falco.yaml&#xff1a; Falco告警集中化展示&#xff1a; Falco介绍 Falco是一个Linux安全工具…...

HTTP协议详解(上)

目录 前言&#xff1a; 认识URL HTTP协议方法 通过Fiddler抓包 GET和POST之间典型区别 header详解 HTTP响应状态码 常见状态码解释 状态码分类 HTTP协议报文格式 小结&#xff1a; 前言&#xff1a; HTTP协议属于应用层协议&#xff0c;称为超文本传输协议&#xff…...

java性能-原生内存-内存分析

原生内存最佳实践 内存占用 jVM使用的原生内存和堆内存总和就是一个应用程序的总内存——操作系统角度 jvm启动时候加载的类路径下的jar文件相关的内存和系统其他进程共享资源的可能 测量内存占用 线程是个例外——每当创建一个线程操作系统都会分配一些原生内存存储线程栈…...

c++类与对象

&#x1f436;博主主页&#xff1a;ᰔᩚ. 一怀明月ꦿ ❤️‍&#x1f525;专栏系列&#xff1a;线性代数&#xff0c;C初学者入门训练&#xff0c;题解C&#xff0c;C的使用文章 &#x1f525;座右铭&#xff1a;“不要等到什么都没有了&#xff0c;才下定决心去做” &#x1…...

Java并发编程与API详解

文章目录前言操作系统——进程和线程进程进程组成进程状态进程控制进程创建进程终止进程阻塞和唤醒进程通信线程线程组成线程状态线程控制线程的实现方式用户线程内核线程混合方式CPU调度调度的层次调度的实现调度器调度的时机、切换与过程进程调度的方式闲逛进程两种线程的调度…...

【冲刺蓝桥杯的最后30天】day5

大家好&#x1f603;&#xff0c;我是想要慢慢变得优秀的向阳&#x1f31e;同学&#x1f468;‍&#x1f4bb;&#xff0c;断更了整整一年&#xff0c;又开始恢复CSDN更新&#xff0c;从今天开始更新备战蓝桥30天系列&#xff0c;一共30天&#xff0c;如果对你有帮助或者正在备…...

大厂与小厂招人的区别,看完多少有点不敢相信

前两天在头条发了一条招人的感慨&#xff0c;关于大厂招人和小公司招人的区别。 大厂&#xff1a;有影响力&#xff0c;有钱&#xff0c;能够吸引了大量的应聘者。因此&#xff0c;也就有了筛选的资格&#xff0c;比如必须985名校毕业&#xff0c;必须35岁以下&#xff0c;不能…...

前端ES5对象特性

ES5对象特性 对象和函数的原型 JS中每一个对象都有一个特殊的内置属性&#xff0c;这个特殊的对象可以指向其他的对象 我们通过引用对象的属性key来获取一个value时&#xff0c;它会触发 Get 的操作首先检查该对象是否有对应的属性&#xff0c;如果有的话就使用对象内的如果…...