《数据结构与算法》是大学的必修教材。大学专业课我学的马马虎虎,期末也就85左右,但从学完到实习到转正一点没用过。在加上大学讲的也比较浅,现在也忘的差不多了。黄金时间都在大学,现在时间都得挤。现在回味起来:大学不知算法好,错把妹子当成宝。在我重温的过程中发现它并不是难的问题,而是能否把它坚持下去的问题。现开设此贴,以表决心!

img

给我一万个理由

除了算法工程师之外, 基本不会在工作中会用到,最直接的理由就是为了面试,除此之外

1、这将会是一条强者之路。拒绝拧螺丝,拒绝面向API编程

img

2、造轮子必备。某天公司让你优化数据库或者框架,甚至想让你设计数据库和框架,你能担当此重任吗?有人表示,扯的远了,我等泛泛之辈也敢班门弄斧?还有人表示,目前市面轮子这么多,能直接用为什么要造,你能有人家造的好?

首先第一点,不要否定未来的自己。谁都是从菜鸟过来的,不要给自己设限,不要放纵自己。一年经验用三年,我是不能接受。第二点,如果只是调用API的工具人,市场竞争力在哪?公司怎么敢重用你?就算轮子造不好,也要有这种能力。有些东西,只有自己有了,才有资格说有没有用。

3、门槛变高。做IT这行技术在突飞猛进,要求也越来越高。追新不靠谱,但底层原理是通用的。数据结构与算法,计算机组成原理,计算机与网络等等。以2021的角度看hibernate可以不学,直接梭哈spring。指不定之后spring也不学了,但这些底层原理始终是基石。所谓基础不牢,地动山摇。除非以后计算机不在使用冯诺依曼结构,否则这些基石永远不会过时

4、进大厂必备。大厂对基础与算法能力是相当看重的,所以想接触更牛b的人,这是一门必修课

学习规划

b站看视频 +《算法第四版》–>《剑指offer》—>刷leetcode(看厂)

b站这个视频我看下来还是挺不错的,但只能当个入门,到B树都讲一点点,也不讲实现,红黑树压根不讲,都得自己去看,师傅领进门,修行在个人。听个算法的思路,然后自己lu代码,最后与之比较,期间穿插看《算法第四版》(OS:这本书抱着啃我是不行,当个补充还可以,又厚又不说人话,不过权威就是了)

修炼期间踩的坑:

1、我用100行,人家用10行,自我安慰,其实还好,起码有门。有的就过分了,有思路也不会写。后来寻思也挺正常

2、头铁,不服输,不会写就硬憋。看着我一根跟80的头发掉下来,依然不为所动。后来寻思没有必要。重要的是不要cv,不要看着敲(高级版cv),思考的时间占大头。

3、走火入魔。记得树的那块儿,学魔怔了,打算手写红黑树,在树节点删除那块是怎么也整不明白,网上也大多都是讲原理的,没代码。弄了几天,后来我也没弄出来,人麻了。最后还得找小姐姐诉苦

三个月后,基础篇终于弄完了,剩下的也就是刷题了

是什么让我坚持了下来?有一半是兴趣,另一半是贫穷

img

怎么去学

看视频+看算法书+自己总结

学习算法不是一蹴而就的,重要的是拥有这种思想并加以转化

反正是学一遍,不要吝啬你宝贵的时间,千万不要图快,看完≠学会

快餐式学习,学得快,忘得更快,还不如打王者上两颗星实在

重要的是方法,不是死磕。最后还有最最重要的就是坚持!!!没有这两个字,什么都白搭。

前置技能

算法—>前置技能—>数据结构

数据结构—>前置技能—>若干

若干包括

1、掌握一门机器语言(不然怎么写代码,推荐但不局限于python,Java)

2、线性代数、离散数学

当然,科班的除外(自带buff)

随手小记

除了原有的内容,还有自己的思路,图解,代码用Java实现

柠檬大师:数据结构之队列

柠檬大师:数据结构之栈

柠檬大师:程序员眼中的《盗梦空间》

柠檬大师:八大经典排序图解(看完必会)

柠檬大师:数据结构之查找

柠檬大师:数据结构之树

柠檬大师:数据结构之图

柠檬大师:常用算法归类

剑指offer(能指,只能指一点点)

img