作为一个非科班出身的程序员, 第一次专门进行算法的学习, 这次花了20多天的时间完整的看完了, 觉得非常有收获.
我使用视频的方法是先听理论讲解, 然后去leetcode自己独立做对应的题目,把自己能想到的解题思路都列出来并分析时间空间复杂度, 然后找一个最好的方法coding, coding完之后再听习题讲解, 优化自己代码, 最后再去leetcode上看discussion, 再优化自己代码, 最后整理解题思路, 提取代码的模板.
这样把60多个视频看下来, 觉得自己现在解决一个题目的思路非常清晰了.
很多程序的写法, 其实原来自己也那么写, 但是没有系统的归纳整理, 没有提取成模板级别; 原来碰到一个题, 产生了解题思路马上就会去code实现它然后运行看性能怎么样; 现在会先给出解法, 比如很多题第一个想法都是dfs(暴力法), 然后紧跟就会想暴力法的时间复杂度肯定高, 接着会想暴力法过程中有没有重复计算, 如果有重复计算就应该可以考虑用dp解, dp能解的话, dp状态的定义是什么, dp方程是什么, dp的时间复杂度有没有比dfs有提升? dp状态的空间复杂度一定用O(m*n)吗? O(m) 行不行...
现在甚至有一种自己什么都会了的错觉哈哈... 不过相信这其实只是个开始, 目前应该是把理论的30%掌握的比较全面了, 算是师傅领进门了, 接下来还有70%的路, 要靠自己背上键盘去修行了
展开