# Introduction
# LeetCode
简体中文 | [English](readme.en.md)
- - - - - -
![](https://img.kancloud.cn/f9/c9/f9c9ed0393995f1caf2d410615ce16ec_500x260.jpg)
- 2019-07-10 :[纪念项目 Star 突破 1W 的一个短文](thanksgiving.md), 记录了项目的"兴起"之路,大家有兴趣可以看一下,如果对这个项目感兴趣,请**点击一下 Star**, 项目会**持续更新**,感谢大家的支持。
- 2019-10-08: [纪念 LeetCode 项目 Star 突破 2W](thanksgiving2.md),并且 Github 搜索“LeetCode”,排名第一。
- 2020-04-12: [项目突破三万 Star](thanksgiving3.md)。
- 2020-04-14: 官网`力扣加加`上线啦 💐💐💐💐💐,有专题讲解,每日一题,下载区和视频题解,后续会增加更多内容,还不赶紧收藏起来?地址:<http://leetcode-solution.cn/>
![](https://img.kancloud.cn/7f/52/7f526154ec2fd45ef3889f126643c5f4_1269x497.jpg)
## 前言
这是我将我的所有公开的算法资料整理的一个电子书,全部题目信息中文化,以前会有一些英文描述,感谢 @CYL 的中文整理。
![](https://img.kancloud.cn/f3/5f/f35f2830353b282e4441e825901e8b8f_1586x1155.png)
![](https://img.kancloud.cn/56/8f/568f46562912793c1c00c28c84315563_1586x1155.png)
我写这本电子书花费了大量的时间和精力,除了内容上的创作,还要做一些电子书的排版,以让大家获得更好的阅读体验。光数学公式的展示,我就研究了多个插件的要源码,并魔改了一下才使得导出的电子书支持 latex。 不过有些动图,在做成电子书的时候自然就变没了,如果需要看动图的, 可以去我的公众号《力扣加加》或者我的 leetcode 题解仓库看。
由于是电子书,因此阅读体验可能会更好, 但是相应地就不能获得及时的更新,因此你可以收藏一下我的同步电子书的网站 [西法的刷题秘籍 - 在线版](https://leetcode-solution-leetcode-pp.gitbook.io/leetcode-solution/)。后期可能将每日一题, 91 天学算法其他章节的讲义等也整理进来。
电子书有更新我也会在公众号《力扣加加》进行通知, 感兴趣的同学可以关注一下。
目前导出了四种格式,可惜的是这几种格式都有自己的不足:
- 在线版。 实时更新,想要及时获取最新信息的可以用在线版。
- html。 方便大家在线观看,由于是 html ,实际上大家也可以保存起来**离线**观看。
- pdf。可使用 pdf 阅读器和浏览器(比如谷歌)直接观看,阅读体验一般,生成的目录不能导航。
- mobi。 下载一个 Kindle 客户端就可以看,不需要购买 Kindle。
- epub。 数学公式和主题都比较不错, 但是代码没有高亮。
大家选择适合自己的格式下载即可。
- [在线版](https://leetcode-solution-leetcode-pp.gitbook.io/leetcode-solution/)
html, pdf,mobi 和 epub 格式,关注我的公众号《力扣加加》回复`电子书`即可。
## 介绍
leetcode 题解,记录自己的 leetcode 解题之路。
本仓库目前分为**五个**部分:
- 第一个部分是 leetcode 经典题目的解析,包括思路,关键点和具体的代码实现。
- 第二部分是对于数据结构与算法的总结
- 第三部分是 anki 卡片, 将 leetcode 题目按照一定的方式记录在 anki 中,方便大家记忆。
- 第四部分是每日一题,每日一题是在交流群(包括微信和 qq)里进行的一种活动,大家一起 解一道题,这样讨论问题更加集中,会得到更多的反馈。而且 这些题目可以被记录下来,日后会进行筛选添加到仓库的题解模块。
- 第五部分是计划, 这里会记录将来要加入到以上三个部分内容
> 只有熟练掌握基础的数据结构与算法,才能对复杂问题迎刃有余。
## 非科学人士看过来
如果是国内的非科学用户,可以使用 <https://lucifer.ren/leetcode> ,整站做了静态化,速度贼快!但是阅读体验可能一般,大家也可以访问[力扣加加](http://leetcode-solution.cn/)(暂时没有静态化)获得更好的阅读体验。
另外需要科学的,我推荐一个工具, 用户体验真的是好,用起来超简单, 提供一站式工具,包括网络检测工具,浏览器插件等,支持多种客户端(还有我最喜欢的 Switch 加速器),价格也不贵,基础套餐折算到月大约 11.2 块/月。它还支持签到送天数,也就是说你可以每天签到无限续期。地址:<https://glados.space/landing/M9OHH-Q88JQ-DX72D-R04RN>
## 怎么刷 LeetCode?
- [我是如何刷 LeetCode 的](https://www.zhihu.com/question/280279208/answer/824585814)
- [算法小白如何高效、快速刷 leetcode?](https://www.zhihu.com/question/321738058/answer/1279464192)
## 刷题插件
- [刷题效率低?或许你就差这么一个插件](https://lucifer.ren/blog/2020/06/06/algo-chrome-extension/)
- [力扣刷题插件](https://lucifer.ren/blog/2020/08/16/leetcode-cheat/)
## 91 天学算法
- [91 天,遇见不一样的自己](https://lucifer.ren/blog/2020/05/30/91algo-05-30/)
## 食用指南
- 我对大部分题目的复杂度都进行了分析,除了个别分析起来复杂的题目,大家一定要对一道题的复杂度了如指掌才可以。> 有些题目我是故意不写的, 比如所有的回溯题目我都没写, 不过它们全部都是指数的复杂度
- 我对题目难度进行了分类的保留,因此你可以根据自己的情况刷。我推荐大家从简单开始,逐步加大难度,直到困难。
- 这里有一张互联网公司面试中经常考察的问题类型总结的思维导图,我们可以结合图片中的信息分析一下。
![](https://img.kancloud.cn/47/4d/474d2e2ea7a5ad24338b2a7b48d50f23_720x717.jpg)
(图片来自 leetcode)
其中算法,主要是以下几种:
- 基础技巧:分治、二分、贪心
- 排序算法:快速排序、归并排序、计数排序
- 搜索算法:回溯、递归、深度优先遍历,广度优先遍历,二叉搜索树等
- 图论:最短路径、最小生成树
- 动态规划:背包问题、最长子序列
数据结构,主要有如下几种:
- 数组与链表:单 / 双向链表
- 栈与队列
- 哈希表
- 堆:最大堆 / 最小堆
- 树与图:最近公共祖先、并查集
- 字符串:前缀树(字典树) / 后缀树
## 精彩预告
[0042.trapping-rain-water](42.trapping-rain-water.html):
![](https://img.kancloud.cn/f2/ac/f2ace69924552df014e65cafe8bd47b7_412x161.jpg)
[0547.friend-circles](547.friend-circles-en.md):
![](https://img.kancloud.cn/f0/18/f018c0e8e60162ad410fbdd5195df61b_889x1186.png)
[backtrack problems](90.subsets-ii.html):
![](https://img.kancloud.cn/71/09/7109475e7b278a11a551a02906aa2601_830x853.png)
[0198.house-robber](198.house-robber.html):
![](https://img.kancloud.cn/cd/cc/cdccdab761d5e384392455e3b21e1f90_720x415.png)
[0454.4-sum-ii](454.4-sum-ii.html):
![](https://img.kancloud.cn/08/d1/08d171266fe9f3e4bb57e0b72f2c790b_770x482.png)
### anki 卡片
Anki 主要分为两个部分:一部分是关键点到题目的映射,另一部分是题目到思路,关键点,代码的映射。
全部卡片都在 [anki-card](leetcode.apkg)
使用方法:
anki - 文件 - 导入 - 下拉格式选择“打包的 anki 集合”,然后选中你下载好的文件,确定即可。
更多关于 anki 使用方法的请查看 [anki 官网](https://apps.ankiweb.net/)
目前已更新卡片一览(仅列举正面):
- 二分法解决问题的关键点是什么,相关问题有哪些?
- 如何用栈的特点来简化操作, 涉及到的题目有哪些?
- 双指针问题的思路以及相关题目有哪些?
- 滑动窗口问题的思路以及相关题目有哪些?
- 回溯法解题的思路以及相关题目有哪些?
- 数论解决问题的关键点是什么,相关问题有哪些?
- 位运算解决问题的关键点是什么,相关问题有哪些?
> 已加入的题目有:#2 #3 #11
### 每日一题
每日一题是在交流群(包括微信和 qq)里通过 issues 来进行的一种活动,大家一起 解一道题,这样讨论问题更加集中,会得到更多的反馈。而且 这些题目可以被记录下来,日后会进行筛选添加到仓库的题解模块。
- [每日一题汇总](daily)
- [每日一题认领区](https://github.com/azl397985856/leetcode/projects/1)
### 计划
- LeetCode 换皮题目集锦
- 动态规划完善。最长递增子序列,最长回文子序列,编辑距离等“字符串”题目, 扔鸡蛋问题。 解题模板,滚动数组。
- 堆可以解决的题目。 手写堆
- 单调栈
- BFS & DFS
## 哪里能找到我?
点关注,不迷路。如果再给 ➕ 个星标就更棒啦!
> 关注加加,星标加加~
![](https://img.kancloud.cn/cf/0f/cf0fc0dd21e94b443dd8bca6cc15b34b_900x500.jpg)
## 关于我
擅长前端工程化,前端性能优化,前端标准化等,做过。net, 搞过 Java,现在是一名前端工程师,我的个人博客:<https://lucifer.ren/blog/>
我经常会在开源社区进行一些输出和分享,比较受欢迎的有 [宇宙最强的前端面试指南](https://github.com/azl397985856/fe-interview)和 [我的第一本小书](https://github.com/azl397985856/automate-everything)。目前本人正在写一本关于《leetcode 题解》的实体书,感兴趣的可以通过邮箱或者微信联系我,我会在出版的第一时间通知你,并给出首发优惠价。有需要可以直接群里联系我,或者发送到我的个人邮箱 \[azl397985856@gmail.com\]。 新书详情戳这里:[《或许是一本可以彻底改变你刷 LeetCode 效率的题解书》](https://lucifer.ren/blog/2020/04/07/leetcode-book.intro/)
## 贡献
- 如果有想法和创意,请提 [issue](https://github.com/azl397985856/leetcode/issues) 或者进群提
- 如果想贡献增加题解或者翻译, 可以参考[贡献指南](contributing.md)> 关于如何提交题解,我写了一份 [指南](1014.best-sightseeing-pair.md)
- 如果需要修改项目中图片,[这里](assets/drawio) 存放了项目中绘制图的源代码, 大家可以用 [draw.io](https://www.draw.io/) 打开进行编辑。
## 鸣谢
感谢为这个项目作出贡献的所有 [小伙伴](https://github.com/azl397985856/leetcode/graphs/contributors)
## License
<a class="pcalibre1 pcalibre2 pcalibre3 pcalibre4">CC BY-NC-ND 4.0</a>
- Introduction
- 第一章 - 算法专题
- 数据结构
- 基础算法
- 二叉树的遍历
- 动态规划
- 哈夫曼编码和游程编码
- 布隆过滤器
- 字符串问题
- 前缀树专题
- 《贪婪策略》专题
- 《深度优先遍历》专题
- 滑动窗口(思路 + 模板)
- 位运算
- 设计题
- 小岛问题
- 最大公约数
- 并查集
- 前缀和
- 平衡二叉树专题
- 第二章 - 91 天学算法
- 第一期讲义-二分法
- 第一期讲义-双指针
- 第二期
- 第三章 - 精选题解
- 《日程安排》专题
- 《构造二叉树》专题
- 字典序列删除
- 百度的算法面试题 * 祖玛游戏
- 西法的刷题秘籍】一次搞定前缀和
- 字节跳动的算法面试题是什么难度?
- 字节跳动的算法面试题是什么难度?(第二弹)
- 《我是你的妈妈呀》 * 第一期
- 一文带你看懂二叉树的序列化
- 穿上衣服我就不认识你了?来聊聊最长上升子序列
- 你的衣服我扒了 * 《最长公共子序列》
- 一文看懂《最大子序列和问题》
- 第四章 - 高频考题(简单)
- 面试题 17.12. BiNode
- 0001. 两数之和
- 0020. 有效的括号
- 0021. 合并两个有序链表
- 0026. 删除排序数组中的重复项
- 0053. 最大子序和
- 0088. 合并两个有序数组
- 0101. 对称二叉树
- 0104. 二叉树的最大深度
- 0108. 将有序数组转换为二叉搜索树
- 0121. 买卖股票的最佳时机
- 0122. 买卖股票的最佳时机 II
- 0125. 验证回文串
- 0136. 只出现一次的数字
- 0155. 最小栈
- 0167. 两数之和 II * 输入有序数组
- 0169. 多数元素
- 0172. 阶乘后的零
- 0190. 颠倒二进制位
- 0191. 位1的个数
- 0198. 打家劫舍
- 0203. 移除链表元素
- 0206. 反转链表
- 0219. 存在重复元素 II
- 0226. 翻转二叉树
- 0232. 用栈实现队列
- 0263. 丑数
- 0283. 移动零
- 0342. 4的幂
- 0349. 两个数组的交集
- 0371. 两整数之和
- 0437. 路径总和 III
- 0455. 分发饼干
- 0575. 分糖果
- 0874. 模拟行走机器人
- 1260. 二维网格迁移
- 1332. 删除回文子序列
- 第五章 - 高频考题(中等)
- 0002. 两数相加
- 0003. 无重复字符的最长子串
- 0005. 最长回文子串
- 0011. 盛最多水的容器
- 0015. 三数之和
- 0017. 电话号码的字母组合
- 0019. 删除链表的倒数第N个节点
- 0022. 括号生成
- 0024. 两两交换链表中的节点
- 0029. 两数相除
- 0031. 下一个排列
- 0033. 搜索旋转排序数组
- 0039. 组合总和
- 0040. 组合总和 II
- 0046. 全排列
- 0047. 全排列 II
- 0048. 旋转图像
- 0049. 字母异位词分组
- 0050. Pow(x, n)
- 0055. 跳跃游戏
- 0056. 合并区间
- 0060. 第k个排列
- 0062. 不同路径
- 0073. 矩阵置零
- 0075. 颜色分类
- 0078. 子集
- 0079. 单词搜索
- 0080. 删除排序数组中的重复项 II
- 0086. 分隔链表
- 0090. 子集 II
- 0091. 解码方法
- 0092. 反转链表 II
- 0094. 二叉树的中序遍历
- 0095. 不同的二叉搜索树 II
- 0096. 不同的二叉搜索树
- 0098. 验证二叉搜索树
- 0102. 二叉树的层序遍历
- 0103. 二叉树的锯齿形层次遍历
- 105. 从前序与中序遍历序列构造二叉树
- 0113. 路径总和 II
- 0129. 求根到叶子节点数字之和
- 0130. 被围绕的区域
- 0131. 分割回文串
- 0139. 单词拆分
- 0144. 二叉树的前序遍历
- 0150. 逆波兰表达式求值
- 0152. 乘积最大子数组
- 0199. 二叉树的右视图
- 0200. 岛屿数量
- 0201. 数字范围按位与
- 0208. 实现 Trie (前缀树)
- 0209. 长度最小的子数组
- 0211. 添加与搜索单词 * 数据结构设计
- 0215. 数组中的第K个最大元素
- 0221. 最大正方形
- 0229. 求众数 II
- 0230. 二叉搜索树中第K小的元素
- 0236. 二叉树的最近公共祖先
- 0238. 除自身以外数组的乘积
- 0240. 搜索二维矩阵 II
- 0279. 完全平方数
- 0309. 最佳买卖股票时机含冷冻期
- 0322. 零钱兑换
- 0328. 奇偶链表
- 0334. 递增的三元子序列
- 0337. 打家劫舍 III
- 0343. 整数拆分
- 0365. 水壶问题
- 0378. 有序矩阵中第K小的元素
- 0380. 常数时间插入、删除和获取随机元素
- 0416. 分割等和子集
- 0445. 两数相加 II
- 0454. 四数相加 II
- 0494. 目标和
- 0516. 最长回文子序列
- 0518. 零钱兑换 II
- 0547. 朋友圈
- 0560. 和为K的子数组
- 0609. 在系统中查找重复文件
- 0611. 有效三角形的个数
- 0718. 最长重复子数组
- 0754. 到达终点数字
- 0785. 判断二分图
- 0820. 单词的压缩编码
- 0875. 爱吃香蕉的珂珂
- 0877. 石子游戏
- 0886. 可能的二分法
- 0900. RLE 迭代器
- 0912. 排序数组
- 0935. 骑士拨号器
- 1011. 在 D 天内送达包裹的能力
- 1014. 最佳观光组合
- 1015. 可被 K 整除的最小整数
- 1019. 链表中的下一个更大节点
- 1020. 飞地的数量
- 1023. 驼峰式匹配
- 1031. 两个非重叠子数组的最大和
- 1104. 二叉树寻路
- 1131.绝对值表达式的最大值
- 1186. 删除一次得到子数组最大和
- 1218. 最长定差子序列
- 1227. 飞机座位分配概率
- 1261. 在受污染的二叉树中查找元素
- 1262. 可被三整除的最大和
- 1297. 子串的最大出现次数
- 1310. 子数组异或查询
- 1334. 阈值距离内邻居最少的城市
- 1371.每个元音包含偶数次的最长子字符串
- 第六章 - 高频考题(困难)
- 0004. 寻找两个正序数组的中位数
- 0023. 合并K个升序链表
- 0025. K 个一组翻转链表
- 0030. 串联所有单词的子串
- 0032. 最长有效括号
- 0042. 接雨水
- 0052. N皇后 II
- 0084. 柱状图中最大的矩形
- 0085. 最大矩形
- 0124. 二叉树中的最大路径和
- 0128. 最长连续序列
- 0145. 二叉树的后序遍历
- 0212. 单词搜索 II
- 0239. 滑动窗口最大值
- 0295. 数据流的中位数
- 0301. 删除无效的括号
- 0312. 戳气球
- 0335. 路径交叉
- 0460. LFU缓存
- 0472. 连接词
- 0488. 祖玛游戏
- 0493. 翻转对
- 0887. 鸡蛋掉落
- 0895. 最大频率栈
- 1032. 字符流
- 1168. 水资源分配优化
- 1449. 数位成本和为目标值的最大数字
- 后序