热门标签 | 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++ 学习路线!

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

点“在看”你懂得 


推荐阅读
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
  • 解决Cydia数据库错误:could not open file /var/lib/dpkg/status 的方法
    本文介绍了解决iOS系统中Cydia数据库错误的方法。通过使用苹果电脑上的Impactor工具和NewTerm软件,以及ifunbox工具和终端命令,可以解决该问题。具体步骤包括下载所需工具、连接手机到电脑、安装NewTerm、下载ifunbox并注册Dropbox账号、下载并解压lib.zip文件、将lib文件夹拖入Books文件夹中,并将lib文件夹拷贝到/var/目录下。以上方法适用于已经越狱且出现Cydia数据库错误的iPhone手机。 ... [详细]
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社区 版权所有