算法和数据结构是计算机编程重要的理论,也是一名优秀程序员的基本功,所以非常有必要对其学习和加深。
但是,算法是比较难学的,学习它需要智商。 同样一个问题,他的算法耗时 10ms,你的要 100ms,其中的性能差异是巨大的。解算法题的确是区分人类智商的比较好的方式,这也是为什么许多公司用算法面试来找到智商比较高的程序员。
数组、链表、哈希表、二叉树、排序算法等一些基础知识,对大多数人来说是没什么问题的。但是其他动态规划、字符匹配等问题就非常复杂,都是伤脑筋等问题,没有解答思路是令人痛苦的。
虽然很多时候,在工作中根本用不到算法,这不代表算法无用。真正的技术突破或者性能优化可能就在于算法,算法是贯穿底层系统和顶层业务的理论,不管用 Java 还是 C 语言,都离不开算法的编织。
学习算法,不仅要解决当前问题,还要学会背后的套路,这样对于搞定其他问题是有帮助的。比如涉及数组移动和替换的一些问题都可以用快慢指针解决。
目前,我已经开始做 LeetCode 上的题目了,每日一道算法题,先从简单开始,题目的解答放在 GitHub 上——LeetCodePractice。前几年看到 LeetCode 上的英文题目令人发怵,幸运的是,LeetCode 中国(力扣)上线了,这是一个非常优秀的社区,我们应该利用好它。
万丈高楼平地起,勿在浮沙筑高台。
共勉。
网友评论