1. 概述
2. 算法题
2.1 删除链表中的节点
- 请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点
- 解题思路
- 很简单,直接将待删除结点的上一个结点指向待删除结点的下一个结点即可
1 | /** |
2.2 删除链表的倒数第N个节点
- 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点
- 解题思路
- 双指针,一个提前走n+1步,第二个再与第一个一同前进,指导第一个走到尾,那么第二个指针所指向的结点的下一个结点就是要删除的节点
- 注意要新建立头结点,因为头结点也有可能被删除
1 | /** |
2.3 反转链表
- 反转一个单链表
- 解题思路
- 双指针思想
1 | /** |
2.4 合并两个有序链表
- 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的
- 解题思路
- 迭代
- 递归
1 | /** |
1 | class Solution { |
2.5 回文链表
- 请判断一个链表是否为回文链表
- 解题思路
- 双指针+反转
1 | /** |
2.6 环形链表
- 给定一个链表,判断链表中是否有环
- 为了表示给定链表中的环,我们使用整数
pos
来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果pos
是-1
,则在该链表中没有环 - 解题思路
- 双指针
1 | /** |