doocs/leetcode
Fork: 7561 Star: 31887 (更新于 2024-11-27 22:01:54)
license: CC-BY-SA-4.0
Language: Java .
🔥LeetCode solutions in any programming language | 多种编程语言实现 LeetCode、《剑指 Offer(第 2 版)》、《程序员面试金典(第 6 版)》题解
最后发布版本: v0.2.0 ( 2024-07-24 11:37:37)
介绍
本项目包含 LeetCode、《剑指 Offer(第 2 版)》、《剑指 Offer(专项突击版)》、《程序员面试金典(第 6 版)》等题目的相关题解。所有题解均由多种编程语言实现,包括但不限于:Java、Python、C++、Go、TypeScript、Rust。我们正在全力更新,欢迎 Star 🌟 关注本项目,获取项目最新动态。
站点
https://doocs.github.io/leetcode
算法全解
专项突破
算法提升专题
1. 基础算法
-
在排序数组中查找元素的第一个和最后一个位置 -
二分查找
-
准时到达的列车最小时速 -
二分查找
-
可移除字符的最大数目 -
二分查找
-
排序数组 -
快速排序
、归并排序
-
字符串相加 -
高精度加法
-
字符串相乘 -
高精度乘法
-
区域和检索 - 数组不可变 -
前缀和
-
二维区域和检索 - 矩阵不可变 -
二维前缀和
-
区间加法 -
前缀和
、差分
-
用邮票贴满网格图 -
二维前缀和
、二维差分
-
无重复字符的最长子串 -
双指针
、哈希表
-
乘积小于 K 的子数组 -
双指针
-
位 1 的个数 -
位运算
、lowbit
-
合并区间 -
区间合并
2. 数据结构
-
设计链表 -
单链表
、指针引用
、数组实现
-
下一个更大元素 I -
单调栈
-
每日温度 -
单调栈
-
子数组的最小值之和 -
单调栈
-
最大宽度坡 -
单调栈
-
最多能完成排序的块 II -
单调栈
-
子数组范围和 -
单调栈
-
子数组最小乘积的最大值 -
单调栈
-
滑动窗口最大值 -
单调队列
-
满足不等式的最大值 -
单调队列
-
和至少为 K 的最短子数组 -
单调队列
-
带限制的子序列和 -
动态规划
、单调队列优化
-
单词规律 II -
哈希表
、回溯
-
最短回文串 -
字符串哈希
-
回文对 -
字符串哈希
-
最长重复子串 -
字符串哈希
、二分查找
-
不同的循环子字符串 -
字符串哈希
3. 搜索
-
图像渲染-
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
、记忆化搜索
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
、记忆化搜索
5. 高级数据结构
-
二维网格图中探测环 -
并查集
、检测环
-
除法求值 -
并查集
、权值维护
-
由斜杠划分区域 -
并查集
、连通分量个数
-
水位上升的泳池中游泳 -
并查集
-
交换字符串中的元素 -
并查集
-
打砖块 -
并查集
、逆向思维
-
尽量减少恶意软件的传播 II -
并查集
、逆向思维
-
检查边长度限制的路径是否存在 -
并查集
、离线思维
-
保证图可完全遍历 -
双并查集
-
区域和检索 - 数组可修改 -
树状数组
、线段树
-
通过指令创建有序数组 -
树状数组
、线段树
-
统计数组中好三元组数目 -
树状数组
、线段树
-
最多 K 次交换相邻数位后得到的最小整数 -
树状数组
-
二维区域和检索 - 可变 -
二维树状数组
、线段树
-
计算右侧小于当前元素的个数 -
离散化树状数组
、线段树
-
区间和的个数 -
离散化树状数组
、线段树
-
翻转对 -
离散化树状数组
、分治归并
、线段树
-
最长递增子序列的个数 -
离散化树状数组
、区间最值问题
-
奇妙序列 -
动态开点线段树
、懒标记
-
Range 模块 -
动态开点线段树
、懒标记
-
我的日程安排表 III -
动态开点线段树
、懒标记
-
每天绘制的新区域数量 -
动态开点线段树
、懒标记
、区间染色模型
-
由单个字符重复的最长子字符串 -
线段树
、动态最大子段和模型
-
矩形面积 II -
线段树
、离散化
、扫描线
6. 图论
-
网络延迟时间 -
最短路
、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 了解更多细节。
Stars 趋势
贡献者
感谢以下所有朋友对本项目的贡献!
赞助者
感谢以下个人、组织对本项目的支持和赞助!
"You help the developer community practice for interviews, and there is nothing better we could ask for." -- Alan Yessenbayev
推荐者
知名互联网科技博主 @爱可可-爱生活 微博推荐。
版权
本项目著作权归 GitHub 开源社区 Doocs 所有,商业转载请联系 @yanglbme 获得授权,非商业转载请注明出处。
联系我们
欢迎各位小伙伴们添加 @yanglbme 的个人微信(微信号:YLB0109),备注 「leetcode」。后续我们会创建算法、技术相关的交流群,大家一起交流学习,分享经验,共同进步。
许可证
最近版本更新:(数据更新于 2024-09-12 10:56:29)
2024-07-24 11:37:37 v0.2.0
2022-01-28 09:54:23 v0.1.9
2021-12-04 20:32:09 v0.1.8
2021-10-19 14:15:48 v0.1.7
2021-08-06 20:53:11 v0.1.6
2021-06-12 21:11:35 v0.1.5
2021-06-02 01:09:47 v0.1.4
2021-05-07 00:30:02 v0.1.3
2021-05-02 22:52:27 v0.1.2
2021-04-22 20:30:04 v0.1.1
主题(topics):
algorithms, cpp, csharp, golang, java, javascript, leetcode, python3
doocs/leetcode同语言 Java最近更新仓库
2024-12-20 19:54:15 mybatis-flex/mybatis-flex
2024-12-19 21:53:46 spring-projects/spring-boot
2024-12-19 21:25:16 Stirling-Tools/Stirling-PDF
2024-12-19 16:28:14 Tornaco/Thanox
2024-12-19 10:42:01 alibaba/nacos
2024-12-18 20:58:34 dromara/forest