九章最重要的几个点
1
(1) coding style(要想bug free最有效方法是锻炼coding style):
a 函数名:名字取得长一点没关系,重点是要通过名字能一眼看出来函数做什么;
函数名不要文不对题,比如check..这种一般要返回boolean;
b 能用函数返回的子逻辑尽量写函数,增加代码可读性。
c 一定避免写重复代码,用函数代替。
(3) 面试正确做法:先解释方法,得到认可后再写(避免一开始思路不对)
2
(1)比O(n)更优的时间复杂度,几乎只能是O(logn)的二分法
(2)二分模版
3
(1)递归法:碰到二叉树的问题,就想想整棵树在该问题上的结果 和左右儿子在该问题上的结果之间的联系是什么
(2)非递归法:二叉树前中后序遍历,层序遍历
4
(1)dp四要素
(2)是dp问题的三个特征,不是dp问题的三个特征
(3)初始化一个二维的动态规划时 就去初始化第0行和第0列
(4)坐标型的状态定义
5
(1)如果不是跟坐标相关的动态规划,一般有N个数/字符,就开N+1个位置的数组 第0个位置单独留出来作初始化
(2)序列型和双序列型的状态定义
6
(1)链表基本操作:增删改查
(2)链表结构发生变化时,就需要 Dummy Node
7
碰到 Subarray 相关的问题,一定要想到Prefix Sum
8
BFS 的主要数据结构是 Queue
DFS 的主要数据结构是 Stack 千万不要搞反了! 很体现基础知识的扎实度!
9
碰到让你找所有方案的题,一定是DFS。90%DFS的题,要么是排列,要么是组合

浙公网安备 33010602011771号