算法 推荐算法老师 labuladong

chenge · 2020年05月04日 · 最后由 cheng_sukai 回复于 2021年02月07日 · 4697 次阅读

据他介绍刷题后总结出一些算法框架,并写出来分享给网友。我看了一些,感觉是写得不错的,相对更容易理解吧。 他有个建议,刷题从二叉树开始,树的遍历是后续算法的核心。

历史文章摘要目录,建议收藏

那你上次在公司项目中用到动态规划或者二叉树是什么时候啊?

wangjianxing 回复

没怎么用过。不过这个是实力的体现吧。

chenge 回复

会写个翻转二叉树就有实力了?

nouse 回复

你说怎么算有实力?

chenge 回复

怎么着也得写一个 brew 出来吧。。

實力分兩種 一是根基穩固否 一是擅長應用否

上次用到算法是节前。遍历数组,每次遍历用了 count ,担心会是 n 方的复杂度,就改了(后来发现想多了)。

上上次,是发现 redis 有个慢查询,查了下,是因为用了 HGETALL,而 HGETALL 是 O(N) 的复杂度。

可能用不着实现算法,但复杂度的分析还是经常用到的。

我感觉,如果进大厂或者外企刷题很必要。工作中,会有意识的考虑效率和复杂度的问题。

yfractal 回复

学会算法一定是有好处的,不过实际应用来说,最大的作用还是大厂拿来做筛人门槛,如果你的工种还是 WEB CRUD,带来的效果一定不如工程思维和开源软件和框架的熟练度°当然高端人才和高端职位另说。

hooopo 回复

我们是做 IM 开发,IM 开发还挺特殊的,也不好被完全算进 web 开发。

有些问题可以被当做算法问题,比如 N + 1,就是复杂度 + 网络传输。

我们在做一些设计的时候,也会考虑时间和空间复杂度,主要是怕把服务搞挂掉。。。当然多数的时候不需要考虑。

有些算法问题,其实也是编程能力的问题,像二叉树遍历、归并算法,如果递归掌握的好,这些算法就很好理解了。

递归 ruby 中用的比较少,但写 clojure、erlang 这种,递归写不好,真玩不转。。。

工程师也会“相轻”的,跟不同背景的同事吹逼,聊到算法,设计模式以及“众所周知”的 pattern 一定不能露怯,否则将会被暗暗鄙视(其实大部分人都是半桶水,所以都会很默契的不会聊的很深入)

面试中算法有点像义务教育里那些感觉没用的课程,一是能快速筛掉学习能力差的人,二是算法确实对编码有影响。

piecehealth 回复

不会反转一颗二叉树就是学习能力差啦?那你是不是认为 Max Howell 比你学习能力差远了?https://www.infoq.cn/article/aId5mfexybXO2lSJaF7E

wangjianxing 回复

我那句提反转二叉树了?贴个老梗显得自己懂得多?一个极端特例当论据是不是抬扛?一直用反问句回复别人是不是自我感觉很良好?

面试不应该刷题,还不如多把时间放在整理简历上

nouse 回复

在学校没有项目经验。。。学校里算法挺重要的,要考研需要

需要 登录 后方可回复, 如果你还没有账号请 注册新账号