一 起因:
(1)你是否有过这样的尴尬经历:明明昨天研究很熟悉的技术,今天却不能很好的领导讲解?
(2)你是否有过这样的尴尬处境:明明之前做好的项目,过一段时间竟然把它统统忘记?
(3)你是否有过这样的汗颜情景:自己非常熟悉的技术,突然一下子被一个爱刨根问题的”无招数的江湖小子“,给问的自己不知道如何回答?
(4)你是否有过这样的纠结状况:明明记了N多次的算法,总是一次一次查看,再一次一次的忘去?
(5)你也许会说忘记,是为了接收、接受新的知识和信息……
你也许会说忘记,是为了更好的记住……
你也许会说忘记,是为了……
(好了,你要是再找,会找到一万种理由),纵使你有一万种理由,但是对于一个算法(例如快排 —— quickSort, 堆排 —— deapSort)你看了N遍的算法,你还是没有记住,这是说不过去的!!!
你有没有考虑过,你根本就没有弄清楚问题的来龙去脉,根本就不晓得算法的真谛,更不知道算法的本末,仅仅停留在我会用……并不知道为什么是这个样子。
二:如何尽量避免这些窘况的发生
(1)我仅仅以自己学习算法的经历为例:
(2)对于比较复杂但还不是很复杂的算法(algorithm),一定要找到一种适合自己记忆的方法
(3)最好把这种方法,模拟一遍,画图,画表格,都可以,,一定要模拟一遍。
(4)就拿DP(01背包,完全背包,多重背包)算法来说,假设把最根本的推导公式记住了,你可以通过画一个矩阵(二维数组),模拟一遍,就会发现,原来空间复杂度可以由二维 降为 一维
(5)还有就是并查集,路径压缩,自己模拟一下会很方便的记住的
(6)各中排序算法,二分查找等等算法