type
status
date
slug
summary
tags
category
icon
password
状态
专注质量
预计(分钟)
开始时间
结束时间
本文部分参考了代码随想录中的内容,如有侵权请谅解。
🤔 从数组到链表
通过对数组部分的刷题积累,处理链表方面的问题就相对容易了。链表作为数据结构和算法中的另一个基本概念,大家都应该很熟悉了。因此,这部分问题大多数情况下只需要梳理一下思路就能解决,难度并不太大。
📝基础理论
链表类型
- 单链表
- 双链表
- 循环链表
区别仅仅在于每一个结点部分的指针不同。
链表的定义和存储方式
链表和数组不同,它们在内存中不是连续存储的,而是通过一系列指针相互连接,就像串在一起的羊肉串一样。
在解决算法问题时,一般不需要考虑链表的定义。但在面试过程中,可能需要自己定义链表。下面是一个定义链表的参考示例:
基本上搞明白构造函数怎么写就够用了。
🤗题型
移除链表元素
这是链表中最简单的问题之一。在这里,首次引入了虚拟头节点。使用虚拟头节点的意义在于,可以不用分情况考虑如何处理头节点,这样在后续的问题中都可以采用该思路进行求解。
设计链表
一道题考察所有链表中的常见操作
翻转链表
面试中经常考察的问题,设置两个指针很容易弄清楚原理,熟练后使用递归的方法更加清晰。
删除链表的倒数第n个结点
给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。
进阶:你能尝试使用一趟扫描实现吗?
示例 1:
输入:head = [1,2,3,4,5], n = 2 输出:[1,2,3,5] 示例 2:
输入:head = [1], n = 1 输出:[] 示例 3:
输入:head = [1,2], n = 1 输出:[1]
链表中有一种经典的出题方式,主要考察的是思路,相对来说代码编写比较简单。后续涉及到链表相交、环形链表的题目都有这种特点,思路比较固定,整理清楚后就很容易写出来。
参考文章
Written by Aryue,editted by Notion AI.
- 作者:Aryue
- 链接:www.aryue.com/article/af29ce5c-402a-4afb-b97a-9889c707063b
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章