数据结构与算法之路
《数据结构与算法》是大学的必修教材。大学专业课我学的马马虎虎,期末也就85左右,但从学完到实习到转正一点没用过。在加上大学讲的也比较浅,现在也忘的差不多了。黄金时间都在大学,现在时间都得挤。现在回味起来:大学不知算法好,错把妹子当成宝。在我重温的过程中发现它并不是难的问题,而是能否把它坚持下去的问题。现开设此贴,以表决心!
给我一万个理由
除了算法工程师之外, 基本不会在工作中会用到,最直接的理由就是为了面试,除此之外
1、这将会是一条强者之路。拒绝拧螺丝,拒绝面向API编程
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、走火入魔。记得树的那块儿,学魔怔了,打算手写红黑树,在树节点删除那块是怎么也整不明白,网上也大多都是讲原理的,没代码。弄了几天,后来我也没弄出来,人麻了。最后还得找小姐姐诉苦
三个月后,基础篇终于弄完了,剩下的也就是刷题了
是什么让我坚持了下来?有一半是兴趣,另一半是贫穷
怎么去学
看视频+看算法书+自己总结
学习算法不是一蹴而就的,重要的是拥有这种思想并加以转化
反正是学一遍,不要吝啬你宝贵的时间,千万不要图快,看完≠学会
快餐式学习,学得快,忘得更快,还不如打王者上两颗星实在
重要的是方法,不是死磕。最后还有最最重要的就是坚持!!!没有这两个字,什么都白搭。
前置技能
算法—>前置技能—>数据结构
数据结构—>前置技能—>若干
若干包括
1、掌握一门机器语言(不然怎么写代码,推荐但不局限于python,Java)
2、线性代数、离散数学
当然,科班的除外(自带buff)
随手小记
除了原有的内容,还有自己的思路,图解,代码用Java实现
柠檬大师:数据结构之队列
柠檬大师:数据结构之栈
柠檬大师:程序员眼中的《盗梦空间》
柠檬大师:八大经典排序图解(看完必会)
柠檬大师:数据结构之查找
柠檬大师:数据结构之树
柠檬大师:数据结构之图
柠檬大师:常用算法归类
剑指offer(能指,只能指一点点)