LeetCode 2. 两数相加 --- 链表、模拟

目录

    • 1. 思路与算法
    • 2. 代码
    • 3. 复杂度分析

题目简述:给定两个非空的链表,表示两个非负整数,它们每位数字都是按照逆序方式存储的。要求将这两个数相加,并以相同形式返回一个表示和的链表。每个链表中的节点只能存储一位数字,并且除了数字 0 之外,这两个数都不会以 0 开头。

1. 思路与算法

使用迭代的方法来实现链表的相加。从两个链表的头节点开始,依次将对应位置的数字相加,并保留进位。在遍历完两个链表的所有节点之后,如果还存在进位,就需要在结果链表中追加一个节点来存储进位。

2. 代码

public ListNode addTwoNumbers(ListNode l1, ListNode l2) {// 创建一个虚拟头节点,用于存储结果链表ListNode dummyHead = new ListNode(0);ListNode p = l1, q = l2, curr = dummyHead;int carry = 0;//进位while (p != null || q != null) {// 获取当前节点的值,如果链表已经遍历完成,则默认为 0int x = (p != null) ? p.val : 0;int y = (q != null) ? q.val : 0;// 计算当前节点的和,包括进位int sum = x + y + carry;// 更新进位carry = sum / 10;// 创建新节点,存储当前节点的值curr.next = new ListNode(sum % 10);// 将指针 curr 向后移动一位curr = curr.next;// 移动指针 p 和 q,准备下一轮循环if (p != null) p = p.next;if (q != null) q = q.next;}// 处理最后的进位,如果有进位则在结果链表的末尾添加一个节点if (carry > 0)curr.next = new ListNode(carry);// 返回结果链表的头节点return dummyHead.next;}

3. 复杂度分析

  • 时间复杂度:遍历两个链表一次,时间复杂度为 O(max(m, n)),其中 m 和 n 分别是两个链表的长度。
  • 空间复杂度:除了存储结果的链表以外,只需要常数级别的额外空间,因此空间复杂度为 O(1)。

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

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

相关文章

openlayers WebGL裁剪图层,双图层拼接显示

本篇介绍一下使用openlayers WebGL裁剪图层,双图层拼接显示 1 需求 WebGL裁剪图层,双图层拼接显示 2 分析 图层prerender和postrender事件的使用 WebGL scissor方法的使用 scissor方法指定了一个裁剪区域,用来将绘图区域限制在其限定的盒…

【LeetCode】2187. 完成旅途的最少时间

1. 题意 2. 分析 二分法有一个关键特征:如果答案answer满足题意,那么对于任何整数i,如果有i>answer,那么i也会是一个存在的解,只不过不是最优解。 本题想要找出一个达到 totalTrips 趟需要的最少时间成本t&#x…

设计模式——多例模式(23种之外)

多例模式(Multiton Pattern)是一种特殊的设计模式,它属于创建型模式。与单例模式(Singleton Pattern)相比,多例模式允许一个类有多个实例,但是实例的数量是有限制的,并且这些实例在全…

【Linux】Ubuntu配置JDK环境、MySQL环境

一、 Ubuntu配置JDK环境 在Ubuntu系统中安装JDK 8可以通过以下步骤进行: 打开终端。更新包列表: sudo apt update安装OpenJDK 8: sudo apt install openjdk-8-jdk验证安装是否成功: java -version注:如果系统中安…

4.10、matlab生成脉冲序列:pulstran()函数

1、matlab生成脉冲序列简介 MATLAB生成脉冲序列通常涉及到使用MATLAB中的函数或编程来创建具有特定时间间隔和幅度的脉冲信号。脉冲序列通常用于数字信号处理、通信系统测试等应用中。 生成脉冲序列可以采用以下方法之一: 使用MATLAB中的函数,例如square()函数生成方波信号…

FreeRTOS 入门 知识

什么是FreeRTOS FreeRTOS 是一个轻量级的实时操作系统(RTOS),由 Richard Barry 在 2003 年开发,并且由亚马逊的 FreeRTOS 项目(一个由 Amazon Web Services (AWS) 支持的开源项目)进一步推动和发展。FreeR…

麒麟系统开发笔记(十四):在国产麒麟系统上编译libmodbus库、搭建基础开发环境和移植测试Demo

若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/140387947 长沙红胖子Qt(长沙创微智科)博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV…

Java--接口的定义与实现

1.Java的接口是一种约束 2.定义一些方法,让不同的人实现 3.方法都是 public abstract 4.常量都是public static final 5.接口不能被实例化: 接口中没有构造方法 6.接口可以多继承: 使用implements即可实现 7.必须要重写接口中的方法…

什么是稀疏化

稀疏化一词来源于条件计算理念。在稠密模型中,所有参数都发挥作用,而稀疏化可以只运行整个系统的某些部分。 前文提到 Shazeer 对机器翻译中的 MoE 进行了探索。条件计算(网络中只有某些部分处于活动状态)使得在不增加计算量的情况…

差分进化算法与遗传算法之间的区别

差分进化算法(Differential Evolution, DE)和遗传算法(Genetic Algorithm, GA)都是基于进化思想的优化算法,用于全局优化问题。尽管它们有许多相似之处,但在具体实现和应用上有明显的区别。 共同点 种群进…

Android系统上常见的性能优化工具

Android系统上常见的性能优化工具 以下是一些常见的性能优化工具,可用于辅助分析 Systrace 报告: Android Studio Profiler:它集成在 Android Studio 中,提供了 CPU、内存、网络等多方面的性能分析功能,能与 Systrace…

在家上网IP地址是固定的吗?

在数字化时代,互联网已成为我们日常生活中不可或缺的一部分。无论是工作、学习还是娱乐,我们都离不开网络的支持。然而,当我们在家中接入互联网时,可能会产生这样一个疑问:在家上网IP地址是固定的吗?下面一…

SpinalHDL之实用工具(下篇)

本文作为SpinalHDL学习笔记第十四篇,记录使用SpinalHDL的一些实用性语法工具。 SpinalHDL学习笔记总纲链接如下: SpinalHDL 学习笔记_spinalhdl blackbox-CSDN博客 目录: 6.存根(Stub) 7.Assertions 8.Report 9.S…

秋招Java后端开发冲刺——MyBatisPlus总结

一、 基本知识 1. 介绍 yBatis-Plus 是一个 MyBatis 的增强工具,在 MyBatis 的基础上增加了大量功能和简化操作,以提高开发效率。 2. 特点 无侵入:只做增强不做改变,引入它不会对现有项目产生影响。依赖少:仅仅依赖 …

探索 Java 8 新特性:函数式接口

Java 8 的发布为 Java 语言带来了许多重要的改进和新特性。其中,函数式接口(Functional Interface)是一个关键的概念,它与 Lambda 表达式紧密相关,为简化代码和提高可读性提供了强有力的支持。本文将深入探讨函数式接口…

数仓工具—Hive语法之正则表达式函数

正则表达式函数 之前我们介绍过like rlike regexp 这些关键字,都是和匹配有关的,今天我们介绍一下hive 的REGEXP_REPLACE 和REGEXP_EXTRACT 函数,背景是使用Hive正则表达式函数提取数字 在我的其他文章中,我们已经看到了如何使用Hive正则表达式从字符串中提取日期值。正则…

CV05_深度学习模块之间的缝合教学(1)

1.1 在哪里缝 测试文件?() 训练文件?() 模型文件?(√) 1.2 骨干网络与模块缝合 以Vision Transformer为例,模型文件里有很多类,我们只在最后…

Ubuntu 软件源404not found原因及解决办法

报错原因 404的意思是没有找到这个源。原因如下: 软件源链接有问题。可能是不符合你的架构的链接(如ubuntu x86架构使用了ubuntu arm架构的软件源链接),或者不符合当前版本的链接(ubuntu 22.04使用了ubuntu 24的链接…

huggingface 数据集和模型加速下载, hfdata 输出为json

如果有碰到huggingface的数据集下载慢,可以使用国内镜像代理下载,首先打开命令行,输入下面的环境变量: export HF_ENDPOINThttps://hf-mirror.com然后执行你自己的代码,比如: from datasets import load_…

嘉立创EDA隐藏地线或者

https://prodocs.lceda.cn/cn/pcb/side-panel-left-net/#%E9%A3%9E%E7%BA%BF