项目简介
本项目基于Go语言,实现了多种常见的数据结构和算法,涵盖算法和数据结构以及系统相关算法两大方面,包含链表、栈、二叉树等数据结构,和排序、Dijkstra最短路径等算法。每个数据结构或算法都配有测试代码,是学习和实践Go语言数据结构与算法的良好基础。
项目的主要特性和功能
算法和数据结构
- 位运算:可判断数是否为2的乘方、获取数中bit位为1的个数、不用
+
运算符计算两数之和。 - 递归:解决上台阶、走棋盘等递归问题。
- 图算法:实现Dijkstra最短路径算法。
- 背包问题:解决最大背包问题。
- 链表操作:包含链表反转、链表相加等操作。
- 字符串处理:计算最长公共子串和子序列。
- 树操作:可计算树中两节点最小距离、公共祖先,判断是否为平衡二叉树、二叉搜索树、镜像对称二叉树,获取二叉搜索树中第K小的元素。
- 堆操作:实现最大堆,可从N个数中获取最大或最小的m个数,还有基于堆的多路归并排序。
- 其他:有素数判断、等概率选择与打乱、窗口最大值数组、设计含
getMin
的栈、前缀树、k个有序链表合并、接雨水、股票最大收益、最长回文子串判断、是否回文链表、抢红包等功能。
系统相关算法
- 缓存算法:实现LRU及redis LRU。
- 流量控制:提供ratelimit流量控制算法。
- 哈希算法:实现一致性hash算法。
- 数据结构:有跳跃表、布隆过滤器。
- 并发相关:实现goroutine pool、goroutineid、spinlock。
安装使用步骤
假设用户已下载本项目的源码文件,可按以下步骤操作: 由于项目无需额外依赖,直接在Go环境中运行即可。 ```bash cd 项目源码所在目录
go test ./... ``` 每个文件都有详细注释和测试用例,可查看源代码和测试代码来了解具体实现细节和用法。
注意:需在机器上安装Go开发环境。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】