一个用 Go 语言编写的算法学习项目,包含 LeetCode、洛谷、牛客等平台的算法题解以及常用数据结构的实现。
algorithm/
├── dataStructure/ # 数据结构实现
├── LeetCode/ # LeetCode 题解
│ ├── array_and_hash/ # 数组和哈希表
│ ├── binary/ # 二进制相关
│ ├── string_practice/ # 字符串练习
│ ├── slide_window/ # 滑动窗口
│ ├── differential_array/ # 差分数组
│ ├── dynamic_program/ # 动态规划
│ └── backtrack_dfs_bfs/ # 回溯/DFS/BFS
├── doubao/ # 豆包题库
├── luogu/ # 洛谷题库
├── niuke/ # 牛客题库
└── go.mod # Go 模块文件
项目实现了以下基础数据结构:
| 数据结构 | 文件 |
|---|---|
| 栈 | dataStructure/Stack.go |
| 双端队列 | dataStructure/Deque.go |
| 集合 | dataStructure/Set.go |
| 单链表 | dataStructure/SingleList.go |
| 链表节点 | dataStructure/LinkedNode.go |
- P118 杨辉三角
- P119 杨辉三角II
- P414 第三大的数
- P412 FizzBuzz
- P13 罗马数字转整数
- P125 验证回文串
- P205 同构字符串
- P290 单词规律
- P387 字符串中的第一个唯一字符
- P409 最长回文串
- P520 检测大写字母
- P6 Z字形变换
- P890 查找和替换模式
- P171 Excel表列序号
- P3 无重复字符的最长子串
- P30 串联所有单词的子串
- P76 最小覆盖子串
- P209 长度最小的子数组
- P438 找到字符串中所有字母异位词
- P567 字符串的排列
- P643 子数组最大平均数I
- P904 水果成篮
- P1004 最大连续1的个数III
- P1052 爱生气的书店老板
- P1208 尽可能使字符串相等
- P1234 替换子串得到平衡字符串
- P1423 可获得的最大点数
- P1456 定长子串中元音的最大数目
- P1493 删掉一个元素以后全为1的最长子数组
- P1652 拆炸弹
- P1658 将x减到0的最小操作数
- P1695 删除子数组的最大得分
- P1838 最高频元素的频数
- P2024 考试的最大困扰度
- P2090 半径为k的子数组平均值
- P2379 得到K个黑块的最少涂色次数
- P2461 长度为K子数组中的最大和
- P2516 每种字符至少取K个
- P2653 滑动子数组的美丽值
- P2730 找到最长的半重复子字符串
- P2779 数组的最大美丽值
- P2831 找出最长等值子数组
- P2841 几乎唯一子数组的最大和
- P2875 无限数组的最短子数组
- P2904 最短且字典序最小的美丽子字符串
- P2958 最多K个重复元素的最长子数组
- P3090 每个字符最多出现两次的最长子字符串
- P632 最小区间
- P1297 子串的最大出现次数
- P134 大小为K且平均值大于等于阈值的子数组数目
- P1461 检查一个字符串是否包含所有长度为K的二进制子串
- P1574 删除最短的子数组使剩余数组有序
- P509 斐波那契数
- P62 不同路径
- P63 不同路径II
- P64 最小路径和
- P70 爬楼梯
- P120 三角形最小路径和
- P152 乘积最大子数组
- P198 打家劫舍
- P213 打家劫舍II
- P2320 统计放置房子的方式数
- P2266 统计打字方案数
- P2684 矩阵中移动的最大次数
- P918 环形子数组的最大和
- P931 下降路径最小和
- P1191 K次串联后最大子数组之和
- P1289 下降路径最小和II
- P1749 任意子数组和的绝对值的最大值
- P2321 拼接数组的最大分数
- P2304 网格中的最小路径代价
- P2606 找到最大开销的子字符串
- P740 删除并获得点数
- P3186 施咒的最大总伤害
- P53 最大子数组和
- LCR166 珠宝的最高价值
- P67 二进制求和
- P136 只出现一次的数字
- P137 只出现一次的数字II
- P187 重复的DNA序列
- P56 合并区间
- P1094 拼车
- P1109 航班预订统计
- P1854 人口最多的年份
- P1893 检查是否区域内所有整数都被覆盖
- P2848 与车相交的点
- P2960 统计已测试设备
- P3341 到达最后一个房间的最少时间I
- P3342 到达最后一个房间的最少时间II
- P4 环状DNA序列整理
- P96
- P97 找出最长的神奇数列
- P98 找单独的数
- P100 字符串最短循环子串
- P1217 回文质数
- (待补充)
# 克隆仓库
git clone https://github.com/your-username/algorithm.git
cd algorithm
# 运行特定题目的解法
go run LeetCode/slide_window/P3无重复字符的最长子串.go建议按照以下顺序学习:
- 数据结构基础 - 先掌握栈、队列、链表等基本数据结构
- 数组和哈希 - 理解基本的数据处理技巧
- 双指针与滑动窗口 - 学习优化时间复杂度的方法
- 二进制操作 - 掌握位运算技巧
- 动态规划 - 解决复杂的最优化问题
- 回溯与搜索 - 学习系统性的遍历方法
本项目采用 MIT 许可证。
欢迎提交 Issue 和 Pull Request!