九章最重要的几个点

  (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的题,要么是排列,要么是组合

posted @ 2017-01-17 18:44  coldyan  阅读(241)  评论(0)    收藏  举报