tags
date
type
status
slug
summary
category
password
icon
算法讲解011【入门】链表入门题目-两个链表相加
链表入门题目-两个链表相加大纲
前置知识:理解链表及其基本调整 建议:做过这个题的同学跳过
- 给你两个 非空 的链表,表示两个非负的整数
- 它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字
- 请你将两个数相加,并以相同形式返回一个表示和的链表
- 你可以假设除了数字 0 之外,这两个数都不会以 0 开头
链表题目在笔试、面试中的意义就是检验coding能力如何
更难的题目会在【必备】课程里讲述
视频笔记
- 这题就是考链表的调整,不用想着绕过题目
- 先准备两个链表
ans = null , cur = null
,定义一个carry = 0
表示s是否进位
- for 循环 终止条件, h1 和 h2都为空,每次h1和h2都会跳,到空不再跳
- 定义
sum
作为中间存储变量,val = sum %10
表示这一位数字实际结果(其实就是不管进不进为位,只要个位) ,carry=sum / 10
判断要不要进位 - 接着
if else
判断建表没有(ans
是否为空),如果为空, 创建一个ans
节点,存放val
ans
只有一开始两个数字相加后,作为头节点创建,后续不再使用- 否则让
curr.next
指向新的节点,并且这个节点存放新的val
,然后让curr
指向curr.next
- 如此循环,在循环判断里头,要注意如果有一个链表走完了,那么有一个 h 要为 0 ,另一个继续取节点
- 最后判断还有没有进位,如果有进位也要把它加上去,然后返回
ans
- 如图
- 作者:瑾墨
- 链接:https://www.gaoqilan.tech/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95/1071a31f-082e-8085-a498-d499d362669b
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。