先说结论,有帮助!
对于 BAT 等一线大厂来说,算法面试是必须跨过去的一道坎,所以必须得准备好算法面试~
但很多时候,你即使提前复习了这些最常见的面试算法题,你依旧无法通过算法面试!
为什么?
怎么办?
我来助你一臂之力!!
为了避免知乎大佬觉得我吹逼,先贴一下自己的 GitHub 地址,目前 20 k star。
12月初,将图解算法项目放到了GitHub上面去,短短两天登上了 trending 版第一的位置,点击这了解如何
我是如何 21天,在Github上获取 6300 star 的。
----------------------------------------------------------------------------------------------
我将那几个有意思的经典互联网公司的面试题目都详细的分析了一遍,每个题目都写了比较详细的分析过程,大部分文章都配了动画,目前还在持续更新中。。。
配了动画是为了加强理解,并且希望等你面试的时候没有思路,通过动画能联想起来!
1. 给你一个长度为 n 的数组,其中只有一个数字出现了奇数次,其他均出现偶数次,问如何使用优秀的时空复杂度快速找到这个数字。
2. 假设有 100 层的高楼,给你两个完全一样的鸡蛋。请你设计一种方法,能够试出来从第几层楼开始往下扔鸡蛋,鸡蛋会碎。 请问最坏情况下,至少需要试验多少次才能知道从第几层楼开始往下扔鸡蛋,鸡蛋会碎。
3. 请设计一个 LRU 算法。
4.什么是动态规划? 30 张图片动画详细分析!
当然,大佬们都说过,学算法之前起码得了解数据结构呀!
你是否当程序员这么多年,还只是能手写出个冒泡排序的代码?
别怕!
我也将程序员常见常用的那些数据结构都配了大量的图片和动画进行讲解,相信你看了一定能有所收获!
比如我做了十大经典排序动画,你看着动画应该能理解吧。
不仅是这些,像上面 栈、队列、堆、二叉树、图等各种结构,我都配了大量的图片和动画进行讲解。你看完肯定有收获!
我按标签用动画整理了一下 LeetCode 的题目,可以按需查看。
点击下方链接获取算法学习路径与算法书籍推荐
欢迎关注 @程序员吴师兄 ,一起学算法:)
以下是个人观点:
除了现代文明,以及纯粹靠着偶然建立现代文明的西欧之外,全部都是人类文明的幼年期。
我将人类的历史划分为两个节点,三个阶段。
第一个节点是人类这个物种正式从基因进化改变为模因进化。
什么是模因?模因就是文化基因,通过非遗传而是学习的方式传递的信息。
这一步是一个纯偶然,需要同时具备:发达的新大脑(即学习脑),灵活的肢体(工具制造能力),以及优秀的发音器官(信息传递)。
地球生命圈30亿年的历史里只出现过一次。
在这一节点之前,人类属于胚胎期,在这之后,人类出生了。
第二个节点,就是“科学”取代“文化”成为模因进化的主要驱动力。
“科学”取代“文化”,就是理性取代感性,实证取代先验。
要知道理性和实证其实是反生理的,人类的大脑在数十亿年的进化里,为了保证以最低的能耗实现最大的功能,尽可能多地采用了“预先编程”式的思考模式,这就是感性和先验。
但这对模因的进化是巨大的制约和瓶颈,这也是为什么人类最初数百万年的模因进化,却远远比不过现代文明区区几百年的进化。
这就是人类文明的幼年期。
第二个节点的出现是纯偶然的,因为“科学”这个事物在最初发展的早期对生产力的进步是无益的。
在世界范围内,许多古文明都发展出过朴素古老的理性实证思想,比如古希腊的哲学与数学,比如中国古代春秋战国时期的道、墨、儒等哲学。
但这些哲学毫无例外地全部走向了先验主义和唯心主义,因为这才是符合统治与生产力短期发展的,纵观中国古代儒家和道家的发展历史就一目了然了。
欧洲也是如此,昙花一现的古希腊哲学之后就是漫长的宗教统治。
直到“科学”这个事物偶然地从西欧诞生。
我们通常认为伽列略——牛顿是现代科学的创始人,从他们起,科学的逻辑实证主义就隐约成型了,并成为后世科学发展的最重要方法论。
但这并不是什么必然,只是纯粹的偶然,最初的科学对统治并没有帮助,事实上对统治还有害,但正是英国皇室的“个人爱好”,使得皇家学会得以成立。在官方的鼓励下,才有“科学”这个事物在襁褓中不被扼杀。
而且,中国的古代文化的“强度”是远超欧洲的,儒家和皇权对社会有极高的控制力,在这种环境下,“科学”想要取代“文化”成为模因进化的主要驱动力是高度困难的。
跨过了这一步,人类文明正式进入少年期。
下面再谈谈我认为的下一个节点,
下一个节点应该是在人类拥有全方位改变人类身体和大脑的技术之后,那时人类可以彻底摆脱如今人类的大脑这个效率极低的模因载体的制约,模因进化效率将达到一个顶峰。
那才是人类文明的成年期。