热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

来了,来了!你们要的写给Java程序员看的算法学习指南!

点击关注上方“五分钟学算法”,设为“置顶或星标”,第一时间送达干货。转自JavaGuide这篇文章我会推荐一些关于算法学习的书籍以及资源。希望对大家学习

点击关注上方“五分钟学算法”,

设为“置顶或星标”,第一时间送达干货。

转自 JavaGuide

这篇文章我会推荐一些关于算法学习的书籍以及资源。希望对大家学习算法有帮助!

先占个坑,说一下我觉得算法这部分学习比较好的规划:

  1. 未入门(对算法和基本数据结构不了解)之前建议先找一本入门书籍看;

  2. 如果时间比较多可以看一下我推荐的经典部分的书籍,《算法》这本书是首要要看的,其他推荐的神书看自己时间和心情就好,不要太纠结。

  3. 如果要准备面试,时间比较紧的话,就不需要再去看《算法》这本书了,时间来不及,当然你也可以选取其特定的章节查看。我也推荐了几本不错的专门为算法面试准备的书籍比如《剑指 offer》和《程序员代码面试指南》。除了这两本书籍的话,我在下面推荐了 Leetcode 和牛客网这两个常用的刷题网站以及一些比较好的题目资源。

书籍推荐

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

入门

我的第一本算法书[1] (豆瓣评分 7.1,0.2K+人评价)

一本不那么“专业”的算法书籍。和下面两本推荐的算法书籍都是比较通俗易懂,“不那么深入”的算法书籍。我个人非常推荐,配图和讲解都非常不错!

《算法图解》[2](豆瓣评分 8.4,1.5K+人评价)

入门类型的书籍,读起来比较浅显易懂,非常适合没有算法基础或者说算法没学好的小伙伴用来入门。示例丰富,图文并茂,以让人容易理解的方式阐释了算法.读起来比较快,内容不枯燥!

啊哈!算法

啊哈!算法[3] (豆瓣评分 7.7,0.5K+人评价)

和《算法图解》类似的算法趣味入门书籍。

经典

《算法 第四版》[4](豆瓣评分 9.3,0.4K+人评价)

我在大二的时候被我们的一个老师强烈安利过!自己也在当时购买了一本放在宿舍,到离开大学的时候自己大概看了一半多一点。因为内容实在太多了!另外,这本书还提供了详细的 Java 代码,非常适合学习 Java 的朋友来看,可以说是 Java 程序员的必备书籍之一了。

再来介绍一下这本书籍吧!这本书籍算的上是算法领域经典的参考书,全面介绍了关于算法和数据结构的必备知识,并特别针对排序、搜索、图处理和字符串处理进行了论述。

下面这些书籍都是经典中的经典,但是阅读起来难度也比较大,不做太多阐述,神书就完事了!推荐先看 《算法》,然后再选下面的书籍进行进一步阅读。不需要都看,找一本好好看或者找某本书的某一个章节知识点好好看。

编程珠玑[5](豆瓣评分 9.1,2K+人评价)

经典名著,被无数读者强烈推荐的书籍,几乎是顶级程序员必看的书籍之一了。这本书的作者也非常厉害,Java 之父 James Gosling 就是他的学生。

很多人都说这本书不是教你具体的算法,而是教你一种编程的思考方式。这种思考方式不仅仅在编程领域适用,在其他同样适用。

《算法设计手册》[6](豆瓣评分 9.1 , 45 人评价)

被 Teach Yourself Computer Science[7] 强烈推荐的一本算法书籍。

《算法导论》[8] (豆瓣评分 9.2,0.4K+人评价)

《计算机程序设计艺术(第 1 卷)》[9](豆瓣评分 9.4,0.4K+人评价)

面试

《剑指 Offer》[10](豆瓣评分 8.3,0.7K+人评价)

这本面试宝典上面涵盖了很多经典的算法面试题,如果你要准备大厂面试的话一定不要错过这本书。

《剑指 Offer》 对应的算法编程题部分的开源项目解析:CodingInterviews[11]

程序员代码面试指南:IT 名企算法与数据结构题目最优解(第 2 版)[12] (豆瓣评分 8.7,0.2K+人评价)

题目相比于《剑指 offer》 来说要难很多,题目涵盖面相比于《剑指 offer》也更加全面。全书一共有将近 300 道真实出现过的经典代码面试题。

编程之美[13](豆瓣评分 8.4,3K+人评价)

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

网站推荐

我比较推荐大家可以刷一下 Leetcode ,我自己平时没事也会刷一下,我觉得刷 Leetcode 不仅是为了能让你更从容地面对面试中的手撕算法问题,更可以提高你的编程思维能力、解决问题的能力以及你对某门编程语言 API 的熟练度。当然牛客网也有一些算法题,我下面也整理了一些。

LeetCode[14]

如何高效地使用 LeetCode[15]

  • 《程序员代码面试指南》[16]

  • 《剑指 offer》[17]

牛客网[18]

在线编程[19]:

  • 《剑指 offer》[20]

  • 《程序员代码面试指南》[21]

  • 2019 校招真题[22]

  • 大一大二编程入门训练[23]

  • .......

大厂编程面试真题[24]

参考资料

[1]

我的第一本算法书: https://book.douban.com/subject/30357170/

[2]

《算法图解》: https://book.douban.com/subject/26979890/

[3]

啊哈!算法: https://book.douban.com/subject/25894685/

[4]

《算法 第四版》: https://book.douban.com/subject/10432347/

[5]

编程珠玑: https://book.douban.com/subject/3227098/

[6]

《算法设计手册》: https://book.douban.com/subject/4048566/

[7]

Teach Yourself Computer Science: https://teachyourselfcs.com/

[8]

《算法导论》: https://book.douban.com/subject/20432061/

[9]

《计算机程序设计艺术(第1卷)》: https://book.douban.com/subject/1130500/

[10]

《剑指Offer》: https://book.douban.com/subject/6966465/

[11]

CodingInterviews: https://github.com/gatieme/CodingInterviews

[12]

程序员代码面试指南:IT名企算法与数据结构题目最优解(第2版): https://book.douban.com/subject/30422021/

[13]

编程之美: https://book.douban.com/subject/3004255/

[14]

LeetCode: https://leetcode-cn.com/

[15]

如何高效地使用 LeetCode: https://leetcode-cn.com/articles/%E5%A6%82%E4%BD%95%E9%AB%98%E6%95%88%E5%9C%B0%E4%BD%BF%E7%94%A8-leetcode/

[16]

《程序员代码面试指南》: https://leetcode-cn.com/problemset/lcci/

[17]

《剑指offer》: https://leetcode-cn.com/problemset/lcof/

[18]

牛客网: https://www.nowcoder.com

[19]

在线编程: https://www.nowcoder.com/activity/oj

[20]

《剑指offer》: https://www.nowcoder.com/ta/coding-interviews

[21]

《程序员代码面试指南》: https://www.nowcoder.com/ta/programmer-code-interview-guide

[22]

2019 校招真题: https://www.nowcoder.com/ta/2019test

[23]

大一大二编程入门训练: https://www.nowcoder.com/ta/beginner-programmers

[24]

大厂编程面试真题: https://www.nowcoder.com/contestRoom?filter=0&orderByHotValue=3&target=content&categories=-1&mutiTagIds=2491&page=1

END


● 我这些年从来没有用过算法,除了出去面试的时候

● 如何用一行代码实现网页变灰效果?

● 这才是你需要的 C 语言、C++ 学习路线!

● 以后有面试官问你「密码学」,你就把这篇文章扔给他

点“在看”你懂得 


推荐阅读
  • 在前文探讨了Spring如何为特定的bean选择合适的通知器后,本文将进一步深入分析Spring AOP框架中代理对象的生成机制。具体而言,我们将详细解析如何通过代理技术将通知器(Advisor)中包含的通知(Advice)应用到目标bean上,以实现切面编程的核心功能。 ... [详细]
  • 深入解析 Android 中 EditText 的 getLayoutParams 方法及其代码应用实例 ... [详细]
  • 在开发过程中,我最初也依赖于功能全面但操作繁琐的集成开发环境(IDE),如Borland Delphi 和 Microsoft Visual Studio。然而,随着对高效开发的追求,我逐渐转向了更加轻量级和灵活的工具组合。通过 CLIfe,我构建了一个高度定制化的开发环境,不仅提高了代码编写效率,还简化了项目管理流程。这一配置结合了多种强大的命令行工具和插件,使我在日常开发中能够更加得心应手。 ... [详细]
  • 计算机视觉领域介绍 | 自然语言驱动的跨模态行人重识别前沿技术综述(上篇)
    本文介绍了计算机视觉领域的最新进展,特别是自然语言驱动的跨模态行人重识别技术。上篇内容详细探讨了该领域的基础理论、关键技术及当前的研究热点,为读者提供了全面的概述。 ... [详细]
  • 如何精通编程语言:全面指南与实用技巧
    如何精通编程语言:全面指南与实用技巧 ... [详细]
  • C++ 开发实战:实用技巧与经验分享
    C++ 开发实战:实用技巧与经验分享 ... [详细]
  • 本指南从零开始介绍Scala编程语言的基础知识,重点讲解了Scala解释器REPL(读取-求值-打印-循环)的使用方法。REPL是Scala开发中的重要工具,能够帮助初学者快速理解和实践Scala的基本语法和特性。通过详细的示例和练习,读者将能够熟练掌握Scala的基础概念和编程技巧。 ... [详细]
  • 如何利用Java 5 Executor框架高效构建和管理线程池
    Java 5 引入了 Executor 框架,为开发人员提供了一种高效管理和构建线程池的方法。该框架通过将任务提交与任务执行分离,简化了多线程编程的复杂性。利用 Executor 框架,开发人员可以更灵活地控制线程的创建、分配和管理,从而提高服务器端应用的性能和响应能力。此外,该框架还提供了多种线程池实现,如固定线程池、缓存线程池和单线程池,以适应不同的应用场景和需求。 ... [详细]
  • 提升 Kubernetes 集群管理效率的七大专业工具
    Kubernetes 在云原生环境中的应用日益广泛,然而集群管理的复杂性也随之增加。为了提高管理效率,本文推荐了七款专业工具,这些工具不仅能够简化日常操作,还能提升系统的稳定性和安全性。从自动化部署到监控和故障排查,这些工具覆盖了集群管理的各个方面,帮助管理员更好地应对挑战。 ... [详细]
  • 第六章:枚举类型与switch结构的应用分析
    第六章深入探讨了枚举类型与 `switch` 结构在编程中的应用。枚举类型(`enum`)是一种将一组相关常量组织在一起的数据类型,广泛存在于多种编程语言中。例如,在 Cocoa 框架中,处理文本对齐时常用 `NSTextAlignment` 枚举来表示不同的对齐方式。通过结合 `switch` 结构,可以更清晰、高效地实现基于枚举值的逻辑分支,提高代码的可读性和维护性。 ... [详细]
  • 在使用 SQL Server 时,连接故障是用户最常见的问题之一。通常,连接 SQL Server 的方法有两种:一种是通过 SQL Server 自带的客户端工具,例如 SQL Server Management Studio;另一种是通过第三方应用程序或开发工具进行连接。本文将详细分析导致连接故障的常见原因,并提供相应的解决策略,帮助用户有效排除连接问题。 ... [详细]
  • 尽管我们尽最大努力,任何软件开发过程中都难免会出现缺陷。为了更有效地提升对支持部门的协助与支撑,本文探讨了多种策略和最佳实践,旨在通过改进沟通、增强培训和支持流程来减少这些缺陷的影响,并提高整体服务质量和客户满意度。 ... [详细]
  • 本文介绍了如何在iOS平台上使用GLSL着色器将YV12格式的视频帧数据转换为RGB格式,并展示了转换后的图像效果。通过详细的技术实现步骤和代码示例,读者可以轻松掌握这一过程,适用于需要进行视频处理的应用开发。 ... [详细]
  • 本文深入探讨了 Git 与 SVN 的高效使用技巧,旨在帮助开发者轻松应对版本控制中的各种挑战。通过详细解析两种工具的核心功能与最佳实践,读者将能够更好地掌握版本管理的精髓,提高开发效率。 ... [详细]
  • 在Android 4.4系统中,通过使用 `Intent` 对象并设置动作 `ACTION_GET_CONTENT` 或 `ACTION_OPEN_DOCUMENT`,可以从相册中选择图片并获取其路径。具体实现时,需要为 `Intent` 添加相应的类别,并处理返回的 Uri 以提取图片的文件路径。此方法适用于需要从用户相册中选择图片的应用场景,能够确保兼容性和用户体验。 ... [详细]
author-avatar
oth0037112
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有