代码随想录——跟着Carl学算法

孙秀洋

出版时间

2021-12-01

ISBN

9787121423000

评分

★★★★★
书籍介绍

《代码随想录——跟着Carl学算法》归纳了程序员面试中的经典算法题,并按照由浅入深、循序渐进的顺序讲解。

《代码随想录——跟着Carl学算法》首先讲解程序员面试时需要了解的制作简历的技巧和IT名企的面试流程,以及面试时经常忽略的代码规范性问题。然后详细分析程序的时间复杂度和空间复杂库,包括如何把控程序的实际运行时间,以及编程语言的内存管理。接着讲解数组、链表、哈希表、字符串、栈与队列、二叉树、回溯算法、贪心算法、动态规划的理论基础及其相关题目。

《代码随想录——跟着Carl学算法》采用了力扣(LeetCode)的原题,方便读者在学习算法的同时,及时练习相关代码,加深对相关概念的理解。

《代码随想录——跟着Carl学算法》适合所有程序员阅读,特别是正在准备面试的程序员。希望本书可以帮助读者循序渐进地学习算法,并搭建起知识框架,提升算法功力。

AI导读
核心看点
  • 总结递归三部曲/回溯三部曲/动规五部曲方法论
  • 从数组到动态规划循序渐进编排刷题顺序
  • 独创树层去重与树枝去重概念讲透回溯
适合谁读
  • 准备大厂算法面试的程序员
  • 刷 LeetCode 遇到瓶颈的开发者
  • 想建立算法知识框架的学生
读前提醒
  • 严格按章节顺序阅读,前后题目环环相扣
  • 配合 LeetCode 原题练习加深理解
  • 先掌握数组链表再深入二叉树和动规
读者共识
  • 刷题顺序设计合理,告别不知道从哪刷起
  • 方法论总结清晰,解题有框架可循
  • C++讲解为主,配套网站支持多语言

本导读基于书籍简介、目录、原文摘录、短评和书评生成,不等同于全文精读。

精彩摘录
  • "1.2.1 学好算法之前更要学好编程语言, \*.........·.............·..\*.......... ...2 1.3.2 谨慎使用“精通” ............................ ..5 1.4.5五面—HR面.. ................... .... 10.7.1.贪解-… \*\*4\*\*\*\*\*\*\*\*\*\*\*.\*\*\*\*.\*\*.\*..\*\*\*\*\*\*。 ..00 从第一台计算机诞生至今,无数先贤为计算机科学的发展付出了大量心血,为我们留下了宝藏,而数据结构和算法是计算机科学智慧的结晶。 一个面试环"
  • "很多工作多年的资深程序员在面试时往往会栽在算法题上,有的人不屑于在面试前去练习算法,这些资深程序员更希望展现出自己的项目经验和解决实际问题的能力。虽然重视项目经验没错,但忽略基础算法能力就有问题了,相信很多人听说过关于MaxHowell(Homebrew的作者)的故事一一Max Howell在Google面试,但Google拒绝了他,给出的答复是:“虽然我们90%的工程师都用你写的软件,但抱歉我们 这个事件在业内引起了轩然大波,人们开始讨论考查算法的必要性。这么多年过去了,算法面试依然是互联网巨头招聘时的硬性条件,这也充分说明了数据结构与算法不仅是名企面试行之有效的招聘手段,也是程序员必备的基"
  • "例如,在使用C++作为编程语言的时候,如果不理解vector的扩容机制,那么就不知道在什么情况下用链表替代vector实现insert的操作。如果不理解unordered\_map、multimap、map的底层机制,那么就不知道在什么情况下应该用unordered\_map、在什么情况下应该用map。 举一个例子,在一个数组中,每隔一定间隔插入一个数字9,写出实现代码。 如果对编程语言不够了解,则很可能认为这是一个时间复杂度为O(n)的算法,其实这是一个时间复杂度为 $O ( n ^ { 2 } )$ 的算法,而且还要考虑vector的扩容机制一一数据量一旦达到阈值,就会全量复制到一个新的数"
  • "很多程序员可能不屑于了解代码规范,认为能实现功能就行,这种观点其实在20世纪是很普遍的,因为那时候经常是一个人完成整个项目,编程自由度较高。 但现在软件开发都是团队合作完成的,自己写的代码是要给别人阅读的,同时也要阅读别人写的代码,这时就需要代码规范了。如果在一个团队中,有一位开发者不按统一代码规范编写代码,那么这位开发者就是团队中的“隐形Bug制造器” 需要强调的是:没有最好的代码规范,只有适合自己和团队的代码规范。如果是自己写代码,那么要坚持一种代码规范,不要每次写代码都换一个风格;如果是团队开发,则要以自己团队的风格为主。 小驼峰命名法要求第一个单词的首字母小写,后面其他单词的首字母大写"
  • "下画线命名法是指变量名称中的每一个逻辑断点都用一个下画线来标记。例如,intmy\_age。下画线命名法是随着C语言的出现而流行起来的,如果读过Linux内核源码,就会发现源码中大量使用了这种命名方法。 匈牙利命名法是:变量名=属性+类型+对象描述。例如,intiMyAge。一个来自匈牙利的程序员先在微软内部使用这种命名法,后来推广给了全世界的Windows开发人员。 这种命名方式在没有IDE的时代可以很好地提醒开发人员每一个变量的意义,例如,看到iMyAge,就知道它是一个int类型的变量,而不用查找它的定义。这种命名方法的缺点是,一旦修改源码变量的属性,整个项目中这个变量的名字都要改动,增"
  • "很多没有经验的程序员写出来的代码都堆在一起,看起来很不美观,读起来也费力,有的程序员甚至为了让代码精简,把所有空格都省略了。 本书中的C++代码严格按照GoogleC++编程规范编写,看起来会让人感觉清爽一些。 这里并不是说一定要按照Google的规范编写代码,如果是自己编写代码,那么就保持风格统一;如果是团队开发,那么就保持和团队风格统一。代码规范没有谁对谁错,只有合适与否。 程序员的简历力求简洁明了,在设计上不要过于复杂。对于应届毕业生,一页简历就够了,对于社招人员,两页简历便可。例如,一些应届毕业生会在简历中介绍很多参加校园活动的内容。如果面试的是技术岗位,那么这些内容最好一笔带过。 关"
  • "应届毕业生在写简历的时候,切记不要写“精通”某语言,推荐写“熟悉”或者“掌握”。但一些程序员可能仅仅使用Go或者Python写了几个Demo或者只了解一些语言的语法,就直接在简历上写了“熟悉C++、Java、Go、Python”,这也是大忌。如果C++学得更好一些,那么建议写熟悉C++,了解Java、Go、Python。 \frac { 1 } { 1 6 } ) \frac { 1 } { 1 6 } \frac { 1 } { 1 6 } \frac { 1 } { 1 6 } \frac { 1 } { 1 6 } \frac { 1 } { 1 6 } \frac { 1 } { 1 "
  • "不要为了使简历上看上去很丰富,就写很多内容上去,内容越多,面试中的考点就越多。在简历中突出展示自己技能的几个点,而不是面面俱到。想想看,面试官一定是拿着你的简历开始问问题的,如果只是因为想展示自己会得多,就把很多内容都写在简历上,那么等于给自己挖了一个“大坑”。例如,仅仅部署过Nginx服务器,就在简历上写“熟悉Nginx”,面试官可能一上来就围绕着Nginx服务器的原理问很多问题。如果招架不住, 同时,尽量不要在简历上写诸如“代码行数10万+”这样的内容,这就相当于提高了面试官对你的期望。首先“代码行数10万+”无从考证,其次这么写相当于告诉面试官“我写代码没问题,你就尽管问吧”。如果简历上"
目录
第1章 准备面试要知己知彼 1
1.1 面试官为什么要考查算法 1
1.2 编程语言 2
1.2.1 学好算法之前更要学好编程语言 2
1.2.2 代码规范 2

显示全部
用户评论
跟着Carl哥学算法,以点带面,各个击破,这一段时间来进步了不少。 Carl哥除了算法讲得好,健身更是顶呱呱,跟着Carl哥学,继续冲冲冲!
书的内容很好,条理清晰,正好为学习算法梳理了路线
连评价的日期都几乎是同一天,真是奇怪呀
支持一下
随着卡尔哥刷算法已经一年多,期间虽然没有换工作,但在算法方面得到了很多提升,卡尔哥的新书必须支持!
写的不通透,只是代码的堆砌,而没有捅破那层窗户纸
在读这本书,看了一些题目,感觉解题思路一笔带过,该详细的感觉不详细。
作为 LeetCode 的“刷题顺序”指南还是可以的,但是也比不过 LeetCode 上对应题目下面的众多生动题解。另外题目的解析很依赖语言本身的特性(C++),非 C++ 慎入,不同语言的很多具体实现与细节都不一样,尤其涉及数据结构的内容。 只能说是一本刚及格的应试刷题读物(如果不看它昂贵的价格的话),食之无味,不能期待更多。
功利性太强,弃
下载
收藏