我觉得学习算法的态度就是思考,思考,再思考。
- 第一个是思考是指 面对 ,不要看见算法题就觉得很难,不去想,然后通过搜索来得到答案,可是你应该明白,在如今这个互联网时代,资料随处可得,重要的是你面对问题的时候是否可以真正分析,调试,解决它。
- 第二个思考是通过你所具备的知识和能够查阅的资料去 解决 它,无论怎么样,其实我们都是可以对一个问题有办法解决,最差的也可以通过穷举法来列出来,只不过这样很傻就是了,然后我们通过查看别人的优秀解法来完善自己的解法。
- 第三个思考是根据实际情况来 选择 实际的解法,因为很多时候最优的解决其实并不适用于现在情况,这个时候就要求我们能够有所取舍。
- 链表
- 栈
- 队列(优先队列)
- 树
- 图
- 二分查找
- [尾调用优化](http://www.ruanyifeng.com/blog/2015/04/tail-call.html)
参考资料: