Skip to content

About

go语言代码

Resources

Stars

0 stars

Watchers

1 watching

Forks

Latest commit

 

History

13 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Algorithm

一个用 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 统计已测试设备

回溯/DFS/BFS

  • 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

学习路径

建议按照以下顺序学习:

  1. 数据结构基础 - 先掌握栈、队列、链表等基本数据结构
  2. 数组和哈希 - 理解基本的数据处理技巧
  3. 双指针与滑动窗口 - 学习优化时间复杂度的方法
  4. 二进制操作 - 掌握位运算技巧
  5. 动态规划 - 解决复杂的最优化问题
  6. 回溯与搜索 - 学习系统性的遍历方法

许可证

本项目采用 MIT 许可证。

贡献

欢迎提交 Issue 和 Pull Request!

About

go语言代码

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages