## 选择一门 编程语言 。写题用。Python 或者 cpp 或者 Java 或者 golang
先熟悉一门语言的本身API, 如stack.pop()
学习数据结构,二叉树,数组, 链表 ,队列,栈,堆,图;
进一步熟悉数据结构自带的api,如数组可以a[1], 寻找小标为1的位置。熟悉各个数据结构的增删改查操作,遍历操作
耗时:1个月
## 学习算法;
由易到难排序如下,学习顺序最好也是按下面的一个个学会:
递归思想,八大排序算法,二分查找算法,回溯算法,深度优先查找,广度优先查找算法,并查集,最小生成树
耗时:1个月(和上面同时学习)
## 入门算法题练习
需要做50题,大概才能入门
耗时:1个月
## 算法菜鸟水平
入门后,按照标签写题,先写数据结构,二叉树,数组,链表,队列,堆,图;
二叉树会包含很多递归,回溯算法,深度优先查找,广度优先查找算法。先写这个因为这个比较难,需要更长时间才能理解题目,同一个题目写第三遍时候会好一些,面试也是必考二叉树。
二叉树写了30 题左右,可以写数组题,数组题会包含 滑动窗口算法,双指针思想,数组写20题左右入门了
链表同理,链表更多的是掌握链表的删除,遍历,反转,合并操作,高频题会覆盖这些。
队列,栈,堆同理
耗时:1个月
## 算法初级选手
熟悉图的构建,图的遍历
leetcode除了图的题,大致写了200题的水准,简单100,中等100,难题30
耗时:2个月(和上面同时学习)
## 算法中等选手
各类数据结构,基本算法熟练
leetcode 大致350- 500 题选手
耗时:3个月(如果坚持每一天的话)
## 算法高级选手
leetcode 900+, hard题在200+,达到 谷歌 , 微软 面试水平
耗时:4个月(如果坚持每一天的话)
对于非科班转码同学,每天坚持的人,自律的人!leetcode 900+, 需要耗时12月 左右。
以上是个人愚见-20211130