我觉得学习算法的态度就是思考,思考,再思考。
- 第一个是思考是指 面对 ,不要看见算法题就觉得很难,不去想,然后通过搜索来得到答案,可是你应该明白,在如今这个互联网时代,资料随处可得,重要的是你面对问题的时候是否可以真正分析,调试,解决它。
- 第二个思考是通过你所具备的知识和能够查阅的资料去 解决 它,无论怎么样,其实我们都是可以对一个问题有办法解决,最差的也可以通过穷举法来列出来,只不过这样很傻就是了,然后我们通过查看别人的优秀解法来完善自己的解法。
- 第三个思考是根据实际情况来 选择 实际的解法,因为很多时候最优的解决其实并不适用于现在情况,这个时候就要求我们能够有所取舍。
我希望通过学习算法来让自己考虑问题变得全面和面对一个自己没有遇到过的问题(无论是逻辑上的还是业务上)能够冷静地思考解决问题的方法。
线性:
- 链表
- 栈
- 队列(优先队列)
非线性:
- 二分查找
LeetCode Java Solutions:https://leetcode.morethink.cn/#/source/
所有题都在牛客网 ac: 题目地址:https://www.nowcoder.com/ta/coding-interviews Java solutions:https://github.com/morethink/algorithm/tree/master/src/algorithm/swordtooffer
牛客网的第n题对应于src/algorithm/swordtooffer
中的�Testn+2
。