目前LeetCode已经刷了六百多快七百题。1.我的观点。是除了业务驱动的特别牛逼的程序员不需要算法,剩下都要学算法。但是这种业务驱动的会有天花板,如果你算法牛逼,你的上限就会比这种人高的多。2.个人认为算法就是用最少的资源干最多的事。虽然这种话听起来很高大上,但是很好理解。就比如Java语言跑递归的时候,虚拟机会帮你进行压栈出栈操作。但如果递归里面大量用到了大对象,或者递归分支很多。导致虚拟机栈内存溢出。这时候还扯什么业务,业务都挂了!这时候如果你学过一点算法,你就可以不用虚拟机栈内存。自己控制压栈出栈。你自己建的这个栈是存在堆内存里的,读过点虚拟机书的都知道虚拟机堆里面的内存比虚拟机栈打得多。再说回上面递归可以进行剪枝,通过让不可能达到目标效果的提前终止,就可以有效减少递归时候用到的内存大小。3.算法和一些**面试题要分开。个人感觉有的企业除非闲的蛋疼,要不然不会考那种和业务纯没关系的毫无用处的无脑题。有效题是那种既能考察逻辑思维又能考验coding能力又能考验算法功底的题。比如面试官甩给你一个很难的业务,你需要先分析流程,然后coding出来,然后优化时间复杂度和空间复杂度。这种业务现实中很多,就比如实时抽奖系统。你就需要实现复杂的数据结构去优化你的代码。4.刷题只是为了拿好offer吗?错!刷题的过程会提升前面说到的所有能力。但凡你想在编程这路上越走越好,你就绕不开这些。5.个人认为有效刷题不是眼高手低。看懂了和手会了完全是两码事。大家刷过题的应该深有体会6.刷一道不一定会,刷十道也不一定会,刷一百道会一百道,刷一千道会一切。7.回归现实,Google程序员每天只需要写几十行代码,但是为什么人家挣得多,你一天写几百行几千行没有人家挣得多?Google招的人可都是acm的大佬!