leetcode

🔥LeetCode solutions in any programming language | 多种编程语言实现 LeetCode、《剑指 Offer(第 2 版)》、《程序员面试金典(第 6 版)》题解

36,457 stars Java Markdown Skills API Spec #algorithms#cpp#csharp#golang
AI Prompts & Specs

Repository: doocs/leetcode


Stars: 35902

README.md

<p align="center">
<a href="https://github.com/doocs/leetcode"><img src="https://cdn-doocs.oss-cn-shenzhen.aliyuncs.com/gh/doocs/leetcode%40main/images/doocs-leetcode.png" alt="LeetCode-GitHub-Doocs"></a>
</p>

<p align="center">
<a href="https://doocs.org"><img src="https://img.shields.io/badge/organization-join%20us-4051B5?style=flat-square" alt="open-source-organization"></a>
<a href="https://github.com/doocs/leetcode"><img src="https://img.shields.io/badge/langs-Python%20%7C%20Java%20%7C%20C++%20%7C%20Go%20%7C%20TypeScript%20%7C%20Rust%20%7C%20...-red?style=flat-square&color=4051B5" alt="languages"></a>
<a href="https://github.com/doocs/leetcode/blob/main/LICENSE"><img src="https://img.shields.io/github/license/doocs/leetcode?color=4051B5&style=flat-square" alt="LICENSE"></a><br>
<a href="https://github.com/doocs/leetcode/stargazers"><img src="https://img.shields.io/github/stars/doocs/leetcode?color=4051B5&logo=github&style=flat-square" alt="stars"></a>
<a href="https://github.com/doocs/leetcode/network/members"><img src="https://img.shields.io/github/forks/doocs/leetcode?color=4051B5&logo=github&style=flat-square" alt="forks"></a>
<a href="https://opencollective.com/doocs-leetcode" alt="backers on Open Collective"><img src="https://img.shields.io/opencollective/backers/doocs-leetcode?color=4051B5&style=flat-square&logo=open%20collective&logoColor=ffffff" /></a>
</p>

介绍

本项目包含 LeetCode、《剑指 Offer(第 2 版)》、《剑指 Offer(专项突击版)》、《程序员面试金典(第 6 版)》等题目的相关题解。所有题解均由多种编程语言实现,包括但不限于:Java、Python、C++、Go、TypeScript、Rust。我们正在全力更新,欢迎 Star 🌟 关注本项目,获取项目最新动态。

English Version

站点

<https://leetcode.doocs.org>

算法全解

- LeetCode
- 往期竞赛合集
- 剑指 Offer(第 2 版)
- 剑指 Offer(专项突击版)
- 程序员面试金典(第 6 版)

专项突破

- JavaScript 专项练习
- 数据库专项练习

算法提升专题

1. 基础算法

- 在排序数组中查找元素的第一个和最后一个位置 - 二分查找
- 准时到达的列车最小时速 - 二分查找
- 可移除字符的最大数目 - 二分查找
- 排序数组 - 快速排序归并排序
- 字符串相加 - 高精度加法
- 字符串相乘 - 高精度乘法
- 区域和检索 - 数组不可变 - 前缀和
- 二维区域和检索 - 矩阵不可变 - 二维前缀和
- 区间加法 - 前缀和差分
- 用邮票贴满网格图 - 二维前缀和二维差分
- 无重复字符的最长子串 - 双指针哈希表
- 乘积小于 K 的子数组 - 双指针
- 位 1 的个数 - 位运算lowbit
- 合并区间 - 区间合并

2. 数据结构

- 设计链表 - 单链表指针引用数组实现
- 下一个更大元素 I - 单调栈
- 每日温度 - 单调栈
- 子数组的最小值之和 - 单调栈
- 最大宽度坡 - 单调栈
- 最多能完成排序的块 II - 单调栈
- 子数组范围和 - 单调栈
- 子数组最小乘积的最大值 - 单调栈
- 滑动窗口最大值 - 单调队列
- 满足不等式的最大值 - 单调队列
- 和至少为 K 的最短子数组 - 单调队列
- 带限制的子序列和 - 动态规划单调队列优化
- 单词规律 II - 哈希表回溯
- 最短回文串 - 字符串哈希
- 回文对 - 字符串哈希
- 最长重复子串 - 字符串哈希二分查找
- 不同的循环子字符串 - 字符串哈希

3. 搜索

- 图像渲染- BFSDFSFlood Fill 算法连通性模型
- 岛屿数量 - BFSFlood Fill 算法
- 01 矩阵 - 多源 BFS
- 地图中的最高点 - 多源 BFS
- 进击的骑士 - BFS最短路模型
- 二进制矩阵中的最短路径 - BFS最短路模型
- 迷宫中离入口最近的出口 - BFS最短路模型
- 网格中的最短路径 - BFS最短路模型
- 打开转盘锁 - 最小步数模型双向 BFSA* 算法
- 单词接龙 - 最小步数模型双向 BFS
- 转化数字的最小运算数 - 最小步数模型双向 BFS
- 滑动谜题 - BFS最小步数模型A* 算法
- 访问所有节点的最短路径 - BFS最小步数模型A* 算法
- 为高尔夫比赛砍树 - BFSA* 算法
- 使网格图至少有一条有效路径的最小代价 - 双端队列 BFS
- 到达角落需要移除障碍物的最小数目 - 双端队列 BFS
- 迷宫 - DFS连通性模型Flood Fill 算法
- 单词搜索 - DFS搜索顺序回溯
- 黄金矿工 - DFS搜索顺序回溯
- 火柴拼正方形 - DFS回溯剪枝
- 划分为 k 个相等的子集 - DFS回溯剪枝
- 完成所有工作的最短时间 - DFS回溯剪枝
- 公平分发饼干 - DFS回溯剪枝
- 矩阵中的最长递增路径 - DFS记忆化搜索
- 网格图中递增路径的数目 - DFS记忆化搜索
- 翻转游戏 II - DFS状态压缩记忆化搜索
- 统计所有可行路径 - DFS记忆化搜索
- 切披萨的方案数 - DFS记忆化搜索

<!-- DFS 待补充 -->

4. 动态规划(DP)

- 杨辉三角 - 线性 DP数字三角形模型
- 最小路径和 - 线性 DP数字三角形模型
- 摘樱桃 - 线性 DP数字三角形模型
- 摘樱桃 II - 线性 DP数字三角形模型
- 最长递增子序列 - 线性 DP最长上升子序列模型
- 无重叠区间 - 线性 DP最长上升子序列模型贪心优化
- 删列造序 III - 线性 DP最长上升子序列模型
- 俄罗斯套娃信封问题 - 线性 DP最长上升子序列模型贪心优化
- 堆叠长方体的最大高度 - 排序线性 DP最长上升子序列模型
- 无矛盾的最佳球队 - 排序线性 DP最长上升子序列模型
- 最长公共子序列 - 线性 DP最长公共子序列模型
- 两个字符串的最小 ASCII 删除和 - 线性 DP最长公共子序列模型
- 两个字符串的删除操作 - 线性 DP最长公共子序列模型
- 目标和 - 0-1 背包问题
- 分割等和子集 - 0-1 背包问题
- 最后一块石头的重量 II - 0-1 背包问题
- 零钱兑换 - 完全背包问题
- 组合总和 Ⅳ - 完全背包问题
- 从栈中取出 K 个硬币的最大面值和 - 分组背包问题
- 数字 1 的个数 - 数位 DP记忆化搜索
- 统计各位数字都不同的数字个数 - 数位 DP记忆化搜索状态压缩
- 不含连续 1 的非负整数 - 数位 DP记忆化搜索
- 旋转数字 - 数位 DP记忆化搜索
- 最大为 N 的数字组合 - 数位 DP记忆化搜索
- 统计特殊整数 - 数位 DP记忆化搜索

<!-- 背包问题、状态机模型、状压DP、区间DP、树形DP、数位DP 待补充 -->

5. 高级数据结构

- 二维网格图中探测环 - 并查集检测环
- 除法求值 - 并查集权值维护
- 由斜杠划分区域 - 并查集连通分量个数
- 水位上升的泳池中游泳 - 并查集
- 交换字符串中的元素 - 并查集
- 打砖块 - 并查集逆向思维
- 尽量减少恶意软件的传播 II - 并查集逆向思维
- 检查边长度限制的路径是否存在 - 并查集离线思维
- 保证图可完全遍历 - 双并查集
- 区域和检索 - 数组可修改 - 树状数组线段树
- 通过指令创建有序数组 - 树状数组线段树
- 统计数组中好三元组数目 - 树状数组线段树
- 最多 K 次交换相邻数位后得到的最小整数 - 树状数组
- 二维区域和检索 - 可变 - 二维树状数组线段树
- 计算右侧小于当前元素的个数 - 离散化树状数组线段树
- 区间和的个数 - 离散化树状数组线段树
- 翻转对 - 离散化树状数组分治归并线段树
- 最长递增子序列的个数 - 离散化树状数组区间最值问题
- 奇妙序列 - 动态开点线段树懒标记
- Range 模块 - 动态开点线段树懒标记
- 我的日程安排表 III - 动态开点线段树懒标记
- 每天绘制的新区域数量 - 动态开点线段树懒标记区间染色模型
- 由单个字符重复的最长子字符串 - 线段树动态最大子段和模型
- 矩形面积 II - 线段树离散化扫描线

6. 图论

- 网络延迟时间 - 最短路Dijkstra 算法Bellman Ford 算法SPFA 算法
- 得到要求路径的最小带权子图 - 最短路Dijkstra 算法
- 连接所有点的最小费用 - 最小生成树Prim 算法Kruskal 算法
- 最低成本联通所有城市 - 最小生成树Kruskal 算法并查集
- 水资源分配优化 - 最小生成树Kruskal 算法并查集
- 找到最小生成树里的关键边和伪关键边 - 最小生成树Kruskal 算法并查集
- 判断二分图 - 染色法判定二分图并查集

<!-- 待补充

7. 数学知识


-->

加入我们

刷编程题的最大好处就是可以锻炼解决问题的思维能力。相信我,「如何去思考」​ 本身也是一项需要不断学习和练习的技能。非常感谢前微软工程师、现蚂蚁金服技术专家 @kfstorm 贡献了本项目的所有 C# 题解

如果你对本项目感兴趣,并且希望加入我们刷题小分队,欢迎随时提交 PR。请参考如下步骤:

1. 将本项目 fork 到你的个人 GitHub 帐户,然后 clone 到你的本地机器;
1. 进入 leetcode 目录,切换到一个新的分支;
1. 对项目做出一些变更,然后使用 git add、commit、push 等命令将你的本地变更提交到你的远程 GitHub 仓库;
1. 将你的变更以 PR 的形式提交过来,项目的维护人员会在第一时间对你的变更进行 review!
1. 你也可以参考帮助文档 <https://help.github.com/cn> 了解更多细节。

<div align="center">
<img src="https://cdn-doocs.oss-cn-shenzhen.aliyuncs.com/gh/doocs/leetcode%40main/images/pr.svg" width="320px"/>
</div>

![Open in GitHub Codespaces](https://github.com/codespaces/new?hide_repo_select=true&ref=main&repo=149001365&machine=basicLinux32gb&location=SoutheastAsia)

Stars 趋势

<a href="https://github.com/doocs/leetcode/stargazers" target="_blank"><img src="./images/starcharts.svg" alt="Stargazers over time" /></a>

<a href="https://next.ossinsight.io/widgets/official/analyze-repo-stars-map?repo_id=149001365&activity=stars" target="_blank" style="display: block" align="center">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://next.ossinsight.io/widgets/official/analyze-repo-stars-map/thumbnail.png?repo_id=149001365&activity=stars&image_size=auto&color_scheme=dark" width="721" height="auto">
<img alt="Star Geographical Distribution of doocs/leetcode" src="https://next.ossinsight.io/widgets/official/analyze-repo-stars-map/thumbnail.png?repo_id=149001365&activity=stars&image_size=auto&color_scheme=light" width="721" height="auto">
</picture>
</a>

贡献者

感谢以下所有朋友对本项目的贡献!

<a href="https://github.com/doocs/leetcode/graphs/contributors" target="_blank"><img src="https://contrib.rocks/image?repo=doocs/leetcode&max=500" /></a>

版权

本项目著作权归 GitHub 开源社区 Doocs 所有,商业转载请联系 @yanglbme 获得授权,非商业转载请注明出处。

联系我们 & 支持项目

欢迎各位小伙伴们添加 @yanglbme 的个人微信(微信号:YLB0109),备注 「leetcode」。后续我们会创建算法、技术相关的交流群,大家一起交流学习,分享经验,共同进步。

如果你觉得这个项目对你有帮助,也欢迎通过微信扫码赞赏我们 ☕️ ~

| <img src="https://cdn-doocs.oss-cn-shenzhen.aliyuncs.com/gh/doocs/images/qrcode-for-yanglbme.png" width="260px" align="center"/> | <img src="https://cdn-doocs.oss-cn-shenzhen.aliyuncs.com/gh/doocs/leetcode%40main/images/support1.jpg" width="260px" align="center"/> |
| -------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |

许可证

<a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">知识共享 版权归属-相同方式共享 4.0 国际 公共许可证</a>