本项目包含 LeetCode、《剑指 Offer(第 2 版)》、《剑指 Offer(专项突击版)》、《程序员面试金典(第 6 版)》等题目的相关题解。所有题解均由多种编程语言实现,包括但不限于:Java、Python、C++、Go、TypeScript、Rust。我们正在全力更新,欢迎 Star 🌟 关注本项目,获取项目最新动态。
- 在排序数组中查找元素的第一个和最后一个位置 - 
二分查找 - 准时到达的列车最小时速 - 
二分查找 - 可移除字符的最大数目 - 
二分查找 - 排序数组 - 
快速排序、归并排序 - 字符串相加 - 
高精度加法 - 字符串相乘 - 
高精度乘法 - 区域和检索 - 数组不可变 - 
前缀和 - 二维区域和检索 - 矩阵不可变 - 
二维前缀和 - 区间加法 - 
前缀和、差分 - 用邮票贴满网格图 - 
二维前缀和、二维差分 - 无重复字符的最长子串 - 
双指针、哈希表 - 乘积小于 K 的子数组 - 
双指针 - 位 1 的个数 - 
位运算、lowbit - 合并区间 - 
区间合并 
- 设计链表 - 
单链表、指针引用、数组实现 - 下一个更大元素 I - 
单调栈 - 每日温度 - 
单调栈 - 子数组的最小值之和 - 
单调栈 - 最大宽度坡 - 
单调栈 - 最多能完成排序的块 II - 
单调栈 - 子数组范围和 - 
单调栈 - 子数组最小乘积的最大值 - 
单调栈 - 滑动窗口最大值 - 
单调队列 - 满足不等式的最大值 - 
单调队列 - 和至少为 K 的最短子数组 - 
单调队列 - 带限制的子序列和 - 
动态规划、单调队列优化 - 单词规律 II - 
哈希表、回溯 - 最短回文串 - 
字符串哈希 - 回文对 - 
字符串哈希 - 最长重复子串 - 
字符串哈希、二分查找 - 不同的循环子字符串 - 
字符串哈希 
- 图像渲染- 
BFS、DFS、Flood Fill 算法、连通性模型 - 岛屿数量 - 
BFS、Flood Fill 算法 - 01 矩阵 - 
多源 BFS - 地图中的最高点 - 
多源 BFS - 进击的骑士 - 
BFS、最短路模型 - 二进制矩阵中的最短路径 - 
BFS、最短路模型 - 迷宫中离入口最近的出口 - 
BFS、最短路模型 - 网格中的最短路径 - 
BFS、最短路模型 - 打开转盘锁 - 
最小步数模型、双向 BFS、A* 算法 - 单词接龙 - 
最小步数模型、双向 BFS - 转化数字的最小运算数 - 
最小步数模型、双向 BFS - 滑动谜题 - 
BFS、最小步数模型、A* 算法 - 访问所有节点的最短路径 - 
BFS、最小步数模型、A* 算法 - 为高尔夫比赛砍树 - 
BFS、A* 算法 - 使网格图至少有一条有效路径的最小代价 - 
双端队列 BFS - 到达角落需要移除障碍物的最小数目 - 
双端队列 BFS - 迷宫 - 
DFS、连通性模型、Flood Fill 算法 - 单词搜索 - 
DFS、搜索顺序、回溯 - 黄金矿工 - 
DFS、搜索顺序、回溯 - 火柴拼正方形 - 
DFS、回溯、剪枝 - 划分为 k 个相等的子集 - 
DFS、回溯、剪枝 - 完成所有工作的最短时间 - 
DFS、回溯、剪枝 - 公平分发饼干 - 
DFS、回溯、剪枝 - 矩阵中的最长递增路径 - 
DFS、记忆化搜索 - 网格图中递增路径的数目 - 
DFS、记忆化搜索 - 翻转游戏 II - 
DFS、状态压缩、记忆化搜索 - 统计所有可行路径 - 
DFS、记忆化搜索 - 切披萨的方案数 - 
DFS、记忆化搜索 
- 杨辉三角 - 
线性 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、记忆化搜索 
- 二维网格图中探测环 - 
并查集、检测环 - 除法求值 - 
并查集、权值维护 - 由斜杠划分区域 - 
并查集、连通分量个数 - 水位上升的泳池中游泳 - 
并查集 - 交换字符串中的元素 - 
并查集 - 打砖块 - 
并查集、逆向思维 - 尽量减少恶意软件的传播 II - 
并查集、逆向思维 - 检查边长度限制的路径是否存在 - 
并查集、离线思维 - 保证图可完全遍历 - 
双并查集 - 区域和检索 - 数组可修改 - 
树状数组、线段树 - 通过指令创建有序数组 - 
树状数组、线段树 - 统计数组中好三元组数目 - 
树状数组、线段树 - 最多 K 次交换相邻数位后得到的最小整数 - 
树状数组 - 二维区域和检索 - 可变 - 
二维树状数组、线段树 - 计算右侧小于当前元素的个数 - 
离散化树状数组、线段树 - 区间和的个数 - 
离散化树状数组、线段树 - 翻转对 - 
离散化树状数组、分治归并、线段树 - 最长递增子序列的个数 - 
离散化树状数组、区间最值问题 - 奇妙序列 - 
动态开点线段树、懒标记 - Range 模块 - 
动态开点线段树、懒标记 - 我的日程安排表 III - 
动态开点线段树、懒标记 - 每天绘制的新区域数量 - 
动态开点线段树、懒标记、区间染色模型 - 由单个字符重复的最长子字符串 - 
线段树、动态最大子段和模型 - 矩形面积 II - 
线段树、离散化、扫描线 
- 网络延迟时间 - 
最短路、Dijkstra 算法、Bellman Ford 算法、SPFA 算法 - 得到要求路径的最小带权子图 - 
最短路、Dijkstra 算法 - 连接所有点的最小费用 - 
最小生成树、Prim 算法、Kruskal 算法 - 最低成本联通所有城市 - 
最小生成树、Kruskal 算法、并查集 - 水资源分配优化 - 
最小生成树、Kruskal 算法、并查集 - 找到最小生成树里的关键边和伪关键边 - 
最小生成树、Kruskal 算法、并查集 - 判断二分图 - 
染色法判定二分图、并查集 
刷编程题的最大好处就是可以锻炼解决问题的思维能力。相信我,「如何去思考」 本身也是一项需要不断学习和练习的技能。非常感谢前微软工程师、现蚂蚁金服技术专家 @kfstorm 贡献了本项目的所有 C# 题解。
如果你对本项目感兴趣,并且希望加入我们刷题小分队,欢迎随时提交 PR。请参考如下步骤:
- 将本项目 fork 到你的个人 GitHub 帐户,然后 clone 到你的本地机器;
 - 进入 leetcode 目录,切换到一个新的分支;
 - 对项目做出一些变更,然后使用 git add、commit、push 等命令将你的本地变更提交到你的远程 GitHub 仓库;
 - 将你的变更以 PR 的形式提交过来,项目的维护人员会在第一时间对你的变更进行 review!
 - 你也可以参考帮助文档 https://help.github.com/cn 了解更多细节。
 
  感谢以下所有朋友对本项目的贡献!
本项目著作权归 GitHub 开源社区 Doocs 所有,商业转载请联系 @yanglbme 获得授权,非商业转载请注明出处。
欢迎各位小伙伴们添加 @yanglbme 的个人微信(微信号:YLB0109),备注 「leetcode」。后续我们会创建算法、技术相关的交流群,大家一起交流学习,分享经验,共同进步。
如果你觉得这个项目对你有帮助,也欢迎通过微信扫码赞赏我们 ☕️~
![]()  | 
![]()  | 
|---|


