hello-algo,一个免费的算法学习开源项目

简介: hello-algo,一个免费的算法学习开源项目

作为一名技术爱好者,看到好的开源项目总是忍不住想要推荐给身边的朋友。最近小编也一直想要重新写一些算法相关的内容,就看到了githubhello-algo项目。这个项目将算法学习的书籍搬到了线上进行开源。虽然相对于以前打ACM时用到的一些大佬的模板来说(例如邝斌的模板),算法体量小很多,但是这个项目讲解得更为详细,支持的语言也蛮多,对于算法体量来说只是一个补充的时间问题。感兴趣的朋友可以关注一下。

Hello-algo项目简介

正如这个项目的名字一样,这个项目在介绍的时候也提到了适用范围:

若您是算法初学者,从未接触过算法,或者已经有一些刷题经验,对数据结构与算法有模糊的认识,在会与 不会之间反复横跳,那么这本书正是为您量身定制!如果您已经积累一定刷题量,熟悉大部分题型,那么本书可助您回顾与梳理算法知识体系,仓库源代码可以 被当作“刷题工具库”或“算法字典”来使用。

内容下载

该项目的链接为:https://github.com/krahets/hello-algo,可以直接fork一把,然后git clone下来,关于git的使用方法,可以看小编的这篇文章git配置密钥及提交代码到仓库

在线学习的网站链接为:https://www.hello-algo.com/

同时,项目提供了下载的pdf,地址为:https://github.com/krahets/hello-algo/releases

如果有朋友无法前往下载,也可以在本公众号回复消息【算法】关键字进行下载。

内容介绍

我们从书中的内容来看

一共包含15章的算法内容,分别是初识算法讲算法是什么,复杂度分析主要讲时间复杂度和空间复杂度,以及如何使用时间换空间或者空间换时间。这两种时间复杂度的相互转换需要根据当时场景中对应的痛点进行分析。数据结构这一篇里面包含的内容是数组、链表和列表,这些基本的数据结构是构成任何一种复杂的数据结构的基础,吃透这几个基础数据结构是很有必要的。栈和队列这一篇包含栈、队列和双向队列,在我们的计算机中,栈和队列使用得是非常多的,例如,理解栈和队列,也有助于拓宽我们的思维方式和逻辑。哈希表这一篇包含哈希排序、哈希冲突等内容,哈希表其实是一个伟大的发明,它可以有效减少空间,小编使用过一种名叫布隆过滤器的哈希算法,将几千万量级的存储空间压缩到一个几百位的空间中进行实现,但正如内容讲到的一样,哈希算法是存在位置冲突的,需要掌握它的优缺点。树、图、堆这些算法是数据结构算法的延伸算法,在工作中用得蛮多的。搜索算法主要讲的是二分查找算法,二分搜索主要是针对单调递增或者递减的方式的问题求解,对应二分搜索,还有三分搜索算法,求解的是极值问题,即具有最大值和最小值的单峰问题。排序部分讲了十几种排序算法,排序算法的学习过程可以先由高时间复杂度逐步转向到低时间复杂度的过程,注重理解计数排序和基数排序的区别。分治和回溯递归求解子问题,分治其实是一种思维方式,一个问题是由一个或多个子问题构成。动态规划目前只涉及背包问题,可能未来会更新。最后是贪心,贪心其实不是一种算法,只是一种思维方式。

总的来说,现目前的阶段,整个项目还是起步阶段,算法的内容缺失蛮多的,拿来做算法的入门还是不错的,想要更进一步的学习,还是需要看算法导论或者找一些ACM大佬总结的各类算法模板。

目录
相关文章
|
4天前
|
算法 数据处理 数据安全/隐私保护
|
22天前
|
机器学习/深度学习 人工智能 资源调度
【博士每天一篇文献-算法】连续学习算法之HAT: Overcoming catastrophic forgetting with hard attention to the task
本文介绍了一种名为Hard Attention to the Task (HAT)的连续学习算法,通过学习几乎二值的注意力向量来克服灾难性遗忘问题,同时不影响当前任务的学习,并通过实验验证了其在减少遗忘方面的有效性。
37 12
|
14天前
|
机器学习/深度学习 人工智能 算法
【人工智能】传统语音识别算法概述,应用场景,项目实践及案例分析,附带代码示例
传统语音识别算法是将语音信号转化为文本形式的技术,它主要基于模式识别理论和数学统计学方法。以下是传统语音识别算法的基本概述
32 2
|
15天前
|
算法 Java
掌握算法学习之字符串经典用法
文章总结了字符串在算法领域的经典用法,特别是通过双指针法来实现字符串的反转操作,并提供了LeetCode上相关题目的Java代码实现,强调了掌握这些技巧对于提升算法思维的重要性。
|
17天前
|
算法 NoSQL 中间件
go语言后端开发学习(六) ——基于雪花算法生成用户ID
本文介绍了分布式ID生成中的Snowflake(雪花)算法。为解决用户ID安全性与唯一性问题,Snowflake算法生成的ID具备全局唯一性、递增性、高可用性和高性能性等特点。64位ID由符号位(固定为0)、41位时间戳、10位标识位(含数据中心与机器ID)及12位序列号组成。面对ID重复风险,可通过预分配、动态或统一分配标识位解决。Go语言实现示例展示了如何使用第三方包`sonyflake`生成ID,确保不同节点产生的ID始终唯一。
go语言后端开发学习(六) ——基于雪花算法生成用户ID
|
23天前
|
存储 机器学习/深度学习 算法
【博士每天一篇文献-算法】连续学习算法之HNet:Continual learning with hypernetworks
本文提出了一种基于任务条件超网络(Hypernetworks)的持续学习模型,通过超网络生成目标网络权重并结合正则化技术减少灾难性遗忘,实现有效的任务顺序学习与长期记忆保持。
21 4
|
23天前
|
存储 机器学习/深度学习 算法
【博士每天一篇文献-算法】连续学习算法之RWalk:Riemannian Walk for Incremental Learning Understanding
RWalk算法是一种增量学习框架,通过结合EWC++和修改版的Path Integral算法,并采用不同的采样策略存储先前任务的代表性子集,以量化和平衡遗忘和固执,实现在学习新任务的同时保留旧任务的知识。
62 3
|
23天前
|
存储 机器学习/深度学习 算法
【博士每天一篇文献-综述】基于脑启发的连续学习算法有哪些?附思维导图
这篇博客文章总结了连续学习的分类,包括经典方法(重放、正则化和稀疏化方法)和脑启发方法(突触启发、双系统启发、睡眠启发和模块化启发方法),并讨论了它们在解决灾难性遗忘问题上的优势和局限性。
20 2
|
2月前
|
机器学习/深度学习 数据采集 算法
Python实现ISSA融合反向学习与Levy飞行策略的改进麻雀优化算法优化支持向量机回归模型(SVR算法)项目实战
Python实现ISSA融合反向学习与Levy飞行策略的改进麻雀优化算法优化支持向量机回归模型(SVR算法)项目实战
|
2月前
|
机器学习/深度学习 数据采集 算法
Python实现ISSA融合反向学习与Levy飞行策略的改进麻雀优化算法优化支持向量机分类模型(SVC算法)项目实战
Python实现ISSA融合反向学习与Levy飞行策略的改进麻雀优化算法优化支持向量机分类模型(SVC算法)项目实战

热门文章

最新文章

下一篇
云函数