今天整理出一些算法相关学习资源,包括书籍、算法刷题网站、项目资源、视频课程、面试要领这5个方面。
人的大脑记忆力有限,在一天内快速看完一本书会在大脑里留下深刻印象,对于之后复习以及总结都会有特别好的作用。 对于每一章的知识,先阅读标题,弄懂大概讲的是什么主题,再去快速看一遍,不懂也没有关系,但是一定要在不懂的地方做个记号,什么记号无所谓,但是要让自己后面再看的时候有个提醒的作用,看看第二次看有没有懂了些。
有了前面速读的感觉,第二次看会有慢慢深刻了思想和意识的作用,具体为什么不要问我,去问30年后的神经大脑专家,现在人类可能还没有总结出为什么大脑对记忆的完全方法论,但是,就像我们专业程序员,打代码都是先实践,然后就渐渐懂了过程,慢慢懂了原理,所以第二遍读的时候稍微慢下来,2周内搞定。记住一句话:没看完一个章节后,总结一下这个章节讲了啥。很关键。
实践的时候,要注意不用都去实践,最好看着书,敲下代码,把重点的内容敲一遍有个肌肉记忆就很不错了。 以及到自己做过的项目中去把每个有涉及的原理的代码,研究一遍,就可以了
一共四个系列整整50+本电子书,找了好久终于齐了,如果都能看完看懂且科学的总结外加合理的实践,相信未来你的技术路会更好走,当然阿里巴巴,腾讯,阿里这些的Offer不将是梦,除了多看点技术书,你觉得还有什么能拿出来和985,211的朋友比呢?
最近在学习算法和数据结构+涉及一点acm方面的知识,看到一篇好的关于数据结构和算法的书籍,如果计算机系只开三门课,那么这三门课就一定是:离散数学,数据结构与算法,编译原理。如果只开一门课,那剩下的就一定是:数据结构与算法。
Niklaus Wirth说:算法+数据结构=程序。
不说废话了,下面列出一份数据结构+算法书单,从入门到进阶说起。
以下是每本书的推荐语,清楚自己缺的是什么,就下定决心去补吧,一个好工作意味着高收入,投资自己的时间换来更宝贵的东西。
我整理的这些书大家可以在这里获取,对于学习计算机的同学学习以及校招复习帮助非常大,且十分系统:
【算法与数据结构】+一点点ACM从入门到进阶吐血整理推荐书单(珍藏版)
争取做到,看完这一篇,算法相关学习资料全掌握!话不多说,这就开始吧!
一:书籍推荐
【入门阶段】
1、啊哈!算法(豆瓣评分7.7)
插图和讲解相当到位~~让人看了很感兴趣,把算法用非常形象的方式表达出来,通俗易懂,这下学习算法的朋友有福了。
这是一本充满智慧和趣味的算法入门书。没有枯燥的描述,没有难懂的公式,一切以实际应用为出发点,通过幽默的语言配以可爱的插图来讲解算法。你更像是在阅读一个个轻松的小故事或是在玩一把趣味解谜游戏,在轻松愉悦中便掌握算法精髓,感受算法之美。
2、算法图解(豆瓣评分8.4)
算法教科书通常让人昏昏欲睡,麻烦就在于算法是绕不开的必修课。以前大学有这个课程,看过几本算法书,都不太满意,看不懂很打击自信心。
而这本图解书确实有所突破,很容易看懂,不枯燥。书不到200页,我几个小时就看了一半。虽然都是些入门级的算法,经过作者梳理后就很清晰了。
我觉得这是最好的最有趣的算法入门书。媲美国内的《啊哈算法》那本书。
读完本书虽然没有什么高深的算法,但是可以自信地说算法入门了。
3、《趣学算法》(豆瓣评分8.9)
非常好的一本书,图解多,思路清晰,不仅讲了问题分析算法设计的过程,还讲了如何优化算法,不同的数据结构上设计算法会有什么样的复杂度。值得推荐。
【掌握阶段】
1、大话数据结构(豆瓣评分7.9)
时逢找工作,为笔试准备,需数据结构、数据库、c/c++、计算机系统、网络方面知识。对于数据结构,力荐此书,通俗易懂,非常适合计算机相关专业朋友…
本人本科初学数据结构时对于所谓时间复杂度完全摸不着头脑,虽然凭着绝佳的短期记忆力在中国式考试中拿到高分,但在实际程序设计开发中一无所用,故借此机会重学这方面知识。本书对时间复杂度,即大O阶的推导讲解十分细致,很容易就将“多年顽疾”解决。
由此管窥此书,其他方面知识点也讲得非常清楚,附有大量插图,更是适合对大段文字提不起兴趣的朋友。
2、算法设计与分析基础(豆瓣评分8.7)
本书十分适合用作算法设计和分析的基础教材,也适合任何有兴趣探究算法奥秘的读者使用,只要读者具备数据结构和离散数学的知识即可。
3、算法详解(卷1)——算法基础(豆瓣评分8.8)
本书为对算法感兴趣的广大读者提供了丰富而实用的资料,能够帮助读者提升算法思维能力。本书适合计算机专业的高校教师和学生,想要培养和训练算法思维和计算思维的IT专业人士,以及在准备面试的应聘者和面试官阅读参考。
【进阶阶段】
1、算法导论(原书第3版)(豆瓣评分9.2)
经典必看著作!!本书将严谨性和全面性融为一体,深入讨论各类算法,并着力使这些算法的设计和分析能为各个层次的读者接受。不建议初学者看,等有了一定的算法功底进行学习比较好。
2、编程珠玑(豆瓣评分9.1)
本书是计算机科学方面的经典名著。书的内容围绕程序设计人员面对的一系列实际问题展开。这本书最大的特点是里面涉及到了对于海量数据的处理方式,对实用程序设计技巧及基本设计原则进行了透彻而睿智的描述,为复杂的编程问题提供了清晰而完备的解决思路。本书对各个层次的程序员都具有很高的阅读价值。
4、计算机程序设计艺术(豆瓣评分9.8)
这本书首先介绍编程的基本概念和技术,然后详细讲解信息结构方面的内容,包括信息在计算机内部的表示方法、数据元素之间的结构关系,以及有效的信息处理方法。此外,书中还描述了编程在模拟、数值方法、符号计算、软件与系统设计等方面的初级应用。此第3版增加了数十项简单但重要的算法和技术,并根据当前研究发展趋势在数学预备知识方面做了大量修改。
5、算法第 4 版(豆瓣评分9.3)
《算法(英文版•第4版)》作为算法领域经典的参考书,全面介绍了关于算法和数据结构的必备知识,并特别针对排序、搜索、图处理和字符串处理进行了论述。第4版具体给出了每位程序员应知应会的50个算法,提供了实际代码,而且这些Java代码实现采用了模块化的编程风格,读者可以方便地加以改造。本书配套网站提供了本书内容的摘要及更多的代码实现、测试数据、练习、教学课件等资源。
6、算法引论(豆瓣评分9.1)
这本书是国际算法大师乌迪·曼博(Udi Manber)博士撰写的一本享有盛誉的著作。本书的特色有二,旨在提高读者的问题求解能力,使读者能够理解算法设计的过程和思想:一是强调算法设计的创造性过程,注重算法设计背后的创造性思想,而不拘泥于某个具体算法的详细讨论;二是将算法设计类比于定理归纳证明,揭示了算法设计的基本思想和本质。
【面试工作必看书籍】
1、剑指offer(豆瓣评分8.3)
这本书剖析了50个典型的程序员面试题,从基础知识、代码质量、解题思路、优化效率和综合能力五个方面系统整理了影响面试的5个要点。是面试必读书籍之一。
2、编程之美(豆瓣评分8.4)
这本书收集了约60道算法和程序设计题目,这些题目大部分在近年的笔试、面试中出现过,或者是被微软员工热烈讨论过。作者试图从书中各种有趣的问题出发,引导读者发现问题,分析问题,解决问题,寻找更优的解法。
3、《挑战程序设计竞赛(第2版)》(豆瓣评分9.0)
本书对程序设计竞赛中的基础算法和经典问题进行了汇总,分为准备篇、初级篇、中级篇与高级篇4章。作者结合自己丰富的参赛经验,对严格筛选的110 多道各类试题进行了由浅入深、由易及难的细致讲解,并介绍了许多实用技巧。每章后附有习题,供读者练习,巩固所学。
4、《程序员实用算法》(豆瓣评分7.3)
本书重点关注的是实用、立即可用的代码,并且广泛讨论了可移植性和特定于实现的细节。结构清晰,示例丰富,可作为广大程序员的参考用书。
二:算法刷题网站
1、LeetCode
估计 leetcode(力扣)大家都很熟悉了,很多国内外的程序员在上面刷题,难度从 Easy、Medium 至 Hard 都有,据说很多面试官都会从中挑选各种题目,号称大厂的筛码工。
2、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
项目介绍:这个项目是一个总资源集,内容非常全面,包含算法竞赛论文,课件,文档,笔记,平台等资料。
项目地址:
https://github.com/LzyRapx/Competitive-Programming-Docs
2、负重前行,前端工程师如何系统练习数据结构和算法?【上】
项目介绍:作者详细提供了系统练习数据结构和算法的方法论。
项目地址:
https://juejin.im/post/6844904061947346957
3、GitHub——微软项目
此存储库包含构建推荐系统的示例和最佳实践,作为 Jupyter 笔记本提供。这些示例详细介绍了我们对五个关键任务的学习:准备数据、模型、脱机指标评估算法、型号选择和优化、操作性、
项目地址:
https://github.com/microsoft/recommenders
4、五分钟学算法:算法与数据结构文章详细分类与整理!
项目介绍:该项目包含10个数据结构:数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、Trie 树,以及10个算法:递归、排序、二分查找、搜索、哈希算法、贪心算法、分治算法、回溯算法、动态规划、字符串匹配算法。
项目地址:
https://www.cxyxiaowu.com/7072.html
5、 GitHub开源项目——Build Your Own X
该库收集了诸多优质资源,教你如何构建一些属于自己的东西,内容主要分为增强现实、区块链、机器人、编辑器、命令行工具、神经网络、操作系统等几大类别。
项目地址:
https://github.com/danistefanovic/build-your-own-x
6、GitHub开源项目——Gitignore
帮助Git工程师解决:每次你需要为项目创建 .gitignore 文件时,只需要打开这个项目,针对你当前所用编程语言或框架,去寻找对应 .gitignore 模板替换即可。
项目地址:
https://github.com/github/gitignore
四:视频课程
1、300分钟搞定数据结构与算法
LeetCode 官方国内唯一合作课程,leetCode刷题秘籍独家揭秘,专注于面试场景,全程动态动画教学。
地址:https://www.bilibili.com/video/av796404932
2、麻省理工学院公开课:算法导论
课程主题包含了:排序、搜寻树、堆积及散列;各个击破法、动态规划、偿还分析、图论算法、最短路径、网络流、计算几何、数字理论性算法;多项式及矩阵的运算;高速缓存技术及并行运算。
地址:http://open.163.com/special/opencourse/algorithms.html
4、中国大学MOOC-数据结构
国内关于数据结构非常经典的课程。
地址:https://www.icourse163.org/course/zju0901-93001
五:面试要领
算法与面试之-如何准备算法面试
主要介绍算法面试的一些问题、以及如何准备算法面试。
地址:微信大佬总结的算法学习经验-五分钟学算法
原文链接: 算法学习资料汇总
作者:码小会