数据结构与算法书籍、视频、项目、网站、刷题技巧推荐(2021 年持续更新)...

今天整理出一些算法相关学习资源,包括书籍、算法刷题网站、项目资源、视频课程、面试要领这5个方面。

首先介绍一下技术书阅读方法论。

一.速读一遍(最好在1~2天内完成)

人的大脑记忆力有限,在一天内快速看完一本书会在大脑里留下深刻印象,对于之后复习以及总结都会有特别好的作用。 对于每一章的知识,先阅读标题,弄懂大概讲的是什么主题,再去快速看一遍,不懂也没有关系,但是一定要在不懂的地方做个记号,什么记号无所谓,但是要让自己后面再看的时候有个提醒的作用,看看第二次看有没有懂了些。

二.精读一遍(在2周内看完)

有了前面速读的感觉,第二次看会有慢慢深刻了思想和意识的作用,具体为什么不要问我,去问30年后的神经大脑专家,现在人类可能还没有总结出为什么大脑对记忆的完全方法论,但是,就像我们专业程序员,打代码都是先实践,然后就渐渐懂了过程,慢慢懂了原理,所以第二遍读的时候稍微慢下来,2周内搞定。记住一句话:没看完一个章节后,总结一下这个章节讲了啥。很关键。

三.实践(在整个过程中都要)

实践的时候,要注意不用都去实践,最好看着书,敲下代码,把重点的内容敲一遍有个肌肉记忆就很不错了。 以及到自己做过的项目中去把每个有涉及的原理的代码,研究一遍,就可以了

一共四个系列整整50+本电子书,找了好久终于齐了,如果都能看完看懂且科学的总结外加合理的实践,相信未来你的技术路会更好走,当然阿里巴巴,腾讯,阿里这些的Offer不将是梦,除了多看点技术书,你觉得还有什么能拿出来和985,211的朋友比呢?

最近在学习算法和数据结构+涉及一点acm方面的知识,看到一篇好的关于数据结构和算法的书籍,如果计算机系只开三门课,那么这三门课就一定是:离散数学,数据结构与算法,编译原理。如果只开一门课,那剩下的就一定是:数据结构与算法。

Niklaus Wirth说:算法+数据结构=程序。

不说废话了,下面列出一份数据结构+算法书单,从入门到进阶说起。

v2-5479c68ef4b0ee1f628b2feb2c85b42e_b.jpg

v2-5c5afbe3aa96eecaee6376ba5fe6bfe2_b.jpg


以下是每本书的推荐语,清楚自己缺的是什么,就下定决心去补吧,一个好工作意味着高收入,投资自己的时间换来更宝贵的东西。

我整理的这些书大家可以在这里获取,对于学习计算机的同学学习以及校招复习帮助非常大,且十分系统

【算法与数据结构】+一点点ACM从入门到进阶吐血整理推荐书单(珍藏版)


争取做到,看完这一篇,算法相关学习资料全掌握!话不多说,这就开始吧!

一:书籍推荐


【入门阶段】


1、啊哈!算法(豆瓣评分7.7)


插图和讲解相当到位~~让人看了很感兴趣,把算法用非常形象的方式表达出来,通俗易懂,这下学习算法的朋友有福了。

这是一本充满智慧和趣味的算法入门书。没有枯燥的描述,没有难懂的公式,一切以实际应用为出发点,通过幽默的语言配以可爱的插图来讲解算法。你更像是在阅读一个个轻松的小故事或是在玩一把趣味解谜游戏,在轻松愉悦中便掌握算法精髓,感受算法之美。

v2-9420f4d865f7753a9fc9ea0b9a53e363_b.jpg


2、算法图解(豆瓣评分8.4)

算法教科书通常让人昏昏欲睡,麻烦就在于算法是绕不开的必修课。以前大学有这个课程,看过几本算法书,都不太满意,看不懂很打击自信心。

而这本图解书确实有所突破,很容易看懂,不枯燥。书不到200页,我几个小时就看了一半。虽然都是些入门级的算法,经过作者梳理后就很清晰了。

我觉得这是最好的最有趣的算法入门书。媲美国内的《啊哈算法》那本书。

读完本书虽然没有什么高深的算法,但是可以自信地说算法入门了。

v2-5b55b8e67e128112d4af6625d72ed79c_b.jpg


3、《趣学算法》(豆瓣评分8.9)


非常好的一本书,图解多,思路清晰,不仅讲了问题分析算法设计的过程,还讲了如何优化算法,不同的数据结构上设计算法会有什么样的复杂度。值得推荐。

v2-802772ec6ca27f52ca097f56a1521d2a_b.jpg


【掌握阶段】


1、大话数据结构(豆瓣评分7.9)


时逢找工作,为笔试准备,需数据结构、数据库、c/c++、计算机系统、网络方面知识。对于数据结构,力荐此书,通俗易懂,非常适合计算机相关专业朋友…

本人本科初学数据结构时对于所谓时间复杂度完全摸不着头脑,虽然凭着绝佳的短期记忆力在中国式考试中拿到高分,但在实际程序设计开发中一无所用,故借此机会重学这方面知识。本书对时间复杂度,即大O阶的推导讲解十分细致,很容易就将“多年顽疾”解决。

由此管窥此书,其他方面知识点也讲得非常清楚,附有大量插图,更是适合对大段文字提不起兴趣的朋友。


2、算法设计与分析基础(豆瓣评分8.7)


本书十分适合用作算法设计和分析的基础教材,也适合任何有兴趣探究算法奥秘的读者使用,只要读者具备数据结构和离散数学的知识即可。


3、算法详解(卷1)——算法基础(豆瓣评分8.8)


本书为对算法感兴趣的广大读者提供了丰富而实用的资料,能够帮助读者提升算法思维能力。本书适合计算机专业的高校教师和学生,想要培养和训练算法思维和计算思维的IT专业人士,以及在准备面试的应聘者和面试官阅读参考。

v2-ae70cffc34d570c2ef8f3b446e8d32aa_b.jpg

【进阶阶段】


1、算法导论(原书第3版)(豆瓣评分9.2)


经典必看著作!!本书将严谨性和全面性融为一体,深入讨论各类算法,并着力使这些算法的设计和分析能为各个层次的读者接受。不建议初学者看,等有了一定的算法功底进行学习比较好。

v2-86ab61203ebfe67c29e63a5279d3fa36_b.jpg

2、编程珠玑(豆瓣评分9.1)


本书是计算机科学方面的经典名著。书的内容围绕程序设计人员面对的一系列实际问题展开。这本书最大的特点是里面涉及到了对于海量数据的处理方式,对实用程序设计技巧及基本设计原则进行了透彻而睿智的描述,为复杂的编程问题提供了清晰而完备的解决思路。本书对各个层次的程序员都具有很高的阅读价值。

v2-a68c7103d8c0eb8fe4bcb4a4d48ed581_b.jpg


4、计算机程序设计艺术(豆瓣评分9.8)


这本书首先介绍编程的基本概念和技术,然后详细讲解信息结构方面的内容,包括信息在计算机内部的表示方法、数据元素之间的结构关系,以及有效的信息处理方法。此外,书中还描述了编程在模拟、数值方法、符号计算、软件与系统设计等方面的初级应用。此第3版增加了数十项简单但重要的算法和技术,并根据当前研究发展趋势在数学预备知识方面做了大量修改。


5、算法第 4 版(豆瓣评分9.3)


《算法(英文版•第4版)》作为算法领域经典的参考书,全面介绍了关于算法和数据结构的必备知识,并特别针对排序、搜索、图处理和字符串处理进行了论述。第4版具体给出了每位程序员应知应会的50个算法,提供了实际代码,而且这些Java代码实现采用了模块化的编程风格,读者可以方便地加以改造。本书配套网站提供了本书内容的摘要及更多的代码实现、测试数据、练习、教学课件等资源。


6、算法引论(豆瓣评分9.1)


这本书是国际算法大师乌迪·曼博(Udi Manber)博士撰写的一本享有盛誉的著作。本书的特色有二,旨在提高读者的问题求解能力,使读者能够理解算法设计的过程和思想:一是强调算法设计的创造性过程,注重算法设计背后的创造性思想,而不拘泥于某个具体算法的详细讨论;二是将算法设计类比于定理归纳证明,揭示了算法设计的基本思想和本质。


【面试工作必看书籍】


1、剑指offer(豆瓣评分8.3)


这本书剖析了50个典型的程序员面试题,从基础知识、代码质量、解题思路、优化效率和综合能力五个方面系统整理了影响面试的5个要点。是面试必读书籍之一。

v2-9d1436c12c271be1d50229e517ed5522_b.jpg

2、编程之美(豆瓣评分8.4)
这本书收集了约60道算法和程序设计题目,这些题目大部分在近年的笔试、面试中出现过,或者是被微软员工热烈讨论过。作者试图从书中各种有趣的问题出发,引导读者发现问题,分析问题,解决问题,寻找更优的解法。

v2-ee847eab46cbb89f5d05af9fb92b0013_b.jpg

3、《挑战程序设计竞赛(第2版)》(豆瓣评分9.0)
本书对程序设计竞赛中的基础算法和经典问题进行了汇总,分为准备篇、初级篇、中级篇与高级篇4章。作者结合自己丰富的参赛经验,对严格筛选的110 多道各类试题进行了由浅入深、由易及难的细致讲解,并介绍了许多实用技巧。每章后附有习题,供读者练习,巩固所学。

v2-1dd4090ad533be011429df5b00dc1c33_b.jpg


4、《程序员实用算法》(豆瓣评分7.3)
本书重点关注的是实用、立即可用的代码,并且广泛讨论了可移植性和特定于实现的细节。结构清晰,示例丰富,可作为广大程序员的参考用书。

v2-06c38bf56295cf039f98ffe9e1708aac_b.jpg

二:算法刷题网站

1、LeetCode


估计 leetcode(力扣)大家都很熟悉了,很多国内外的程序员在上面刷题,难度从 Easy、Medium 至 Hard 都有,据说很多面试官都会从中挑选各种题目,号称大厂的筛码工。

2、AlgoMooc

一个提供算法图解的平台,从此,刷题不再枯燥。

AlgoMooc-一个专属于程序员的平台,和大家一起刷题

3、牛客网


牛客网作为国内内容超级丰富的 IT 题库,各种题库+面试+学习+求职+讨论 360 度无死角服务,堪称"互联网求职神器"。它好就好在不只是一个刷题的平台,还是一个交流学习的平台。


4、hihoCoder


网站的技术团队来自于原北大 POJ 的开发团队,至于 POJ 会在后面的篇章中介绍,反正膜拜就完事了。一些知名的大厂比如微软、百度、腾讯、网易等会在上面举办在线编程比赛,风格倒是和 ACM 比赛类似。

5、HDU

杭电(杭州电子科技大学)的 OJ 大概是国内最火的几个 OJ 之一了,现在上面大概有接近 6k 的题量,网上有很多的刷题顺序,刷题指南。

6、POJ

作为国内最火的几大 OJ 之一,现在上面有 3k+ 的题量,关于 POJ 的刷题指南网上更是很多。

7、代码课堂

大学生在线编程首选平台,里面也有很多IT题库,种类丰富,题量齐全。

注册 - 代码课堂-专注在线编程学习,零基础编程入门的教程网站!



三:项目资源

1、Competitive-Programming-Docs

项目介绍:这个项目是一个总资源集,内容非常全面,包含算法竞赛论文,课件,文档,笔记,平台等资料。

项目地址:
github.com/LzyRapx/Comp

2、负重前行,前端工程师如何系统练习数据结构和算法?【上】

项目介绍:作者详细提供了系统练习数据结构和算法的方法论。

项目地址:
juejin.im/post/68449040

3、GitHub——微软项目

此存储库包含构建推荐系统的示例和最佳实践,作为 Jupyter 笔记本提供。这些示例详细介绍了我们对五个关键任务的学习:准备数据模型、脱机指标评估算法、型号选择和优化、操作性

项目地址:
github.com/microsoft/re

4、五分钟学算法:算法与数据结构文章详细分类与整理!

项目介绍:该项目包含10个数据结构:数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、Trie 树,以及10个算法:递归、排序、二分查找、搜索、哈希算法、贪心算法、分治算法、回溯算法、动态规划、字符串匹配算法。

项目地址:
cxyxiaowu.com/7072.html

5、 GitHub开源项目——Build Your Own X

该库收集了诸多优质资源,教你如何构建一些属于自己的东西,内容主要分为增强现实、区块链、机器人、编辑器、命令行工具、神经网络、操作系统等几大类别。

项目地址:
github.com/danistefanov

6、GitHub开源项目——Gitignore

帮助Git工程师解决:每次你需要为项目创建 .gitignore 文件时,只需要打开这个项目,针对你当前所用编程语言或框架,去寻找对应 .gitignore 模板替换即可。

项目地址:
github.com/github/gitig

四:视频课程

1、300分钟搞定数据结构与算法

LeetCode 官方国内唯一合作课程,leetCode刷题秘籍独家揭秘,专注于面试场景,全程动态动画教学。

地址:bilibili.com/video/av79

2、麻省理工学院公开课:算法导论

课程主题包含了:排序、搜寻树、堆积及散列;各个击破法、动态规划、偿还分析、图论算法、最短路径、网络流、计算几何、数字理论性算法;多项式及矩阵的运算;高速缓存技术及并行运算。


地址:open.163.com/special/op

4、中国大学MOOC-数据结构

国内关于数据结构非常经典的课程。
地址:icourse163.org/course/z

五:面试要领

算法与面试之-如何准备算法面试

主要介绍算法面试的一些问题、以及如何准备算法面试。
地址:微信大佬总结的算法学习经验-五分钟学算法

原文链接: 算法学习资料汇总
作者:码小会

  • 30
    点赞
  • 114
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
### 回答1: 学习数据结构算法通常需要以下几步: 1. 了解基本的编程知识,包括变量、条件语句、循环、函数等。 2. 学习基本的数据结构,如数组、链表、栈、队列、树等。 3. 学习常见的算法,如排序、搜索、图论等。 4. 多做题,熟练掌握数据结构算法的应用。 5. 学习进阶的数据结构算法,如哈希表、并查集、最短路等。 可以通过读书、看视频、做题等方式来学习数据结构算法。有很多优秀的书籍和在线课程可以帮助你学习。 ### 回答2: 数据结构与算法是计算机科学中非常重要的基础知识,学习好这门课程对于提高编程能力和解决实际问题至关重要。以下是我对于如何学习数据结构与算法的建议。 第一,理解基本概念。首先要理解数据结构算法的基本概念,例如数组、链表、栈、队列等数据结构,以及排序、查找、递归、动态规划等算法。可以通过阅读相关教材、参考书籍或者在线教程来学习这些概念,并进行实践。 第二,掌握基本操作。在了解了基本概念之后,需要掌握数据结构与算法的基本操作。这包括插入、删除、查找等操作,以及排序、查找等算法的具体实现方法。可以通过编写代码来实践这些操作,并进行调试和优化。 第三,解决问题。学习数据结构与算法的最终目的是解决实际问题。可以选择一些经典的问题,例如查找算法中的二分查找、排序算法中的快速排序等,通过分析问题的特点和要求,选择合适的数据结构算法来解决,并进行实现和测试。 第四,练习和总结。学习数据结构与算法需要不断地进行练习和总结。可以选择一些习题进行练习,挑战自己的编程能力。同时,及时总结和归纳所学到的知识和经验,将这些知识内化为自己的思维方式和工作习惯。 最后,不断学习和提高。数据结构与算法是一门广阔而深奥的学科,需要不断学习和提高自己的知识水平。可以参与相关的讨论和学习交流,阅读更深入的研究和应用资料,参与项目实践以提升自己的能力和经验。 总之,数据结构与算法是一门需要深入理解和不断实践的学科。通过理解基本概念、掌握基本操作、解决实际问题、练习和总结,以及持续学习和提高,可以逐渐掌握和应用好这门课程的知识。 ### 回答3: 学习数据结构与算法是程序员必备的基本功,以下是一些建议。 首先,了解数据结构的概念和基本的数据结构类型,如数组、链表、栈、队列、树、图等。掌握它们的定义、特点和基本操作。 其次,学习算法的基本思想和常用的算法技巧,如递归、分治、贪心、动态规划等。了解它们的应用场景和解决问题的思路。 然后,通过学习经典的数据结构与算法的实现代码来加深理解。可以通过书籍、在线教程、视频课程等多种途径进行学习,找到适合自己的学习资源。 接着,通过刷题来提升自己的实践能力。可以选择一些在线刷题平台,如LeetCode、LintCode等,挑选一些经典的算法问题进行解答。在实践中不断思考和总结,逐渐掌握解决问题的套路和算法的优化思路。 此外,参与算法竞赛和交流也是一个不错的学习方式。可以参加一些算法竞赛平台的比赛,与其他程序员进行交流和学习。也可以参加一些线下的技术交流活动,与其他程序员面对面地讨论和学习。 最后,持续学习和实践是关键。数据结构与算法是一个广阔的领域,需要不断学习,不断实践,不断总结经验。在实际的项目中尽量应用所学的数据结构与算法,提升自己的编程能力。 总之,学习数据结构与算法需要理论与实践相结合,要有积极的学习态度和持之以恒的学习精神。只有不断努力,才能在数据结构与算法的学习中取得进步。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值