手撕计算机科学相关,如算法、数据结构、系统设计、OO等。
我建议大家在markdown编辑器(如Typora)里手敲完程序,这样练习自己盲敲的能力,减少对编辑器的依赖,然后再拷到leetcode、nowcoder上验证。
链表的技巧:
- 反转:回文链表
- 快慢指针:中间节点、回文链表、环检测、环入口
- 哨兵/哑节点:合并链表,只要涉及到头节点需要变动又要返回新头节点的地方都要考虑应用哨兵/哑节点
- 窗口:删除倒数第N个节点、按K步长反转链表
栈的技巧:
- 需要往回找的场景就要考虑使用栈:比较含退格的字符串、括号匹配
- 把动态规划的结果用栈存起来,就能实现最大栈和最小栈