算法
先来看三本入门书籍。 这三本入门书籍中的任何一本拿来作为入门学习都非常好。

我个人比较倾向于 《我的第一本算法书》 这本书籍,虽然它相比于其他两本书集它的豆瓣评分略低一点。我觉得它的配图以及讲解是这三本书中最优秀,唯一比较明显的问题就是没有代码示例。但是,我觉得这不影响它是一本好的算法书籍。因为本身下面这三本入门书籍的目的就不是通过代码来让你的算法有多厉害,只是作为一本很好的入门书籍让你进入算法学习的大门。
再推荐几本比较经典的算法书籍。

这本书内容非常清晰易懂,适合数据结构和算法小白阅读。书中把一些常用的数据结构和算法都介绍到了!
我在大二的时候被我们的一个老师强烈安利过!自己也在当时购买了一本放在宿舍,到离开大学的时候自己大概看了一半多一点。因为内容实在太多了!另外,这本书还提供了详细的 Java 代码,非常适合学习 Java 的朋友来看,可以说是 Java 程序员的必备书籍之一了。
下面这些书籍都是经典中的经典,但是阅读起来难度也比较大,不做太多阐述,神书就完事了!
如果你仅仅是准备算法面试的话,不建议你阅读下面这些书籍。
经典名著,ACM 冠军、亚军这种算法巨佬都强烈推荐的一本书籍。这本书的作者也非常厉害,Java 之父 James Gosling 就是他的学生。
很多人都说这本书不是教你具体的算法,而是教你一种编程的思考方式。这种思考方式不仅仅在编程领域适用,在其他同样适用。

这是一本被 GitHub 上的爆火的计算机自学项目 Teach Yourself Computer Science 强烈推荐的一本算法书籍。
类似的神书还有 《算法导论》、《计算机程序设计艺术(第 1 卷)》 。
如果说你要准备面试的话,下面这几本书籍或许对你有帮助!

这本面试宝典上面涵盖了很多经典的算法面试题,如果你要准备大厂面试的话一定不要错过这本书。
《剑指 Offer》 对应的算法编程题部分的开源项目解析:CodingInterviews 。

《程序员代码面试指南(第 2 版)》里的大部分题目相比于《剑指 offer》 来说要难很多,题目涵盖面相比于《剑指 offer》也更加全面。全书一共有将近 300 道真实出现过的经典代码面试题。
视频的话,推荐北京大学的国家精品课程—程序设计与算法(二)算法基础,讲的非常好!

这个课程把七种基本的通用算法(枚举、二分、递归、分治、动态规划、搜索、贪心)都介绍到了。各种复杂算法问题的解决,都可能用到这些基本的思想。并且,这个课程的一部分的例题和 ACM 国际大学生程序设计竞赛中的中等题相当,如果你能够解决这些问题,那你的算法能力将超过绝大部分的高校计算机专业本科毕业生。
数据结构
其实,上面提到的很多算法类书籍(比如 《算法》 和 《算法导论》)都详细地介绍了常用的数据结构。
我这里再另外补充基本和数据结构相关的书籍。

入门类型的书籍,读起来比较浅显易懂,适合没有数据结构基础或者说数据结构没学好的小伙伴用来入门数据结构。

质量很高,介绍了常用的数据结构和算法。
类似的还有 《数据结构与算法分析:C 语言描述》、《数据结构与算法分析:C++ 描述》

视频的话推荐你看浙江大学的国家精品课程—《数据结构》 。
姥姥的数据结构讲的非常棒!不过,还是有一些难度的,尤其是课后练习题。