• 欢迎访问热点图书网

算法训练营(套装共2本)-电子书下载

学习教育 2年前 (2022-07-15) 1953次浏览 已收录 0个评论 扫描二维码

简介

《算法训练营:海量图解+竞赛刷题(入门篇)》以海量图解的形式,详细讲解常用的数据结构与算法,又融入大量的竞赛实例和解题技巧。通过对本书的学习,读者可掌握12种初级数据结构、15种常用STL函数、10种二叉树和图的应用,以及8种搜索技术,并领悟不同的数据结构和算法的精髓,熟练应用各种算法解决实际问题。 本书总计9章。第1章讲解C++语言基础,包括语法、函数、递归和数组;第2章讲解算法入门知识,包括算法复杂度计算、贪心算法、分治算法和STL应用;第3章讲解线性表的应用,包括顺序表、单链表、双向链表、循环链表和静态链表;第4章讲解栈和队列的应用,包括顺序栈、链栈、顺序队列和链队列;第5章讲解树的应用,包括树的存储、二叉树遍历与还原、哈夫曼编码;第6章讲解图论基础,包括图的存储、图的搜索和图的连通性;第7章讲解图的应用,包括最短路径、最小生成树、拓扑排序和关键路径;第8章讲解查找算法,包括哈希表、字符串模式匹配、二叉搜索树和平衡二叉树;第9章讲解搜索技术,包括二分搜索、深度优先搜索、广度优先搜索和启发式搜索。 《算法训练营:海量图解+竞赛刷题(进阶篇)》以海量图解的形式,详细讲解常用的数据结构与算法,并结合竞赛实例引导读者进行刷题实战。通过对本书的学习,读者将掌握22种高级数据结构、7种动态规划算法、5种动态规划优化技巧,以及5种网络流算法,并熟练应用各种算法解决实际问题。 本书总计8章。第1章讲解实用数据结构,包括并查集、优先队列;第2章讲解区间信息维护与查询,包括倍增、ST、RMQ、LCA、树状数组、线段树和分块;第3章讲解字符串处理,包括字典树、AC自动机和后缀数组;第4章讲解树上操作问题,包括点分治、边分治、树链剖分和动态树;第5章讲解各种平衡二叉树,包括Treap、伸展树和SBT;第6章讲解数据结构进阶,包括KD树、左偏树、跳跃表、树套树和可持久化数据结构;第7章讲解动态规划及其优化,包括背包问题、线性DP、区间DP、树形DP、数位DP、状态压缩DP、插头DP和动态规划优化方法;第8章讲解网络流问题,包括常用网络流算法、二分图最大匹配、最大流最小割定理和最小费用最大流。本书对每个算法都进行详细图解并搭配竞赛实例,重点讲解如何分析问题、优化算法,以期读者在短时间内掌握该算法并进行刷题实战。

部分摘录:
近年来,算法行业非常火爆,越来越多的人在学习算法。目前,计算机的最重要领域之一是人工智能,而人工智能的核心是算法,算法已渗透到互联网、商业、金融业、航空、军事等各个领域,正在改变着这个世界。
写作背景
在IT领域,数据结构与算法的应用无处不在。数据结构与算法是计算机开发人员的基本功,很多面试都要考查数据结构与算法。学习数据结构与算法不仅可以培养我们的算法思维,提高我们分析问题、解决问题的能力,还可以让我们快速学习新技术,以更高的视角看待问题。
数据结构与算法教材一般晦涩难懂。为了让更多的人轻松学习算法、爱上算法,笔者写作了《趣学数据结构》《趣学算法》两本书。笔者发现,读者特别喜欢搭配了大量图解的通俗易懂的讲解方式。很多读者也在呼吁笔者写一本结合算法竞赛实例进行讲解的书。经过近两年的筹备,《算法训练营:海量图解+竞赛刷题(入门篇)》和《算法训练营:海量图解+竞赛刷题(进阶篇)》两本书终于要和大家见面了,非常感谢各位读者的大力支持。
学习建议
算法学习的过程,实际上是通过大量实例,充分体会遇到问题时该如何分析:采用什么数据结构,使用什么算法策略,算法的复杂性如何,是否有优化的可能,等等。这里有以下几个建议。
◇ 第1个建议:学经典,多理解。
算法书有很多,初学者最好选择图解较多的入门书,当然,也可以选择多本书,从多个角度进行对比和学习。先看书中的图解,理解各种经典问题的求解方法,如果还不明白,则可以看视频讲解,理解之后再看代码,尝试自己动手上机运行。如有必要,则可以将算法的求解过程通过图解方式展示出来,以加深对算法的理解。
◇ 第2个建议:看题解,多总结。
在掌握书中的经典算法之后,可以在刷题网站进行专项练习,比如贪心算法、分治算法、动态规划、网络流等。算法比数据结构更加灵活,对同一道题目可以采用不同的算法解决,算法复杂性也不同。如果想不到答案,则可以看题解,比较自己的想法与题解的差距。要多总结题目类型及最优解法,然后找相似的题目并自己动手解决问题。
◇ 第3个建议:举一反三,灵活运用。
通过专项刷题,见多识广,总结常用的算法模板,熟练应用套路,举一反三、灵活运用,逐步提升刷题速度,力争“bug free”(无缺陷)。
如何进行刷题实战
刷题的过程就是熟练应用数据结构与算法的过程。在刷题过程中,要学会分析问题、解决问题的方法,总结常用的算法模板和套路,快速写出代码,通过锻炼达到“bug free”。可以集中时间进行系统性专项刷题,不可三天打鱼、两天晒网,也不可随机刷题。题不在多,在于精。通过看书掌握一种数据结构与算法之后,便可找该知识相关的简单题目试手,从易到难。刷题时,可以先在编译系统中编译通过,等测试用例通过且检查无误后再提交,因为在比赛中多次提交会被罚时。刷题网站有很多,算法竞赛刷题网站有Vjudge、POJ、HDU、Code Forces、洛谷等,找工作刷题网站有LeetCode。提交结果类型如下。
• AC(Accepted):通过。
• WA(Wrong Answer):答案错误。
• TLE(Time Limit Exceed):超时。
• OLE(Output Limit Exceed):超过输出限制。
• MLE(Memory Limit Exceed):超出内存。
• RE(Runtime Error):运行时错误。
• PE(Presentation Error):格式错误。
• CE(Compile Error):无法编译。
测试用例通过而提交不通过是很正常的,因为在测试用例中仅有一两组数据,而在后台有大量测试数据。遇到提交不通过的情况时,要首先根据提示判断错误类型,根据错误类型分析原因;然后冷静分析算法逻辑、易错点、特殊情况判断等,看看选择的数据结构和算法是否合适,是否存在死循环。在刷题过程中会发现很多“坑”,一定要记录下来,避免下次“踩坑”。
看题目时要看数据规模、时间限制和空间限制,看看设计的算法是否会超时超限,做到心中有数。如果限制时间为1s,则问题规模(n )和算法时间复杂度之间的关系如下。
• n ≤11:O (n !)。
• n ≤25:O (2 n )。
• n ≤5000:O (n 2 )。
• n ≤106 :O (n logn )。
• n ≤107 :O (n )。
• n >108 :O (logn )。
本书特色
本书具有以下特色。
(1)完美图解,通俗易懂。本书对每个算法的基本操作都有图解演示,通过图解,许多问题都变得简单,可迎刃而解。
(2)实例丰富,简单有趣。本书结合大量竞赛实例,讲解如何利用数据结构与算法解决实际问题,使复杂难懂的问题变得简单有趣,帮助读者轻松掌握算法知识,体会其中的妙处。
(3)深入浅出,透析本质。本书透过问题看本质,重点讲解如何分析和解决问题。本书采用了简洁易懂的代码,对数据结构设计和算法的描述全面细致,而且有算法复杂性分析及优化过程。
(4)实战演练,循序渐进。本书在对每个数据结构与算法讲解清楚后,都进行了实战演练,使读者在实战中体会数据结构与算法的设计和操作,从而提高独立思考、动手实践的能力。书中有丰富的练习题和竞赛题,可帮助读者及时检验知识掌握情况,为从小问题出发,逐步解决大型复杂性工程问题奠定基础。
(5)网络资源,技术支持。本书为读者提供书中所有范例程序的源代码、竞赛题及答案解析,读者对这些源代码可以自由修改编译,以符合自己的需要。本书提供博客、微信群、QQ群技术支持,可随时为读者答疑解惑。
建议和反馈
写书是极其琐碎、繁重的工作,尽管笔者已经尽力使本书的内容和网络支持接近完美,但仍然可能存在很多漏洞和瑕疵。欢迎读者提供关于本书的反馈意见,因为对本书的评论和建议都有利于我们改进和提高,以帮助更多的读者。如果对本书有什么评论和建议,或者有问题需要帮助,则可以致信rainchxy@126.com与笔者交流,笔者将不胜感激。
读者资源请参照本书封底提示。
致谢
感谢笔者的家人和朋友在本书写作过程中提供的大力支持。感谢电子工业出版社工作严谨、高效的张国霞编辑促成本书的早日出版。感谢提供宝贵意见的同事们。感谢提供技术支持的同学们。感恩遇到这么多良师益友!

下载地址

下载
喜欢 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址