九章算法:独孤九剑/202208面试常考 算法题

 

202208面试常考 算法题
lz自己遇到的高频题型有:
LRU,超高频,lz后面真的是闭着眼睛能写出来的程度了
DFS/BFS,最常见的算法,一定要掌握
Union-Find,多次考到
双指针/滑动窗口,套路就那么多,但是也很常见
dp相关的题我没有刷非常多,但是常见的股票买卖问题这种一定要吃透,也是高频题型了。lz在这三周的时间内基本每天花6小时左右刷题,从下班吃饭后搞到睡觉,中间应该只偷懒了一天。

 

不咋考:如果问连通性,静态就是 DFS,BFS,动态就 UF
不咋考:如果问依赖性就 topo sort
不咋考:DAG有向没环路图 的问题就 dfs+memo 
确实要小心但其实也不咋考:矩阵和 Array 通常都是 DP
确实要小心但其实也不咋考:问数量的通常都是 DP
确实要小心但其实也不咋考:问是否可以,也很有可能 DP

加了:求所有解的,基本 backtracking

Math.min Math.max保留最大最小值的思想很常用啊,我忘了
排序总是可以想一想的(collection排序,pq排序,水桶排序)
万事总可以想HashMap
找规律试试Stack

 

碰到二叉树的问题,就想想整棵树在该问题上的结果 和左右儿子在该问题上的结果之间的联系是什么

 

独孤九剑 —— 破剑式:比O(n)更优的时间复杂度 几乎只能是O(logn)的二分法

 

独孤九剑——破枪式
能够用 BFS 解决的问题,一定不要用 DFS 去做! 因为用 Recursion 实现的 DFS 可能造成 StackOverflow!
(NonRecursion 的 DFS 一来你不会写,二来面试官也看不懂) 

总结:先想最短路的BFS,再想所有路的DFS(backtracing)

 

独孤九剑 —— 破鞭式 碰到让你找所有方案的题,一定是DFS。 90%DFS的题,要么是排列,要么是组合

 

独孤九剑 —— 破索式 链表结构发生变化时,就需要 Dummy Node

 

独孤九剑 —— 破掌式 对于求 2 个变量如何组合的问题,可以循环其中一个变量,然后研究另外一个变量如何变化

 

独孤九剑 —— 破箭式 BFS 的主要数据结构是 Queue
DFS 的主要数据结构是 Stack 千万不要搞反了!很体现基础知识的扎实度!

 

posted @ 2020-06-28 08:11  苗妙苗  阅读(608)  评论(0编辑  收藏  举报