哪本《数据结构与算法》最好？
大学刷题怪，看不少常见的数据结构书，本科毕业拿到BAT 各大互联网公司 Offer，这题我太有回答权了！！！ 大学的时候没事干就是刷 Leetcode，尤其是校招前那段时间，刷遍了Leetcode 常见的题型，大概刷了近六百来道： 先来一张数据结构与算法全景图：  可能有同学要问，明明是学数据结构和刷题有什么关系呢？ 这就是一个很多同学的学习误区了，学习数据结构就是记住了各种树、图，但是不会应用！！ 导致很多人，刷 Leetcode 永远停在了 Two Sum，在刷题的时候一定要刷经典题，要举一反三，从一类题抽象出共通的解法，才能以不变应万变，这才是刷题的本质，而不是单单为了刷题而刷题。接下来，给大家推荐一些非常不错的《数据结构与算法》书籍，大家记得双击点赞收藏一波哟~ 视频可以看看 ： 这两个是我看过觉得不错的才在这推荐，第一个是初学数据结构时跟着看，第二个是大三复习时刷的。 入门版书籍可以看看： 稍微进阶点的： 终极版： 有了基础的算法思想和数据结构储备，剩下的就是刷题了： 刷题网站： 国外算法练习网站 最重要的是，保持手感，有空就刷一道。 1、啊哈！算法（豆瓣评分7.7）  这是一本充满智慧和趣味的算法入门书。没有枯燥的描述，没有难懂的公式，一切以实际应用为出发点，通过幽默的语言配以可爱的插图来讲解算法。你更像是在阅读一个个轻松的小故事或是在玩一把趣味解谜游戏，在轻松愉悦中便掌握算法精髓，感受算法之美。 2. 算法图解 图文并茂，以让人容易理解的方式阐释了算法，旨在帮助程序员在日常项目中更好地发挥算法的能量。书中的前三章将帮助你打下基础，带你学习二分查找、大O表示法、两种基本的数据结构以及递归等。余下的篇幅将主要介绍应用广泛的算法，具体内容包括：面对具体问题时的解决技巧，比如，何时采用贪婪算法或动态规划；散列表的应用；图算法；K最近邻算法。 3.大话数据结构（豆瓣评分7.9） 《大话设计模式》作者程杰潜心三年推出的扛鼎之作！以一个计算机教师教学为场景，讲解数据结构和相关算法的知识。通篇以一种趣味方式来叙述，大量引用了各种各样的生活知识来类比，并充分运用图形语言来体现抽象内容，对数据结构所涉及到的一些经典算法做到逐行分析、多算法比较。与市场上的同类数据结构图书相比，本书内容趣味易读，算法讲解细致深刻，是一本非常适合自学的读物。 4. 算法之美(豆瓣8.0分)  这本书告诉我们如何更有效地利用直觉、什么时候应该把选择权交给命运、无所适从的时候应该如何做出选择，以及如何有效地与他人保持联系。从找配偶到找停车位，从组织管理个人邮箱的收件箱到理解人类记忆的作用原理，这本书把计算机科学的智慧转化为人类生活的策略，引导我们做出明智的选择。 5.编程珠玑（豆瓣评分9.1 本书是计算机科学方面的经典名著。书的内容围绕程序设计人员面对的一系列实际问题展开。作者Jon Bentley 以其独有的洞察力和创造力，引导读者理解这些问题并学会解决方法，而这些正是程序员实际编程生涯中至关重要的。本书的特色是通过一些精心设计的有趣而又颇具指导意义的程序，对实用程序设计技巧及基本设计原则进行了透彻而睿智的描述，为复杂的编程问题提供了清晰而完备的解决思路。本书对各个层次的程序员都具有很高的阅读价值。 **6.算法导论（原书第3版）（豆瓣评分9.2） 本书将严谨性和全面性融为一体，深入讨论各类算法，并着力使这些算法的设计和分析能为各个层次的读者接受。 接下来说说刷题吧，毕竟学算法离不开刷题 首先，大家要明白一个点，那就是我们刷题不是为了去刷题，刷题的目的是为了巩固数据结构与算法，那么也就是说刷题前我们就要学完一遍常见的数据结构与算法，不然你去巩固啥呢？是吧 在这里我就要强调数据结构如何学习了。 首先要明白，不管是数组、树、堆还是啥，最终对应在内存中的存储方式只有两种: 数组由于是紧凑连续存储,可以随机访问，通过索引快速找到对应元素，而且相对节约存储空间。但正因为连续存储，内存空间必须一次性分配够，所 以说数组如果要扩容，需要重新分配一块更大的空间，再把数据全部复制过 去，时间复杂度 O(N);而且你如果想在数组中间进行插入和删除，每次必 须搬移后面的所有数据以保持连续，时间复杂度 O(N)。 链表因为元素不连续，而是靠指针指向下一个元素的位置，所以不存在数组 的扩容问题;如果知道某一元素的前驱和后驱，操作指针即可删除该元素或 者插入新元素，时间复杂度 O(1)。但是正因为存储空间不连续，你无法根 据一个索引算出对应元素的地址，所以不能随机访问;而且由于每个元素必 须存储指向前后元素位置的指针，会消耗相对更多的储存空间。 那么基于这两种最基本的数据结构我们就可以构建： https://www.cnblogs.com/skywang12345/p/3561803.html https://www.cnblogs.com/skywang12345/p/3576328.html https://www.cnblogs.com/skywang12345/p/3610187.html https://www.cnblogs.com/skywang12345/p/3707597.html https://www.cnblogs.com/skywang12345/p/3711483.html  推荐阅读: 如果觉得不错的话，记得帮我 @编程指北 点个赞哟~