最近一直在刷算法题,算法平时工作用的很少那为啥子要刷嘞?
算法是后端职级进阶程序猿必备之技能,跟框架学习是在不同维度,也无关联,但是如果你只会使用Arrays.sort(list),除非你是个刚入行的应届,不然以后你会慢慢发现这个圈子与我格格不入,怨念极深o(╥﹏╥)o;
另一个因素是因为想进大厂😂,算法必考,基本上分值在40分,这两个理由够充分的了吧。
所以准备出一个算法系列,万事开头难,汗......格式的问题后面再优化吧(这句话怎么这么耳熟😂)
学习算法绕不开的一个网站应该就是LeetCode了,在刷力扣之前,是查过网上一些牛人的刷题心得的,大致总结下应该会有这几种:
- 上来直接顺着题号开刷;
- 查询热点TOP题型开刷;
- 有牛人总结题号开刷;
- 按照算法和数据结构去刷对应题型;
柿子采取的是第四种,根据目前算法和数据结构来刷对应的题型,刷过一种之后进行总结归纳,整理出该种算法的优劣模板,最好最好能把解题模板整理一下。
打开 LeetCode 网站,如果我们按照题目类型数量分类,最多的几个题型有数组、动态规划、 数学、字符串、树、哈希表、深度优先搜索、二分查找、贪心算法、广度优先搜索、双指针等等。 本书将包括上述题型以及网站上绝大多数流行的题型,并且按照难易程度和类型进行分类。
第一个大分类是算法。主要是针对常见算法题型进行总结;
第二大类是数学相关题型,包括偏向纯数学的数学问题,和偏向计算机知识的位运算问题。这类问题在实际工作中并不常用,建议可以优先把精力放在其它大类;
第三个是最最重要的数据结构,包含的常见数据结构、字符串处理、链表、树和 图。其中,链表、树、和图都是用指针表示的数据结构,且前者是后者的子集。最后我们也将介 绍一些更加复杂的数据结构,比如经典的并查集和 LRU。
下面很长一段时间内会根据上面脑图进行题型分析和算法总结,脑图上的每个知识点都会涉及,咱们一步一个脚印的慢慢来;
【遇事不决,可问春风!】