面试经典150题——两数相加

​Anything is worth "fighting for," and when you get it, don't doubt it, you deserve it, you deserve it.

a couple of palm trees that are next to each other

1. 题目描述

image-20240307164738539

2.  题目分析与解析

2.1 思路一

这个题目虽然标的是中等,但是大家看一下应该还是比较容易想到思路的,这不就相当于小学学的两数求和嘛,需要注意的就是进位的问题,其它没什么太过于复杂的,因此直接给出代码思路。

代码思路:

  1. 创建一个新的链表作为结果,一个指针指向结果链表的头部,创建一个变量存储进位

  2. 遍历两个链表,获取两个链表的值,计算当前位的值,更新进位,更新当前位的值,更新两个链表的指针

  3. 如果最后一位有进位,需要再创建一个节点

  4. 返回结果链表

优化

因为我们的返回结果新建了一个链表,如果想要更少的内存消耗,我们可以把结果直接在原来的某一个链表上进行修改。具体操作步骤见下代码实现。

3. 代码实现

3.1 思路一

image-20240308163643302

image-20240308163701111

优化

image-20240308173412844

image-20240308173343276

4. 相关复杂度分析

时间复杂度分析:

思路一:
  • 遍历两个链表需要 O(max(m, n)) 的时间,其中 m 和 n 分别是两个链表的长度。

  • 在遍历的过程中,进行加法操作和更新指针操作都是常数时间的操作,不影响总体时间复杂度。

  • 因此,思路一的时间复杂度为 O(max(m, n))。

思路二:
  • 在原链表上进行操作,遍历两个链表需要 O(max(m, n)) 的时间。

  • 在遍历的过程中,进行加法操作和更新指针操作都是常数时间的操作。

  • 因此,思路二的时间复杂度也是 O(max(m, n))。

空间复杂度分析:

思路一:
  • 创建了一个新的链表作为结果,其空间复杂度为 O(max(m, n)),其中 m 和 n 分别是两个链表的长度。

  • 在遍历的过程中,只使用了常数级别的额外空间。

  • 因此,思路一的空间复杂度为 O(max(m, n))。

思路二:
  • 在原链表上进行操作,没有额外创建新的链表,只进行了常数级别的额外空间操作。

  • 因此,思路二的空间复杂度为 O(1)。

综上所述,思路一和思路二的时间复杂度均为 O(max(m, n)),而思路一的空间复杂度为 O(max(m, n)),思路二的空间复杂度为 O(1)。

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

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

相关文章

储能系统---交流充电桩(三)

一、充电模式及其功能要求 关注公众号 --- 小Q下午茶 新国标在标准 GB/T 18487.1-2015《电动汽车传导充电系统 第1部分:通用要求》中规定了 4 种充电模式,下面将对这 4 种充电模式及其功能要求进行介绍。 1.1 、模式 1 模式 1 是指在充电系统中应使用…

《解密云计算:企业之选》

前言 在当今数字化时代,企业面临着巨大的数据处理压力和信息化需求,传统的IT架构已经无法满足日益增长的业务需求。在这样的背景下,越来越多的企业开始转向云计算,以实现灵活、高效和可扩展的IT资源管理和利用。 云计算 云计算是…

群智能优化算法:巨型犰狳优化算法(GAO)求解23个基准函数(提供MATLAB代码)

一、巨型犰狳优化算法 巨型犰狳优化算法(Giant Armadillo Optimization,GAO)由Omar Alsayyed等人于2023年提出,该算法模仿了巨型犰狳在野外的自然行为。GAO设计的基本灵感来自巨型犰狳向猎物位置移动和挖掘白蚁丘的狩猎策略。GAO…

同等学力申硕专业介绍——管理学硕士

同等学力申硕的专业很多。 目前有十三大门类,分别是医学、法学、管理学、工学、教育学、经济学、艺术学、文学、历史学、理学、哲学、农学、军事学等,每个大门类中都有很多的细分专业。 今天为大家介绍同等学力申硕专业——管理学。 专业介绍 管理学是…

7. 可集成性

第7章 可集成性 融合是生活的基本法则;当我们抵制它时,瓦解是我们内心和外部的自然结果。因此,我们得出了通过整合实现和谐的概念。 —Norman Cousins 诺曼考辛斯 根据韦氏词典,形容词可集成的意思是“能够被整合”。我们会给你一…

warning: #188-D: enumerated type mixed with another type

警告解释:枚举类型混合了其它的数据类型; 解决方法: 1:检查代码,是不是存在混用;; 2:结构体初始化为 0 报warning,不能将结构体的第一个变量,使用枚举类型&am…

DDoS和CC攻击的原理

目前最常见的网络攻击方式就是CC攻击和DDoS攻击这两种,很多互联网企业服务器遭到攻击后接入我们德迅云安全高防时会问到,什么是CC攻击,什么又是DDoS攻击,这两个有什么区别的,其实清楚它们的攻击原理,也就知…

Java零基础 - 数组的定义和声明

哈喽,各位小伙伴们,你们好呀,我是喵手。 今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一个人虽可以走的更快,但一群人可以走的更远。 我是一名后…

【Super数据结构】数据结构入门first step!了解些概念和时空复杂度计算!

🏠关于此专栏:Super数据结构专栏将使用C/C语言介绍顺序表、链表、栈、队列等数据结构,每篇博文会使用尽可能多的代码片段图片的方式。 🐎博主首页:Jammingpro 🚪归属专栏:Super数据结构 &#x…

C++ 篇 数组

数组是含有多个数据项的数据结构,并且这些数据项都具有相同的数据类型。这些数据项称为数组的元素,我们可以根据元素在数组中的位置来选取元素。 最简单的数组就是一维数组。数组元素在内存中是依次排列的,如下图所示: 声明一个…

穿越牛熊,股市的春天还有多远?

2023年,资本市场的严冬令无数投资者和机构投资者都感受到了前所未有的压力。VC/PE、公募基金、股权投资类公司等机构,在这一年里业绩普遍不佳,寒意弥漫。VC/PE机构的营业收入普遍呈现负增长,公募基金更是历史上首次连续两年亏损&a…

LLM 加速技巧:Muti Query Attention

MQA 是 19 年提出的一种新的 Attention 机制,其能够在保证模型效果的同时加快 decoder 生成 token 的速度。在大语言模型时代被广泛使用,很多LLM都采用了MQA,如Falcon、PaLM、StarCoder等。 在介绍MQA 之前,我们先回顾一下传统的…