讨论/求职面试/📚 开启世界读书日「限时阅读」,让你的时间更有价值!/
📚 开启世界读书日「限时阅读」,让你的时间更有价值!

E391C58B-C59C-4E33-9350-925FFCE5B315.png

在飞速发展的计算机行业,总能听到技术新名词、新语言、新框架、新工具……对于许多初入行的扣友们,持续学习和掌握新技术成了一个不小的难题。

其实,新技术的思想和底层原理都源于较为成熟的计算机基础理论。花点时间仔细研读计算机经典书籍,不仅可以帮助自己夯实知识基础,还能拓宽编程思路,不断提升职业技能。

世界读书日即将到来,力扣携图灵邀你一起读书,让时间更有价值!

活动 1:📖 完成阅读任务,赢多重好礼

📅 活动时间

2021/04/22 00:00 ~ 04/28 23:59

📢 活动规则

  1. 4 月 22 日至 4 月 28 日,进入 学习,完成页面右上角的「让时间更有价值」限时阅读任务,可获得「2021 读书日纪念勋章」。

2021-读书日.gif


完成每个阅读任务,任务状态会显示F8927FC2-68EF-46E0-BC77-C9AD75A4AB2A.png,如果没有显示,请阅读完全部内容。

  1. 在每个阅读任务章节下的讨论区写下「你的读书笔记」,点赞第 1 的优质评论将获得 图灵赠送的精选书籍 x 1。详细规则见阅读章节页面末尾。


活动 2:📚 世界读书日,邀你一起读书

📅 活动时间

即日起 - 2021/05/07 17:00

买书如山倒,读书如抽丝。总是觉得很忙,没时间看书?技术书籍太枯燥,总是无法坚持看完?与其看书学习,不如电脑实操?欢迎在 本讨论帖 下分享你的读书体验,建议但不限于以下话题:

  • 你最推荐哪些技术书籍?并写一写推荐理由吧!
  • 晒一晒你已经读过的技术书籍清单,别忘了书籍分类~
  • 你是如何在紧张的工作/学习外规划读书时间和目标的?
  • 你是如何将书中的内容应用到编程实践中的?你觉得看书对实际开发有哪些帮助?


📢 活动规则

  1. 即日起至 5 月 7 日,在 本讨论帖下 参与读书讨论,将有机会获得 图灵赠送的精选书籍
    7AB53E56-7CB4-4561-8763-AEF36C0E4361.png
  • 讨论点赞 + 惊喜数第 1 - 3 名的扣友将获得「图灵精选书籍盲盒」x 1
  • 讨论点赞 + 惊喜数第 4 - 8 名的扣友将获得 「图灵必读书籍盲盒」x 1
  • 讨论点赞 + 惊喜数第 9 - 15 名的扣友将获得「力扣周边盲盒」x 1
  1. 获奖名单将于 5 月 7 日 17:00 公布,获奖用户请注意留意站内通知,并填写收货地址。


最后,祝愿所有扣友都能在读书中提升技术实力,收获学习的快乐。🎉


⚠️ 奖励发放规则

  • 为了保证活动的公平性,参与获奖评选的帖子需符合发帖要求,如发帖内容与内容主题无关将顺延至下一位符合要求的扣友。
  • 热爱读书,尊重创作者,支持正版,分享书籍时切勿分享盗版书籍下载资源,否则将被取消活动参与资格。
  • 为了保证大家有更多机会获得奖励,每位扣友同一个活动仅可获得一次奖励。
  • 实物奖励会在所有收货地址信息统计完毕后进行发放,预计 10 个工作日左右,请耐心等待。
30

写在前面

看到大家都介绍了很多书,特别是本讨论贴中第一名的大佬,真的很佩服能在大三就看过这么多书。回想起自己在本科的时候,那可真的是够咸鱼的呢,除了课本基本没看过其它技术书籍,就算是课本也没怎么认真看过,相比起来真的是十分惭愧。

前言

最近一段时间,有比较认真研读的书籍是 《算法导论》,基本上来说看了一半,其中主要是前一半的部分,挑着比较经典的有用的(简单的)部分看了,后面一些感觉自己不太能看懂和不太用得上的部分打算留着以后碰到时再去研究。

因此今天打算给大家介绍一下我眼中的 《算法导论》

这是一本什么样的书?

我先用我自己的话概括一下这本书:
一本百科式的工具书,一本严谨的数学书,新手勿入此书(垫桌角还不错,压杯面有点大了)

下面解释一下我的概括:

  • 百科式的工具书
    这本书讲解的东西我觉得是挺全的了,常用的包括但不限于:算法复杂度套装(大O记号,基本分析方法,均摊分析)、常用的数据结构介绍和分析(堆、哈希表、各种树)、常见算法介绍和分析(贪心算法、动态规划、图论算法)。以后遇到什么想全面学习的,打开《算法导论》看一看总是没错的。
  • 严谨的数学书
    本人没有看过太多的算法方面的论文,因此不太清楚《算法导论》的严谨性是否与这些论文是在一个水平上的。但我觉得其严谨性已经很高了,在我心目中不亚于《数学分析》课本的各种证明(由一些公理出发,并对所有的定理都有证明)。目前在我看的章节内,我认为《算法导论》都是讲的很完备很清晰的,绝大部分都有较为严格的数学表示,并在其基础上进行一些分析和推导。当然本人水平有限,很多地方也是一知半解或者不求甚解的,因此这本书在我看来已经可以算是严谨性很高的一本书了。
  • 新手勿入此书
    这本书讲解的算法都是以伪代码的形式呈现的,其中更为坑爹的是有可能一个大的算法,分成了很多个小算法,分布在这一大章节的各个角落,看起来十分不方便。这样编排的原因是作者一般会对每个出现代码的地方都做出详尽地分析和讲解,所以插入的内容一多就分散了。其中有很多分析,是非常数学非常理论的,一方面它非常严谨,另一方面会让人感觉“晦涩难懂”,倘若说上一句“故弄玄虚”,我觉得也是有一定道理的。我作为一个蒟蒻,基本每个理解了30%以上的部分,都是看了2-3遍的。因此如果你是一个真新手,千万别听信别人说用这本书入门。(题外话:推荐什么书?推荐《算法4》。我本人没怎么看过这本书,但看很多大佬,包括零神、负雪、威威哥都推荐这本书)

我在这本书的哪个部分收获最大?

这个问题我是有确切答案的。
让我觉得最牛逼的部分是:第9章 中位数和顺序统计量 9.3 最坏情况为线性时间的选择算法。(虽然我还是并不太会证明,也没有100%弄懂这个东西)
这个证明说的是,在最坏的情况下,你也可以在O(n)O(n)时间内找到数组中的第i个元素(i为任意值)。(C++ 中可以直接调用nth_element())
书上只是短短两页,就把这个让我看了十几遍没理解透彻的东西讲完了。后来我知道了这个算法的名字叫做——bfprt算法
更详细的我就不过多介绍了,感兴趣的同学可以自己看一下书本123页(英文版220页)

我最推荐这本书的哪一部分?

我推荐的部分是算法复杂度分析,主要出现在《算法导论》第二章和第三章。
因为算法复杂度这个东西在力扣上还是比较具有普遍性的(每题都要用),但也经常看人讲不清楚或者理解不清楚这个概念和分析方法。因此强烈推荐大家翻阅一下(不用特别仔细)这两章,对算法复杂度这个概念多一些感性的认识。

我最近一次在这本书上放弃是什么时候?

233,谁问的这种鬼问题?哦,问问题的人竟是我自己,那没事了。
前几天,力扣的打卡题是28. 实现 strStr(),那么一个进阶的做法当然是用KMP算法。然后就兴高采烈地打开了《算法导论》,打算好好看看严谨的书是怎么说这个算法的。十分钟后:立即关闭《算法导论》,STEAM启动(笑。

后记

阅读计算机类的书籍(包括本书),一般来说在很多章节上学习曲线都是比较陡峭的,学习过程都是比较痛苦的。希望大家都能坚持下来,学习更多的知识,成为更好的自己。
最后,望大家共勉。

28
展开全部 87 讨论