该文首发于我的公众号
除了一些异于常人的天才,大部分人刚开始刷算法题的感觉大概都是一样的,尤其是面对困难题目,题解下面的评论画风都是这样的:
算法题有两个关口,第一是找到思路,第二是转化为代码,千万别小看第二步,“道理我都懂,就是写不出来”这种情况很常见。这也是微软面试要写算法的一个重要原因,程序员最终是用代码完成要实现的功能,只有思路写不出来还是无法指挥计算机干活。大厂通过算法题可以同时考察算法和代码功底,一举两得。
我以前算法也是弱项,对算法还很反感,后来练得多了反而觉得挺有意思。万事开头难,走出自己的舒适区,只要坚持下去慢慢水平就有提升了。
分享我的几点刷题心得供大家参考:
按题目在面试中出现的频次排序从高频题开始刷,刷题主要还是为了面试,力扣总共两千多道题,不可能都完成,尤其在时间不宽裕的情况下,没必要在低频题上浪费时间。
另外刷题的时候要按分类刷,集中刷某一类的题目更容易融会贯通,提高更快。
后面我会整理一份高频题目列表供大家参考。
基本的数据结构如:链表、栈、队列、二叉树、哈希表、图。
基本的算法如:二分查找、快速排序、堆排序、归并排序、回溯、贪心、动态规划。
这些知识可以边刷题边总结,遇到一类掌握一类,切勿囫囵吞枣,越刷越没有信心。
记笔记对我的帮助很大,很多时候题目做完一遍,过几天再做又不会了。这时候记录一些关键的解题思路、步骤,每天回顾一下,效果非常好。有人可能觉得这是死记硬背,但我觉得人的智慧的本质是记忆,即便是数学推理、逻辑思维本质上也只是记忆的一种对外表现形式。
最后,个人感觉认真完成高频200道题左右可以应对大部分公司的面试。
往期文章: