算法题解题思维导图
作为一个Coder不管在工作中还是进阶场景下都会面临一个个问题,其实方法论或者模版很多情况下能够提供不少帮助、就像肌肉记忆一样,解题模版,思路模版什么的常记心中。在《程序员面试金典》里面的优化和解题技巧这一章节其实给出了很多思路,还是很有用这里整理了下,
这里面几个点还是提一下
首先 拿到一题目来说,如果一时间没有思路那么就按照上面的步骤走一遭,就算最后问题没有解决,但是解题的方法和态度是不错的。
其次重点说一下遇到问题所谓的听就是分析问题,基本上每一个信息都是有用的,思考每个信息带来什么,通常用什么方法应对,就例如遇到的问题用O(n)复杂度解决,那么就只有遍历一次或者几次。没有其他。遇到O(nlogn)大多数的就是有序的查找分治思想,遇到最大最小数对应的堆的数据结构就可以立即冒出来。常见的算法思想、数据结构、算法复杂度对应的算法、数据结构对应的算法复杂度。这些可以形成条件反射,下意识的优先思考
还有就是遇到问题如果没有具体的编码思想,那就按照人的处理思路具体化,例如查找,我们在词典目录查找的这个行为是下意识的,但是在算法里面就是logN的查找算法思想,可以回忆自己的怎么想的落实到具体的代码上
如果好的想法那么就先用最暴力的穷举遍历吧。然后再按照BUD的思路一点一点优化。
最后觉得很重要的一点:读题很重要,当你读透一个题目的时候也就成功了一大半了!