Terminal 4.

做题记录串

2024/11/03
loading

你在质疑自己和质疑判定中不断摇摆,历经千辛万苦得到了ac,最终承认了自己是个弱智的事实。

串? 看论坛看的
看能不能加个时间轴。。
n叉树层序遍历
看起来使用level的递归算法比传统的使用队列的迭代算法快,感觉写起来逻辑也更顺一点…

一、 链表类:考的是“指针漂移”的控制力

1. 反转链表 (LeetCode 206)

  • 核心逻辑:设置三个指针 prev, curr, next。每次让 curr.next 指向 prev,然后三个指针整体向右挪一步。
  • 考点:基础中的基础。面试官通常会追问你:能不能用递归写一遍?

2. 删除链表的重复节点 II (LeetCode 82)

  • 核心逻辑:注意这题是“删掉所有重复的”,比如 1->2->2->3 变成 1->3
  • 考点哑节点 (Dummy Node)。必须创建一个虚拟头节点指向 head,否则如果开头几个全是重复的,你就没法删了。

3. LRU 缓存 (LeetCode 146)

  • 核心逻辑哈希表 + 双向链表
  • 考点:为什么用双向链表?为了在 $O(1)$ 时间内把节点移动到头部(表示最近访问)。为什么用哈希表?为了在 $O(1)$ 时间内找到节点。这是大厂最爱考的系统设计题。

二、 树类:考的是“递归”与“层级”的理解

4. 前中序遍历写出后序遍历 (LeetCode 105 变形)

  • 核心逻辑:前序的第一个是根节点。在中序里找到这个根节点,左边就是左子树,右边就是右子树。然后递归处理。
  • 考点:分治法。你需要非常清楚如何计算左右子树在数组里的下标范围。

5. 二叉树层序遍历 (LeetCode 102)

  • 核心逻辑队列 (Queue)。BFS 广度优先搜索。
  • 考点:如何区分每一层?关键在于 while 循环里套一个 for 循环,for 的次数就是当前队列的大小 size

6. 二叉树剪枝 (LeetCode 814)

  • 核心逻辑:后序遍历。先问左子树能不能剪,再问右子树能不能剪,最后看自己:如果左右都剪了且自己是 0,那自己也得滚蛋。
  • 考点自底向上的处理思想。

三、 数组与栈:考的是“逻辑陷阱”与“空间优化”

7. 最长有效括号 (LeetCode 32 - Hard)

  • 核心逻辑 或者 动态规划
  • 考点:栈里存的是下标。每次遇到 ) 弹出栈顶。如果栈空了,说明这是一个新的起点;如果没空,当前长度就是 i - 栈顶元素

8. 寻找重复数 (LeetCode 287)

  • 核心逻辑快慢指针 (弗洛伊德判圈算法)
  • 考点:这题绝了!它把数组看成了一个带环的链表。索引是 $i$,值是 $nums[i]$,跳到下一个位置。如果有重复数,就像链表入环点一样,快慢指针一定会相遇。
  • 限制:不能修改原数组,空间 $O(1)$。所以你不能用之前说的“原地哈希”。

https://www.luogu.com.cn/problem/P1241?contestId=210604
https://www.luogu.com.cn/contest/210604#problems
https://www.luogu.com.cn/contest/210318#problems
https://www.luogu.com.cn/contest/208875#problems
https://www.luogu.com.cn/problem/P5490
2022年第十四届蓝桥杯国赛C/C++大学A组
A: 小蓝与钥匙 2167
B: 排列距离 2168
C: 内存空间 2170
D: 最大公约数 2172
E: owo 15 2176
F: 环境治理 2178
G: 选素数 2179
H: 替换字符 2180
I: 三角序列 2182
J: 括号序列树 2192

2023年第十四届蓝桥杯国赛C/C++大学A组
A: 圆上的连线 17094
B: 2023次方 17095
C: 切割 17096
D: XYZ 17097
E: 第K小的和 17098
F: 相连的边 17099
G: 01游戏 17100
H: 子串 17101
I: 树上的路径 17102
J: 迷宫探险 17103

CATALOG
  1. 1. 一、 链表类:考的是“指针漂移”的控制力
    1. 1.1. 1. 反转链表 (LeetCode 206)
    2. 1.2. 2. 删除链表的重复节点 II (LeetCode 82)
    3. 1.3. 3. LRU 缓存 (LeetCode 146)
  2. 2. 二、 树类:考的是“递归”与“层级”的理解
    1. 2.1. 4. 前中序遍历写出后序遍历 (LeetCode 105 变形)
    2. 2.2. 5. 二叉树层序遍历 (LeetCode 102)
    3. 2.3. 6. 二叉树剪枝 (LeetCode 814)
  3. 3. 三、 数组与栈:考的是“逻辑陷阱”与“空间优化”
    1. 3.1. 7. 最长有效括号 (LeetCode 32 - Hard)
    2. 3.2. 8. 寻找重复数 (LeetCode 287)