Skip to content

Repository files navigation

Introduction

本书主要记录了一些我在刷leetcode过程中碰到的一些个人认为比较经典题目的思路和题解。

之前在刷leetcode的过程中,发现很多题目做过就忘掉了,再次碰到类似的甚至是相同的题目是依然感觉无从下手。其实这往往是因为对于题目没有理解,掌握透。因此在之后的刷题过程中,刻意放慢了脚步,每做完一道题,都去主动思考这种算法的时空复杂度是多少,是否还有更优的解法,能否做到举一反三等。

章节的编排形式参考了leetcode的题型分类,例如二叉树,字符串以及链表等。题目以middle难度居多,同时含有少量的easy题以及极少量的hard题。题目没有特定的顺序,纯粹按照了自己的做题顺序来编排。最后一章主要是《剑指offer》上的题目,其中有一部分题目是与之前章节重合的。

目前只有Java语言的实现,后续考虑会加入Javascript以及Go语言的实现。但是鉴于个人有限的精力和时间,也可能不会实施......

如果有任何问题和意见欢迎在Issue区提出。

Author

PythonYXY

Content

  • Introduction

  • 二分查找

    • [287. 寻找重复数](二分查找/287. 寻找重复数.md)
    • [154. 寻找旋转排序数组中的最小值 II](二分查找/154. 寻找旋转排序数组中的最小值 II.md)
    • [300. 最长上升子序列](二分查找/300. 最长上升子序列.md)
    • [69. X的平方根](二分查找/69. X的平方根.md)
    • [354. 俄罗斯套娃信封问题](二分查找/354. 俄罗斯套娃信封问题.md)
    • [153. 寻找旋转排序数组中的最小值](二分查找/153. 寻找旋转排序数组中的最小值.md)
  • 线性表

    • [560. 和为K的子数组](线性表/560. 和为K的子数组.md)
    • [15. 三数之和](线性表/15. 三数之和.md)
    • [523 连续子数组和](线性表/523 连续子数组和.md)
    • [215. 数组中的第K个最大元素](线性表/215. 数组中的第K个最大元素.md)
    • [209. 长度最小的子数组](线性表/209. 长度最小的子数组.md)
    • [4. 寻找两个有序数组的中位数](线性表/4. 寻找两个有序数组的中位数.md)
    • [41. 缺失的第一个正数](线性表/41. 缺失的第一个正数.md)
  • 链表

    • [430. 扁平化多级双向链表](链表/430. 扁平化多级双向链表.md)
    • [138. 复制带随机指针的链表](链表/138. 复制带随机指针的链表.md)
    • [142. 环形链表 II](链表/142. 环形链表 II.md)
    • [460. LFU缓存](链表/460. LFU缓存.md)
    • [86. 分隔链表](链表/86. 分隔链表.md)
    • [109. 有序链表转换二叉搜索树](链表/109. 有序链表转换二叉搜索树.md)
    • [206. 反转链表](链表/206. 反转链表.md)
    • [25. K 个一组翻转链表难度困难](链表/25. K 个一组翻转链表难度困难.md)
    • [92. 反转链表 II](链表/92. 反转链表 II.md)
    • [23. 合并K个排序链表](链表/23. 合并K个排序链表.md)
    • [143. 重排链表](链表/143. 重排链表.md)
  • 二叉树

    • [145. 二叉树的后序遍历](二叉树/145. 二叉树的后序遍历.md)
    • [307. 区域和检索 - 数组可修改](二叉树/307. 区域和检索 - 数组可修改.md)
    • [173. 二叉搜索树迭代器](二叉树/173. 二叉搜索树迭代器.md)
    • [230. 二叉搜索树中第K小的元素](二叉树/230. 二叉搜索树中第K小的元素.md)
    • [95. 不同的二叉搜索树 II](二叉树/95. 不同的二叉搜索树 II.md)
    • [110. 平衡二叉树](二叉树/110. 平衡二叉树.md)
    • [114. 二叉树展开为链表](二叉树/114. 二叉树展开为链表.md)
    • [99. 恢复二叉搜索树](二叉树/99. 恢复二叉搜索树.md)
    • [113. 路径总和 II](二叉树/113. 路径总和 II.md)
    • [96. 不同的二叉搜索树](二叉树/96. 不同的二叉搜索树.md)
    • [129. 求根到叶子节点数字之和](二叉树/129. 求根到叶子节点数字之和.md)
    • [144. 二叉树的前序遍历](二叉树/144. 二叉树的前序遍历.md)
    • [117. 填充每个节点的下一个右侧节点指针 II](二叉树/117. 填充每个节点的下一个右侧节点指针 II.md)
    • [236. 二叉树的最近公共祖先](二叉树/236. 二叉树的最近公共祖先.md)
  • 搜索

    • [240. 搜索二维矩阵 II](搜索/240. 搜索二维矩阵 II.md)
    • [127. 单词接龙](搜索/127. 单词接龙.md)
    • [130. 被围绕的区域](搜索/130. 被围绕的区域.md)
  • 字符串

    • [438. 找到字符串中所有字母异位词](字符串/438. 找到字符串中所有字母异位词.md)
    • [76. 最小覆盖子串](字符串/76. 最小覆盖子串.md)
    • [44. 通配符匹配](字符串/44. 通配符匹配.md)
    • [28. 实现 strStr](字符串/28. 实现 strStr.md)
    • [5. 最长回文子串](字符串/5. 最长回文子串.md)
    • [1143. 最长公共子序列](字符串/1143. 最长公共子序列.md)
    • [10. 正则表达式匹配](字符串/10. 正则表达式匹配.md)
    • [522. 最长特殊序列 II](字符串/522. 最长特殊序列 II.md)
    • [796. 旋转字符串](字符串/796. 旋转字符串.md)
    • [459. 重复的子字符串](字符串/459. 重复的子字符串.md)
    • [72. 编辑距离](字符串/72. 编辑距离.md)
    • [3. 无重复字符的最长子串](字符串/3. 无重复字符的最长子串.md)
  • 动态规划

    • [131. 分割回文串](动态规划/131. 分割回文串.md)
    • [97. 交错字符串](动态规划/97. 交错字符串.md)
    • [188. 买卖股票的最佳时机 IV](动态规划/188. 买卖股票的最佳时机 IV.md)
    • [122. 买卖股票的最佳时机 II](动态规划/122. 买卖股票的最佳时机 II.md)
    • [132. 分割回文串 II](动态规划/132. 分割回文串 II.md)
    • [152. 乘积最大子序列](动态规划/152. 乘积最大子序列.md)
    • [87. 扰乱字符串](动态规划/87. 扰乱字符串.md)
    • [714. 买卖股票的最佳时机含手续费](动态规划/714. 买卖股票的最佳时机含手续费.md)
    • [121. 买卖股票的最佳时机](动态规划/121. 买卖股票的最佳时机.md)
    • [85. 最大矩形](动态规划/85. 最大矩形.md)
    • [120. 三角形最小路径和](动态规划/120. 三角形最小路径和.md)
    • [174. 地下城游戏](动态规划/174. 地下城游戏.md)
    • [140. 单词拆分 II](动态规划/140. 单词拆分 II.md)
    • [123. 买卖股票的最佳时机 III](动态规划/123. 买卖股票的最佳时机 III.md)
    • [940. 不同的子序列 II](动态规划/940. 不同的子序列 II.md)
    • [139. 单词拆分](动态规划/139. 单词拆分.md)
    • [309. 最佳买卖股票时机含冷冻期](动态规划/309. 最佳买卖股票时机含冷冻期.md)
    • [91. 解码方法](动态规划/91. 解码方法.md)
    • [115. 不同的子序列](动态规划/115. 不同的子序列.md)
    • [337. 打家劫舍 III](动态规划/337. 打家劫舍 III.md)
  • 数论

    • [264. 丑数 II](数论/264. 丑数 II.md)
    • [347. 前 K 个高频元素](数论/347. 前 K 个高频元素.md)
    • [355. 设计推特](数论/355. 设计推特.md)
    • [166. 分数到小数](数论/166. 分数到小数.md)
    • [373. 查找和最小的K对数字](数论/373. 查找和最小的K对数字.md)
    • [202. 快乐数](数论/202. 快乐数.md)
    • [172. 阶乘后的零](数论/172. 阶乘后的零.md)
    • [313. 超级丑数](数论/313. 超级丑数.md)
    • [292. Nim 游戏](数论/292. Nim 游戏.md)
  • 位运算

    • [89. 格雷编码](位运算/89. 格雷编码.md)
    • [201. 数字范围按位与](位运算/201. 数字范围按位与.md)
    • [52. N皇后 II](位运算/52. N皇后 II.md)
    • [51. N皇后](位运算/51. N皇后.md)
    • [1275. 找出井字棋的获胜者](位运算/1275. 找出井字棋的获胜者.md)
    • [137. 只出现一次的数字 II](位运算/137. 只出现一次的数字 II.md)
    • [187. 重复的DNA序列](位运算/187. 重复的DNA序列.md)
    • [136. 只出现一次的数字](位运算/136. 只出现一次的数字.md)
  • 剑指offer
    • [46. 把数字翻译成字符串](剑指offer/46. 把数字翻译成字符串.md)
    • [28. 对称的二叉树](剑指offer/28. 对称的二叉树.md)
    • 4.二维数组中的查找
    • [L191. 位1的个数](剑指offer/L191. 位1的个数.md)
    • [43. 1~n整数中1出现的次数](剑指offer/43. 1~n整数中1出现的次数.md)
    • [L153. 寻找旋转排序数组中的最小值](剑指offer/L153. 寻找旋转排序数组中的最小值.md)
    • [29. 顺时针打印矩阵](剑指offer/29. 顺时针打印矩阵.md)
    • [45. 把数组排成最小的数](剑指offer/45. 把数组排成最小的数.md)
    • [36. 二叉搜索树与双向链表](剑指offer/36. 二叉搜索树与双向链表.md)
    • [48. 最长不含重复字符的子字符串](剑指offer/48. 最长不含重复字符的子字符串.md)
    • 24.反转链表
    • [35. 复杂链表的复制](剑指offer/35. 复杂链表的复制.md)
    • [30. 包含min函数的栈](剑指offer/30. 包含min函数的栈.md)
    • [26. 树的子结构](剑指offer/26. 树的子结构.md)
    • [32 - II. 从上到下打印二叉树 II](剑指offer/32 - II. 从上到下打印二叉树 II.md)
    • [22. 链表中倒数第k个节点](剑指offer/22. 链表中倒数第k个节点.md)
    • [49. 丑数](剑指offer/49. 丑数.md)
    • [19. 正则表达式匹配](剑指offer/19. 正则表达式匹配.md)
    • [39. 数组中出现次数超过一半的数字](剑指offer/39. 数组中出现次数超过一半的数字.md)
    • 20.表示数值的字符串
    • [14. 剪梯子](剑指offer/14. 剪梯子.md)
    • [L154. 寻找旋转排序数组中的最小值 II](剑指offer/L154. 寻找旋转排序数组中的最小值 II.md)
    • [9. 用两个栈实现队列](剑指offer/9. 用两个栈实现队列.md)
    • [44. 数字序列中某一位的数字](剑指offer/44. 数字序列中某一位的数字.md)
    • [40. 最小的k个数](剑指offer/40. 最小的k个数.md)
    • [3. 数组中的重复数字](剑指offer/3. 数组中的重复数字.md)
    • [L287. 寻找重复数](剑指offer/L287. 寻找重复数.md)
    • [32 - III. 从上到下打印二叉树 III](剑指offer/32 - III. 从上到下打印二叉树 III.md)
    • [31. 栈的压入、弹出序列](剑指offer/31. 栈的压入、弹出序列.md)
    • [15. 二进制中1的个数](剑指offer/15. 二进制中1的个数.md)
    • [33. 二叉搜索树的后序遍历序列](剑指offer/33. 二叉搜索树的后序遍历序列.md)
    • [41. 数据流中的中位数](剑指offer/41. 数据流中的中位数.md)
    • 8.二叉树的下一个节点

About

Leetcode & 剑指offer 部分题解

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - PythonYXY/leetcode: Leetcode & 剑指offer 部分题解 · GitHub
Skip to content

Repository files navigation

Introduction

本书主要记录了一些我在刷leetcode过程中碰到的一些个人认为比较经典题目的思路和题解。

之前在刷leetcode的过程中,发现很多题目做过就忘掉了,再次碰到类似的甚至是相同的题目是依然感觉无从下手。其实这往往是因为对于题目没有理解,掌握透。因此在之后的刷题过程中,刻意放慢了脚步,每做完一道题,都去主动思考这种算法的时空复杂度是多少,是否还有更优的解法,能否做到举一反三等。

章节的编排形式参考了leetcode的题型分类,例如二叉树,字符串以及链表等。题目以middle难度居多,同时含有少量的easy题以及极少量的hard题。题目没有特定的顺序,纯粹按照了自己的做题顺序来编排。最后一章主要是《剑指offer》上的题目,其中有一部分题目是与之前章节重合的。

目前只有Java语言的实现,后续考虑会加入Javascript以及Go语言的实现。但是鉴于个人有限的精力和时间,也可能不会实施......

如果有任何问题和意见欢迎在Issue区提出。

Author

PythonYXY

Content

  • Introduction

  • 二分查找

    • [287. 寻找重复数](二分查找/287. 寻找重复数.md)
    • [154. 寻找旋转排序数组中的最小值 II](二分查找/154. 寻找旋转排序数组中的最小值 II.md)
    • [300. 最长上升子序列](二分查找/300. 最长上升子序列.md)
    • [69. X的平方根](二分查找/69. X的平方根.md)
    • [354. 俄罗斯套娃信封问题](二分查找/354. 俄罗斯套娃信封问题.md)
    • [153. 寻找旋转排序数组中的最小值](二分查找/153. 寻找旋转排序数组中的最小值.md)
  • 线性表

    • [560. 和为K的子数组](线性表/560. 和为K的子数组.md)
    • [15. 三数之和](线性表/15. 三数之和.md)
    • [523 连续子数组和](线性表/523 连续子数组和.md)
    • [215. 数组中的第K个最大元素](线性表/215. 数组中的第K个最大元素.md)
    • [209. 长度最小的子数组](线性表/209. 长度最小的子数组.md)
    • [4. 寻找两个有序数组的中位数](线性表/4. 寻找两个有序数组的中位数.md)
    • [41. 缺失的第一个正数](线性表/41. 缺失的第一个正数.md)
  • 链表

    • [430. 扁平化多级双向链表](链表/430. 扁平化多级双向链表.md)
    • [138. 复制带随机指针的链表](链表/138. 复制带随机指针的链表.md)
    • [142. 环形链表 II](链表/142. 环形链表 II.md)
    • [460. LFU缓存](链表/460. LFU缓存.md)
    • [86. 分隔链表](链表/86. 分隔链表.md)
    • [109. 有序链表转换二叉搜索树](链表/109. 有序链表转换二叉搜索树.md)
    • [206. 反转链表](链表/206. 反转链表.md)
    • [25. K 个一组翻转链表难度困难](链表/25. K 个一组翻转链表难度困难.md)
    • [92. 反转链表 II](链表/92. 反转链表 II.md)
    • [23. 合并K个排序链表](链表/23. 合并K个排序链表.md)
    • [143. 重排链表](链表/143. 重排链表.md)
  • 二叉树

    • [145. 二叉树的后序遍历](二叉树/145. 二叉树的后序遍历.md)
    • [307. 区域和检索 - 数组可修改](二叉树/307. 区域和检索 - 数组可修改.md)
    • [173. 二叉搜索树迭代器](二叉树/173. 二叉搜索树迭代器.md)
    • [230. 二叉搜索树中第K小的元素](二叉树/230. 二叉搜索树中第K小的元素.md)
    • [95. 不同的二叉搜索树 II](二叉树/95. 不同的二叉搜索树 II.md)
    • [110. 平衡二叉树](二叉树/110. 平衡二叉树.md)
    • [114. 二叉树展开为链表](二叉树/114. 二叉树展开为链表.md)
    • [99. 恢复二叉搜索树](二叉树/99. 恢复二叉搜索树.md)
    • [113. 路径总和 II](二叉树/113. 路径总和 II.md)
    • [96. 不同的二叉搜索树](二叉树/96. 不同的二叉搜索树.md)
    • [129. 求根到叶子节点数字之和](二叉树/129. 求根到叶子节点数字之和.md)
    • [144. 二叉树的前序遍历](二叉树/144. 二叉树的前序遍历.md)
    • [117. 填充每个节点的下一个右侧节点指针 II](二叉树/117. 填充每个节点的下一个右侧节点指针 II.md)
    • [236. 二叉树的最近公共祖先](二叉树/236. 二叉树的最近公共祖先.md)
  • 搜索

    • [240. 搜索二维矩阵 II](搜索/240. 搜索二维矩阵 II.md)
    • [127. 单词接龙](搜索/127. 单词接龙.md)
    • [130. 被围绕的区域](搜索/130. 被围绕的区域.md)
  • 字符串

    • [438. 找到字符串中所有字母异位词](字符串/438. 找到字符串中所有字母异位词.md)
    • [76. 最小覆盖子串](字符串/76. 最小覆盖子串.md)
    • [44. 通配符匹配](字符串/44. 通配符匹配.md)
    • [28. 实现 strStr](字符串/28. 实现 strStr.md)
    • [5. 最长回文子串](字符串/5. 最长回文子串.md)
    • [1143. 最长公共子序列](字符串/1143. 最长公共子序列.md)
    • [10. 正则表达式匹配](字符串/10. 正则表达式匹配.md)
    • [522. 最长特殊序列 II](字符串/522. 最长特殊序列 II.md)
    • [796. 旋转字符串](字符串/796. 旋转字符串.md)
    • [459. 重复的子字符串](字符串/459. 重复的子字符串.md)
    • [72. 编辑距离](字符串/72. 编辑距离.md)
    • [3. 无重复字符的最长子串](字符串/3. 无重复字符的最长子串.md)
  • 动态规划

    • [131. 分割回文串](动态规划/131. 分割回文串.md)
    • [97. 交错字符串](动态规划/97. 交错字符串.md)
    • [188. 买卖股票的最佳时机 IV](动态规划/188. 买卖股票的最佳时机 IV.md)
    • [122. 买卖股票的最佳时机 II](动态规划/122. 买卖股票的最佳时机 II.md)
    • [132. 分割回文串 II](动态规划/132. 分割回文串 II.md)
    • [152. 乘积最大子序列](动态规划/152. 乘积最大子序列.md)
    • [87. 扰乱字符串](动态规划/87. 扰乱字符串.md)
    • [714. 买卖股票的最佳时机含手续费](动态规划/714. 买卖股票的最佳时机含手续费.md)
    • [121. 买卖股票的最佳时机](动态规划/121. 买卖股票的最佳时机.md)
    • [85. 最大矩形](动态规划/85. 最大矩形.md)
    • [120. 三角形最小路径和](动态规划/120. 三角形最小路径和.md)
    • [174. 地下城游戏](动态规划/174. 地下城游戏.md)
    • [140. 单词拆分 II](动态规划/140. 单词拆分 II.md)
    • [123. 买卖股票的最佳时机 III](动态规划/123. 买卖股票的最佳时机 III.md)
    • [940. 不同的子序列 II](动态规划/940. 不同的子序列 II.md)
    • [139. 单词拆分](动态规划/139. 单词拆分.md)
    • [309. 最佳买卖股票时机含冷冻期](动态规划/309. 最佳买卖股票时机含冷冻期.md)
    • [91. 解码方法](动态规划/91. 解码方法.md)
    • [115. 不同的子序列](动态规划/115. 不同的子序列.md)
    • [337. 打家劫舍 III](动态规划/337. 打家劫舍 III.md)
  • 数论

    • [264. 丑数 II](数论/264. 丑数 II.md)
    • [347. 前 K 个高频元素](数论/347. 前 K 个高频元素.md)
    • [355. 设计推特](数论/355. 设计推特.md)
    • [166. 分数到小数](数论/166. 分数到小数.md)
    • [373. 查找和最小的K对数字](数论/373. 查找和最小的K对数字.md)
    • [202. 快乐数](数论/202. 快乐数.md)
    • [172. 阶乘后的零](数论/172. 阶乘后的零.md)
    • [313. 超级丑数](数论/313. 超级丑数.md)
    • [292. Nim 游戏](数论/292. Nim 游戏.md)
  • 位运算

    • [89. 格雷编码](位运算/89. 格雷编码.md)
    • [201. 数字范围按位与](位运算/201. 数字范围按位与.md)
    • [52. N皇后 II](位运算/52. N皇后 II.md)
    • [51. N皇后](位运算/51. N皇后.md)
    • [1275. 找出井字棋的获胜者](位运算/1275. 找出井字棋的获胜者.md)
    • [137. 只出现一次的数字 II](位运算/137. 只出现一次的数字 II.md)
    • [187. 重复的DNA序列](位运算/187. 重复的DNA序列.md)
    • [136. 只出现一次的数字](位运算/136. 只出现一次的数字.md)
  • 剑指offer
    • [46. 把数字翻译成字符串](剑指offer/46. 把数字翻译成字符串.md)
    • [28. 对称的二叉树](剑指offer/28. 对称的二叉树.md)
    • 4.二维数组中的查找
    • [L191. 位1的个数](剑指offer/L191. 位1的个数.md)
    • [43. 1~n整数中1出现的次数](剑指offer/43. 1~n整数中1出现的次数.md)
    • [L153. 寻找旋转排序数组中的最小值](剑指offer/L153. 寻找旋转排序数组中的最小值.md)
    • [29. 顺时针打印矩阵](剑指offer/29. 顺时针打印矩阵.md)
    • [45. 把数组排成最小的数](剑指offer/45. 把数组排成最小的数.md)
    • [36. 二叉搜索树与双向链表](剑指offer/36. 二叉搜索树与双向链表.md)
    • [48. 最长不含重复字符的子字符串](剑指offer/48. 最长不含重复字符的子字符串.md)
    • 24.反转链表
    • [35. 复杂链表的复制](剑指offer/35. 复杂链表的复制.md)
    • [30. 包含min函数的栈](剑指offer/30. 包含min函数的栈.md)
    • [26. 树的子结构](剑指offer/26. 树的子结构.md)
    • [32 - II. 从上到下打印二叉树 II](剑指offer/32 - II. 从上到下打印二叉树 II.md)
    • [22. 链表中倒数第k个节点](剑指offer/22. 链表中倒数第k个节点.md)
    • [49. 丑数](剑指offer/49. 丑数.md)
    • [19. 正则表达式匹配](剑指offer/19. 正则表达式匹配.md)
    • [39. 数组中出现次数超过一半的数字](剑指offer/39. 数组中出现次数超过一半的数字.md)
    • 20.表示数值的字符串
    • [14. 剪梯子](剑指offer/14. 剪梯子.md)
    • [L154. 寻找旋转排序数组中的最小值 II](剑指offer/L154. 寻找旋转排序数组中的最小值 II.md)
    • [9. 用两个栈实现队列](剑指offer/9. 用两个栈实现队列.md)
    • [44. 数字序列中某一位的数字](剑指offer/44. 数字序列中某一位的数字.md)
    • [40. 最小的k个数](剑指offer/40. 最小的k个数.md)
    • [3. 数组中的重复数字](剑指offer/3. 数组中的重复数字.md)
    • [L287. 寻找重复数](剑指offer/L287. 寻找重复数.md)
    • [32 - III. 从上到下打印二叉树 III](剑指offer/32 - III. 从上到下打印二叉树 III.md)
    • [31. 栈的压入、弹出序列](剑指offer/31. 栈的压入、弹出序列.md)
    • [15. 二进制中1的个数](剑指offer/15. 二进制中1的个数.md)
    • [33. 二叉搜索树的后序遍历序列](剑指offer/33. 二叉搜索树的后序遍历序列.md)
    • [41. 数据流中的中位数](剑指offer/41. 数据流中的中位数.md)
    • 8.二叉树的下一个节点

About

Leetcode & 剑指offer 部分题解

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - PythonYXY/leetcode: Leetcode & 剑指offer 部分题解 · GitHub
Skip to content

Repository files navigation

Introduction

本书主要记录了一些我在刷leetcode过程中碰到的一些个人认为比较经典题目的思路和题解。

之前在刷leetcode的过程中,发现很多题目做过就忘掉了,再次碰到类似的甚至是相同的题目是依然感觉无从下手。其实这往往是因为对于题目没有理解,掌握透。因此在之后的刷题过程中,刻意放慢了脚步,每做完一道题,都去主动思考这种算法的时空复杂度是多少,是否还有更优的解法,能否做到举一反三等。

章节的编排形式参考了leetcode的题型分类,例如二叉树,字符串以及链表等。题目以middle难度居多,同时含有少量的easy题以及极少量的hard题。题目没有特定的顺序,纯粹按照了自己的做题顺序来编排。最后一章主要是《剑指offer》上的题目,其中有一部分题目是与之前章节重合的。

目前只有Java语言的实现,后续考虑会加入Javascript以及Go语言的实现。但是鉴于个人有限的精力和时间,也可能不会实施......

如果有任何问题和意见欢迎在Issue区提出。

Author

PythonYXY

Content

  • Introduction

  • 二分查找

    • [287. 寻找重复数](二分查找/287. 寻找重复数.md)
    • [154. 寻找旋转排序数组中的最小值 II](二分查找/154. 寻找旋转排序数组中的最小值 II.md)
    • [300. 最长上升子序列](二分查找/300. 最长上升子序列.md)
    • [69. X的平方根](二分查找/69. X的平方根.md)
    • [354. 俄罗斯套娃信封问题](二分查找/354. 俄罗斯套娃信封问题.md)
    • [153. 寻找旋转排序数组中的最小值](二分查找/153. 寻找旋转排序数组中的最小值.md)
  • 线性表

    • [560. 和为K的子数组](线性表/560. 和为K的子数组.md)
    • [15. 三数之和](线性表/15. 三数之和.md)
    • [523 连续子数组和](线性表/523 连续子数组和.md)
    • [215. 数组中的第K个最大元素](线性表/215. 数组中的第K个最大元素.md)
    • [209. 长度最小的子数组](线性表/209. 长度最小的子数组.md)
    • [4. 寻找两个有序数组的中位数](线性表/4. 寻找两个有序数组的中位数.md)
    • [41. 缺失的第一个正数](线性表/41. 缺失的第一个正数.md)
  • 链表

    • [430. 扁平化多级双向链表](链表/430. 扁平化多级双向链表.md)
    • [138. 复制带随机指针的链表](链表/138. 复制带随机指针的链表.md)
    • [142. 环形链表 II](链表/142. 环形链表 II.md)
    • [460. LFU缓存](链表/460. LFU缓存.md)
    • [86. 分隔链表](链表/86. 分隔链表.md)
    • [109. 有序链表转换二叉搜索树](链表/109. 有序链表转换二叉搜索树.md)
    • [206. 反转链表](链表/206. 反转链表.md)
    • [25. K 个一组翻转链表难度困难](链表/25. K 个一组翻转链表难度困难.md)
    • [92. 反转链表 II](链表/92. 反转链表 II.md)
    • [23. 合并K个排序链表](链表/23. 合并K个排序链表.md)
    • [143. 重排链表](链表/143. 重排链表.md)
  • 二叉树

    • [145. 二叉树的后序遍历](二叉树/145. 二叉树的后序遍历.md)
    • [307. 区域和检索 - 数组可修改](二叉树/307. 区域和检索 - 数组可修改.md)
    • [173. 二叉搜索树迭代器](二叉树/173. 二叉搜索树迭代器.md)
    • [230. 二叉搜索树中第K小的元素](二叉树/230. 二叉搜索树中第K小的元素.md)
    • [95. 不同的二叉搜索树 II](二叉树/95. 不同的二叉搜索树 II.md)
    • [110. 平衡二叉树](二叉树/110. 平衡二叉树.md)
    • [114. 二叉树展开为链表](二叉树/114. 二叉树展开为链表.md)
    • [99. 恢复二叉搜索树](二叉树/99. 恢复二叉搜索树.md)
    • [113. 路径总和 II](二叉树/113. 路径总和 II.md)
    • [96. 不同的二叉搜索树](二叉树/96. 不同的二叉搜索树.md)
    • [129. 求根到叶子节点数字之和](二叉树/129. 求根到叶子节点数字之和.md)
    • [144. 二叉树的前序遍历](二叉树/144. 二叉树的前序遍历.md)
    • [117. 填充每个节点的下一个右侧节点指针 II](二叉树/117. 填充每个节点的下一个右侧节点指针 II.md)
    • [236. 二叉树的最近公共祖先](二叉树/236. 二叉树的最近公共祖先.md)
  • 搜索

    • [240. 搜索二维矩阵 II](搜索/240. 搜索二维矩阵 II.md)
    • [127. 单词接龙](搜索/127. 单词接龙.md)
    • [130. 被围绕的区域](搜索/130. 被围绕的区域.md)
  • 字符串

    • [438. 找到字符串中所有字母异位词](字符串/438. 找到字符串中所有字母异位词.md)
    • [76. 最小覆盖子串](字符串/76. 最小覆盖子串.md)
    • [44. 通配符匹配](字符串/44. 通配符匹配.md)
    • [28. 实现 strStr](字符串/28. 实现 strStr.md)
    • [5. 最长回文子串](字符串/5. 最长回文子串.md)
    • [1143. 最长公共子序列](字符串/1143. 最长公共子序列.md)
    • [10. 正则表达式匹配](字符串/10. 正则表达式匹配.md)
    • [522. 最长特殊序列 II](字符串/522. 最长特殊序列 II.md)
    • [796. 旋转字符串](字符串/796. 旋转字符串.md)
    • [459. 重复的子字符串](字符串/459. 重复的子字符串.md)
    • [72. 编辑距离](字符串/72. 编辑距离.md)
    • [3. 无重复字符的最长子串](字符串/3. 无重复字符的最长子串.md)
  • 动态规划

    • [131. 分割回文串](动态规划/131. 分割回文串.md)
    • [97. 交错字符串](动态规划/97. 交错字符串.md)
    • [188. 买卖股票的最佳时机 IV](动态规划/188. 买卖股票的最佳时机 IV.md)
    • [122. 买卖股票的最佳时机 II](动态规划/122. 买卖股票的最佳时机 II.md)
    • [132. 分割回文串 II](动态规划/132. 分割回文串 II.md)
    • [152. 乘积最大子序列](动态规划/152. 乘积最大子序列.md)
    • [87. 扰乱字符串](动态规划/87. 扰乱字符串.md)
    • [714. 买卖股票的最佳时机含手续费](动态规划/714. 买卖股票的最佳时机含手续费.md)
    • [121. 买卖股票的最佳时机](动态规划/121. 买卖股票的最佳时机.md)
    • [85. 最大矩形](动态规划/85. 最大矩形.md)
    • [120. 三角形最小路径和](动态规划/120. 三角形最小路径和.md)
    • [174. 地下城游戏](动态规划/174. 地下城游戏.md)
    • [140. 单词拆分 II](动态规划/140. 单词拆分 II.md)
    • [123. 买卖股票的最佳时机 III](动态规划/123. 买卖股票的最佳时机 III.md)
    • [940. 不同的子序列 II](动态规划/940. 不同的子序列 II.md)
    • [139. 单词拆分](动态规划/139. 单词拆分.md)
    • [309. 最佳买卖股票时机含冷冻期](动态规划/309. 最佳买卖股票时机含冷冻期.md)
    • [91. 解码方法](动态规划/91. 解码方法.md)
    • [115. 不同的子序列](动态规划/115. 不同的子序列.md)
    • [337. 打家劫舍 III](动态规划/337. 打家劫舍 III.md)
  • 数论

    • [264. 丑数 II](数论/264. 丑数 II.md)
    • [347. 前 K 个高频元素](数论/347. 前 K 个高频元素.md)
    • [355. 设计推特](数论/355. 设计推特.md)
    • [166. 分数到小数](数论/166. 分数到小数.md)
    • [373. 查找和最小的K对数字](数论/373. 查找和最小的K对数字.md)
    • [202. 快乐数](数论/202. 快乐数.md)
    • [172. 阶乘后的零](数论/172. 阶乘后的零.md)
    • [313. 超级丑数](数论/313. 超级丑数.md)
    • [292. Nim 游戏](数论/292. Nim 游戏.md)
  • 位运算

    • [89. 格雷编码](位运算/89. 格雷编码.md)
    • [201. 数字范围按位与](位运算/201. 数字范围按位与.md)
    • [52. N皇后 II](位运算/52. N皇后 II.md)
    • [51. N皇后](位运算/51. N皇后.md)
    • [1275. 找出井字棋的获胜者](位运算/1275. 找出井字棋的获胜者.md)
    • [137. 只出现一次的数字 II](位运算/137. 只出现一次的数字 II.md)
    • [187. 重复的DNA序列](位运算/187. 重复的DNA序列.md)
    • [136. 只出现一次的数字](位运算/136. 只出现一次的数字.md)
  • 剑指offer
    • [46. 把数字翻译成字符串](剑指offer/46. 把数字翻译成字符串.md)
    • [28. 对称的二叉树](剑指offer/28. 对称的二叉树.md)
    • 4.二维数组中的查找
    • [L191. 位1的个数](剑指offer/L191. 位1的个数.md)
    • [43. 1~n整数中1出现的次数](剑指offer/43. 1~n整数中1出现的次数.md)
    • [L153. 寻找旋转排序数组中的最小值](剑指offer/L153. 寻找旋转排序数组中的最小值.md)
    • [29. 顺时针打印矩阵](剑指offer/29. 顺时针打印矩阵.md)
    • [45. 把数组排成最小的数](剑指offer/45. 把数组排成最小的数.md)
    • [36. 二叉搜索树与双向链表](剑指offer/36. 二叉搜索树与双向链表.md)
    • [48. 最长不含重复字符的子字符串](剑指offer/48. 最长不含重复字符的子字符串.md)
    • 24.反转链表
    • [35. 复杂链表的复制](剑指offer/35. 复杂链表的复制.md)
    • [30. 包含min函数的栈](剑指offer/30. 包含min函数的栈.md)
    • [26. 树的子结构](剑指offer/26. 树的子结构.md)
    • [32 - II. 从上到下打印二叉树 II](剑指offer/32 - II. 从上到下打印二叉树 II.md)
    • [22. 链表中倒数第k个节点](剑指offer/22. 链表中倒数第k个节点.md)
    • [49. 丑数](剑指offer/49. 丑数.md)
    • [19. 正则表达式匹配](剑指offer/19. 正则表达式匹配.md)
    • [39. 数组中出现次数超过一半的数字](剑指offer/39. 数组中出现次数超过一半的数字.md)
    • 20.表示数值的字符串
    • [14. 剪梯子](剑指offer/14. 剪梯子.md)
    • [L154. 寻找旋转排序数组中的最小值 II](剑指offer/L154. 寻找旋转排序数组中的最小值 II.md)
    • [9. 用两个栈实现队列](剑指offer/9. 用两个栈实现队列.md)
    • [44. 数字序列中某一位的数字](剑指offer/44. 数字序列中某一位的数字.md)
    • [40. 最小的k个数](剑指offer/40. 最小的k个数.md)
    • [3. 数组中的重复数字](剑指offer/3. 数组中的重复数字.md)
    • [L287. 寻找重复数](剑指offer/L287. 寻找重复数.md)
    • [32 - III. 从上到下打印二叉树 III](剑指offer/32 - III. 从上到下打印二叉树 III.md)
    • [31. 栈的压入、弹出序列](剑指offer/31. 栈的压入、弹出序列.md)
    • [15. 二进制中1的个数](剑指offer/15. 二进制中1的个数.md)
    • [33. 二叉搜索树的后序遍历序列](剑指offer/33. 二叉搜索树的后序遍历序列.md)
    • [41. 数据流中的中位数](剑指offer/41. 数据流中的中位数.md)
    • 8.二叉树的下一个节点

About

Leetcode & 剑指offer 部分题解

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - PythonYXY/leetcode: Leetcode & 剑指offer 部分题解 · GitHub
Skip to content

Repository files navigation

Introduction

本书主要记录了一些我在刷leetcode过程中碰到的一些个人认为比较经典题目的思路和题解。

之前在刷leetcode的过程中,发现很多题目做过就忘掉了,再次碰到类似的甚至是相同的题目是依然感觉无从下手。其实这往往是因为对于题目没有理解,掌握透。因此在之后的刷题过程中,刻意放慢了脚步,每做完一道题,都去主动思考这种算法的时空复杂度是多少,是否还有更优的解法,能否做到举一反三等。

章节的编排形式参考了leetcode的题型分类,例如二叉树,字符串以及链表等。题目以middle难度居多,同时含有少量的easy题以及极少量的hard题。题目没有特定的顺序,纯粹按照了自己的做题顺序来编排。最后一章主要是《剑指offer》上的题目,其中有一部分题目是与之前章节重合的。

目前只有Java语言的实现,后续考虑会加入Javascript以及Go语言的实现。但是鉴于个人有限的精力和时间,也可能不会实施......

如果有任何问题和意见欢迎在Issue区提出。

Author

PythonYXY

Content

  • Introduction

  • 二分查找

    • [287. 寻找重复数](二分查找/287. 寻找重复数.md)
    • [154. 寻找旋转排序数组中的最小值 II](二分查找/154. 寻找旋转排序数组中的最小值 II.md)
    • [300. 最长上升子序列](二分查找/300. 最长上升子序列.md)
    • [69. X的平方根](二分查找/69. X的平方根.md)
    • [354. 俄罗斯套娃信封问题](二分查找/354. 俄罗斯套娃信封问题.md)
    • [153. 寻找旋转排序数组中的最小值](二分查找/153. 寻找旋转排序数组中的最小值.md)
  • 线性表

    • [560. 和为K的子数组](线性表/560. 和为K的子数组.md)
    • [15. 三数之和](线性表/15. 三数之和.md)
    • [523 连续子数组和](线性表/523 连续子数组和.md)
    • [215. 数组中的第K个最大元素](线性表/215. 数组中的第K个最大元素.md)
    • [209. 长度最小的子数组](线性表/209. 长度最小的子数组.md)
    • [4. 寻找两个有序数组的中位数](线性表/4. 寻找两个有序数组的中位数.md)
    • [41. 缺失的第一个正数](线性表/41. 缺失的第一个正数.md)
  • 链表

    • [430. 扁平化多级双向链表](链表/430. 扁平化多级双向链表.md)
    • [138. 复制带随机指针的链表](链表/138. 复制带随机指针的链表.md)
    • [142. 环形链表 II](链表/142. 环形链表 II.md)
    • [460. LFU缓存](链表/460. LFU缓存.md)
    • [86. 分隔链表](链表/86. 分隔链表.md)
    • [109. 有序链表转换二叉搜索树](链表/109. 有序链表转换二叉搜索树.md)
    • [206. 反转链表](链表/206. 反转链表.md)
    • [25. K 个一组翻转链表难度困难](链表/25. K 个一组翻转链表难度困难.md)
    • [92. 反转链表 II](链表/92. 反转链表 II.md)
    • [23. 合并K个排序链表](链表/23. 合并K个排序链表.md)
    • [143. 重排链表](链表/143. 重排链表.md)
  • 二叉树

    • [145. 二叉树的后序遍历](二叉树/145. 二叉树的后序遍历.md)
    • [307. 区域和检索 - 数组可修改](二叉树/307. 区域和检索 - 数组可修改.md)
    • [173. 二叉搜索树迭代器](二叉树/173. 二叉搜索树迭代器.md)
    • [230. 二叉搜索树中第K小的元素](二叉树/230. 二叉搜索树中第K小的元素.md)
    • [95. 不同的二叉搜索树 II](二叉树/95. 不同的二叉搜索树 II.md)
    • [110. 平衡二叉树](二叉树/110. 平衡二叉树.md)
    • [114. 二叉树展开为链表](二叉树/114. 二叉树展开为链表.md)
    • [99. 恢复二叉搜索树](二叉树/99. 恢复二叉搜索树.md)
    • [113. 路径总和 II](二叉树/113. 路径总和 II.md)
    • [96. 不同的二叉搜索树](二叉树/96. 不同的二叉搜索树.md)
    • [129. 求根到叶子节点数字之和](二叉树/129. 求根到叶子节点数字之和.md)
    • [144. 二叉树的前序遍历](二叉树/144. 二叉树的前序遍历.md)
    • [117. 填充每个节点的下一个右侧节点指针 II](二叉树/117. 填充每个节点的下一个右侧节点指针 II.md)
    • [236. 二叉树的最近公共祖先](二叉树/236. 二叉树的最近公共祖先.md)
  • 搜索

    • [240. 搜索二维矩阵 II](搜索/240. 搜索二维矩阵 II.md)
    • [127. 单词接龙](搜索/127. 单词接龙.md)
    • [130. 被围绕的区域](搜索/130. 被围绕的区域.md)
  • 字符串

    • [438. 找到字符串中所有字母异位词](字符串/438. 找到字符串中所有字母异位词.md)
    • [76. 最小覆盖子串](字符串/76. 最小覆盖子串.md)
    • [44. 通配符匹配](字符串/44. 通配符匹配.md)
    • [28. 实现 strStr](字符串/28. 实现 strStr.md)
    • [5. 最长回文子串](字符串/5. 最长回文子串.md)
    • [1143. 最长公共子序列](字符串/1143. 最长公共子序列.md)
    • [10. 正则表达式匹配](字符串/10. 正则表达式匹配.md)
    • [522. 最长特殊序列 II](字符串/522. 最长特殊序列 II.md)
    • [796. 旋转字符串](字符串/796. 旋转字符串.md)
    • [459. 重复的子字符串](字符串/459. 重复的子字符串.md)
    • [72. 编辑距离](字符串/72. 编辑距离.md)
    • [3. 无重复字符的最长子串](字符串/3. 无重复字符的最长子串.md)
  • 动态规划

    • [131. 分割回文串](动态规划/131. 分割回文串.md)
    • [97. 交错字符串](动态规划/97. 交错字符串.md)
    • [188. 买卖股票的最佳时机 IV](动态规划/188. 买卖股票的最佳时机 IV.md)
    • [122. 买卖股票的最佳时机 II](动态规划/122. 买卖股票的最佳时机 II.md)
    • [132. 分割回文串 II](动态规划/132. 分割回文串 II.md)
    • [152. 乘积最大子序列](动态规划/152. 乘积最大子序列.md)
    • [87. 扰乱字符串](动态规划/87. 扰乱字符串.md)
    • [714. 买卖股票的最佳时机含手续费](动态规划/714. 买卖股票的最佳时机含手续费.md)
    • [121. 买卖股票的最佳时机](动态规划/121. 买卖股票的最佳时机.md)
    • [85. 最大矩形](动态规划/85. 最大矩形.md)
    • [120. 三角形最小路径和](动态规划/120. 三角形最小路径和.md)
    • [174. 地下城游戏](动态规划/174. 地下城游戏.md)
    • [140. 单词拆分 II](动态规划/140. 单词拆分 II.md)
    • [123. 买卖股票的最佳时机 III](动态规划/123. 买卖股票的最佳时机 III.md)
    • [940. 不同的子序列 II](动态规划/940. 不同的子序列 II.md)
    • [139. 单词拆分](动态规划/139. 单词拆分.md)
    • [309. 最佳买卖股票时机含冷冻期](动态规划/309. 最佳买卖股票时机含冷冻期.md)
    • [91. 解码方法](动态规划/91. 解码方法.md)
    • [115. 不同的子序列](动态规划/115. 不同的子序列.md)
    • [337. 打家劫舍 III](动态规划/337. 打家劫舍 III.md)
  • 数论

    • [264. 丑数 II](数论/264. 丑数 II.md)
    • [347. 前 K 个高频元素](数论/347. 前 K 个高频元素.md)
    • [355. 设计推特](数论/355. 设计推特.md)
    • [166. 分数到小数](数论/166. 分数到小数.md)
    • [373. 查找和最小的K对数字](数论/373. 查找和最小的K对数字.md)
    • [202. 快乐数](数论/202. 快乐数.md)
    • [172. 阶乘后的零](数论/172. 阶乘后的零.md)
    • [313. 超级丑数](数论/313. 超级丑数.md)
    • [292. Nim 游戏](数论/292. Nim 游戏.md)
  • 位运算

    • [89. 格雷编码](位运算/89. 格雷编码.md)
    • [201. 数字范围按位与](位运算/201. 数字范围按位与.md)
    • [52. N皇后 II](位运算/52. N皇后 II.md)
    • [51. N皇后](位运算/51. N皇后.md)
    • [1275. 找出井字棋的获胜者](位运算/1275. 找出井字棋的获胜者.md)
    • [137. 只出现一次的数字 II](位运算/137. 只出现一次的数字 II.md)
    • [187. 重复的DNA序列](位运算/187. 重复的DNA序列.md)
    • [136. 只出现一次的数字](位运算/136. 只出现一次的数字.md)
  • 剑指offer
    • [46. 把数字翻译成字符串](剑指offer/46. 把数字翻译成字符串.md)
    • [28. 对称的二叉树](剑指offer/28. 对称的二叉树.md)
    • 4.二维数组中的查找
    • [L191. 位1的个数](剑指offer/L191. 位1的个数.md)
    • [43. 1~n整数中1出现的次数](剑指offer/43. 1~n整数中1出现的次数.md)
    • [L153. 寻找旋转排序数组中的最小值](剑指offer/L153. 寻找旋转排序数组中的最小值.md)
    • [29. 顺时针打印矩阵](剑指offer/29. 顺时针打印矩阵.md)
    • [45. 把数组排成最小的数](剑指offer/45. 把数组排成最小的数.md)
    • [36. 二叉搜索树与双向链表](剑指offer/36. 二叉搜索树与双向链表.md)
    • [48. 最长不含重复字符的子字符串](剑指offer/48. 最长不含重复字符的子字符串.md)
    • 24.反转链表
    • [35. 复杂链表的复制](剑指offer/35. 复杂链表的复制.md)
    • [30. 包含min函数的栈](剑指offer/30. 包含min函数的栈.md)
    • [26. 树的子结构](剑指offer/26. 树的子结构.md)
    • [32 - II. 从上到下打印二叉树 II](剑指offer/32 - II. 从上到下打印二叉树 II.md)
    • [22. 链表中倒数第k个节点](剑指offer/22. 链表中倒数第k个节点.md)
    • [49. 丑数](剑指offer/49. 丑数.md)
    • [19. 正则表达式匹配](剑指offer/19. 正则表达式匹配.md)
    • [39. 数组中出现次数超过一半的数字](剑指offer/39. 数组中出现次数超过一半的数字.md)
    • 20.表示数值的字符串
    • [14. 剪梯子](剑指offer/14. 剪梯子.md)
    • [L154. 寻找旋转排序数组中的最小值 II](剑指offer/L154. 寻找旋转排序数组中的最小值 II.md)
    • [9. 用两个栈实现队列](剑指offer/9. 用两个栈实现队列.md)
    • [44. 数字序列中某一位的数字](剑指offer/44. 数字序列中某一位的数字.md)
    • [40. 最小的k个数](剑指offer/40. 最小的k个数.md)
    • [3. 数组中的重复数字](剑指offer/3. 数组中的重复数字.md)
    • [L287. 寻找重复数](剑指offer/L287. 寻找重复数.md)
    • [32 - III. 从上到下打印二叉树 III](剑指offer/32 - III. 从上到下打印二叉树 III.md)
    • [31. 栈的压入、弹出序列](剑指offer/31. 栈的压入、弹出序列.md)
    • [15. 二进制中1的个数](剑指offer/15. 二进制中1的个数.md)
    • [33. 二叉搜索树的后序遍历序列](剑指offer/33. 二叉搜索树的后序遍历序列.md)
    • [41. 数据流中的中位数](剑指offer/41. 数据流中的中位数.md)
    • 8.二叉树的下一个节点

About

Leetcode & 剑指offer 部分题解

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - PythonYXY/leetcode: Leetcode & 剑指offer 部分题解 · GitHub
Skip to content

Repository files navigation

Introduction

本书主要记录了一些我在刷leetcode过程中碰到的一些个人认为比较经典题目的思路和题解。

之前在刷leetcode的过程中,发现很多题目做过就忘掉了,再次碰到类似的甚至是相同的题目是依然感觉无从下手。其实这往往是因为对于题目没有理解,掌握透。因此在之后的刷题过程中,刻意放慢了脚步,每做完一道题,都去主动思考这种算法的时空复杂度是多少,是否还有更优的解法,能否做到举一反三等。

章节的编排形式参考了leetcode的题型分类,例如二叉树,字符串以及链表等。题目以middle难度居多,同时含有少量的easy题以及极少量的hard题。题目没有特定的顺序,纯粹按照了自己的做题顺序来编排。最后一章主要是《剑指offer》上的题目,其中有一部分题目是与之前章节重合的。

目前只有Java语言的实现,后续考虑会加入Javascript以及Go语言的实现。但是鉴于个人有限的精力和时间,也可能不会实施......

如果有任何问题和意见欢迎在Issue区提出。

Author

PythonYXY

Content

  • Introduction

  • 二分查找

    • [287. 寻找重复数](二分查找/287. 寻找重复数.md)
    • [154. 寻找旋转排序数组中的最小值 II](二分查找/154. 寻找旋转排序数组中的最小值 II.md)
    • [300. 最长上升子序列](二分查找/300. 最长上升子序列.md)
    • [69. X的平方根](二分查找/69. X的平方根.md)
    • [354. 俄罗斯套娃信封问题](二分查找/354. 俄罗斯套娃信封问题.md)
    • [153. 寻找旋转排序数组中的最小值](二分查找/153. 寻找旋转排序数组中的最小值.md)
  • 线性表

    • [560. 和为K的子数组](线性表/560. 和为K的子数组.md)
    • [15. 三数之和](线性表/15. 三数之和.md)
    • [523 连续子数组和](线性表/523 连续子数组和.md)
    • [215. 数组中的第K个最大元素](线性表/215. 数组中的第K个最大元素.md)
    • [209. 长度最小的子数组](线性表/209. 长度最小的子数组.md)
    • [4. 寻找两个有序数组的中位数](线性表/4. 寻找两个有序数组的中位数.md)
    • [41. 缺失的第一个正数](线性表/41. 缺失的第一个正数.md)
  • 链表

    • [430. 扁平化多级双向链表](链表/430. 扁平化多级双向链表.md)
    • [138. 复制带随机指针的链表](链表/138. 复制带随机指针的链表.md)
    • [142. 环形链表 II](链表/142. 环形链表 II.md)
    • [460. LFU缓存](链表/460. LFU缓存.md)
    • [86. 分隔链表](链表/86. 分隔链表.md)
    • [109. 有序链表转换二叉搜索树](链表/109. 有序链表转换二叉搜索树.md)
    • [206. 反转链表](链表/206. 反转链表.md)
    • [25. K 个一组翻转链表难度困难](链表/25. K 个一组翻转链表难度困难.md)
    • [92. 反转链表 II](链表/92. 反转链表 II.md)
    • [23. 合并K个排序链表](链表/23. 合并K个排序链表.md)
    • [143. 重排链表](链表/143. 重排链表.md)
  • 二叉树

    • [145. 二叉树的后序遍历](二叉树/145. 二叉树的后序遍历.md)
    • [307. 区域和检索 - 数组可修改](二叉树/307. 区域和检索 - 数组可修改.md)
    • [173. 二叉搜索树迭代器](二叉树/173. 二叉搜索树迭代器.md)
    • [230. 二叉搜索树中第K小的元素](二叉树/230. 二叉搜索树中第K小的元素.md)
    • [95. 不同的二叉搜索树 II](二叉树/95. 不同的二叉搜索树 II.md)
    • [110. 平衡二叉树](二叉树/110. 平衡二叉树.md)
    • [114. 二叉树展开为链表](二叉树/114. 二叉树展开为链表.md)
    • [99. 恢复二叉搜索树](二叉树/99. 恢复二叉搜索树.md)
    • [113. 路径总和 II](二叉树/113. 路径总和 II.md)
    • [96. 不同的二叉搜索树](二叉树/96. 不同的二叉搜索树.md)
    • [129. 求根到叶子节点数字之和](二叉树/129. 求根到叶子节点数字之和.md)
    • [144. 二叉树的前序遍历](二叉树/144. 二叉树的前序遍历.md)
    • [117. 填充每个节点的下一个右侧节点指针 II](二叉树/117. 填充每个节点的下一个右侧节点指针 II.md)
    • [236. 二叉树的最近公共祖先](二叉树/236. 二叉树的最近公共祖先.md)
  • 搜索

    • [240. 搜索二维矩阵 II](搜索/240. 搜索二维矩阵 II.md)
    • [127. 单词接龙](搜索/127. 单词接龙.md)
    • [130. 被围绕的区域](搜索/130. 被围绕的区域.md)
  • 字符串

    • [438. 找到字符串中所有字母异位词](字符串/438. 找到字符串中所有字母异位词.md)
    • [76. 最小覆盖子串](字符串/76. 最小覆盖子串.md)
    • [44. 通配符匹配](字符串/44. 通配符匹配.md)
    • [28. 实现 strStr](字符串/28. 实现 strStr.md)
    • [5. 最长回文子串](字符串/5. 最长回文子串.md)
    • [1143. 最长公共子序列](字符串/1143. 最长公共子序列.md)
    • [10. 正则表达式匹配](字符串/10. 正则表达式匹配.md)
    • [522. 最长特殊序列 II](字符串/522. 最长特殊序列 II.md)
    • [796. 旋转字符串](字符串/796. 旋转字符串.md)
    • [459. 重复的子字符串](字符串/459. 重复的子字符串.md)
    • [72. 编辑距离](字符串/72. 编辑距离.md)
    • [3. 无重复字符的最长子串](字符串/3. 无重复字符的最长子串.md)
  • 动态规划

    • [131. 分割回文串](动态规划/131. 分割回文串.md)
    • [97. 交错字符串](动态规划/97. 交错字符串.md)
    • [188. 买卖股票的最佳时机 IV](动态规划/188. 买卖股票的最佳时机 IV.md)
    • [122. 买卖股票的最佳时机 II](动态规划/122. 买卖股票的最佳时机 II.md)
    • [132. 分割回文串 II](动态规划/132. 分割回文串 II.md)
    • [152. 乘积最大子序列](动态规划/152. 乘积最大子序列.md)
    • [87. 扰乱字符串](动态规划/87. 扰乱字符串.md)
    • [714. 买卖股票的最佳时机含手续费](动态规划/714. 买卖股票的最佳时机含手续费.md)
    • [121. 买卖股票的最佳时机](动态规划/121. 买卖股票的最佳时机.md)
    • [85. 最大矩形](动态规划/85. 最大矩形.md)
    • [120. 三角形最小路径和](动态规划/120. 三角形最小路径和.md)
    • [174. 地下城游戏](动态规划/174. 地下城游戏.md)
    • [140. 单词拆分 II](动态规划/140. 单词拆分 II.md)
    • [123. 买卖股票的最佳时机 III](动态规划/123. 买卖股票的最佳时机 III.md)
    • [940. 不同的子序列 II](动态规划/940. 不同的子序列 II.md)
    • [139. 单词拆分](动态规划/139. 单词拆分.md)
    • [309. 最佳买卖股票时机含冷冻期](动态规划/309. 最佳买卖股票时机含冷冻期.md)
    • [91. 解码方法](动态规划/91. 解码方法.md)
    • [115. 不同的子序列](动态规划/115. 不同的子序列.md)
    • [337. 打家劫舍 III](动态规划/337. 打家劫舍 III.md)
  • 数论

    • [264. 丑数 II](数论/264. 丑数 II.md)
    • [347. 前 K 个高频元素](数论/347. 前 K 个高频元素.md)
    • [355. 设计推特](数论/355. 设计推特.md)
    • [166. 分数到小数](数论/166. 分数到小数.md)
    • [373. 查找和最小的K对数字](数论/373. 查找和最小的K对数字.md)
    • [202. 快乐数](数论/202. 快乐数.md)
    • [172. 阶乘后的零](数论/172. 阶乘后的零.md)
    • [313. 超级丑数](数论/313. 超级丑数.md)
    • [292. Nim 游戏](数论/292. Nim 游戏.md)
  • 位运算

    • [89. 格雷编码](位运算/89. 格雷编码.md)
    • [201. 数字范围按位与](位运算/201. 数字范围按位与.md)
    • [52. N皇后 II](位运算/52. N皇后 II.md)
    • [51. N皇后](位运算/51. N皇后.md)
    • [1275. 找出井字棋的获胜者](位运算/1275. 找出井字棋的获胜者.md)
    • [137. 只出现一次的数字 II](位运算/137. 只出现一次的数字 II.md)
    • [187. 重复的DNA序列](位运算/187. 重复的DNA序列.md)
    • [136. 只出现一次的数字](位运算/136. 只出现一次的数字.md)
  • 剑指offer
    • [46. 把数字翻译成字符串](剑指offer/46. 把数字翻译成字符串.md)
    • [28. 对称的二叉树](剑指offer/28. 对称的二叉树.md)
    • 4.二维数组中的查找
    • [L191. 位1的个数](剑指offer/L191. 位1的个数.md)
    • [43. 1~n整数中1出现的次数](剑指offer/43. 1~n整数中1出现的次数.md)
    • [L153. 寻找旋转排序数组中的最小值](剑指offer/L153. 寻找旋转排序数组中的最小值.md)
    • [29. 顺时针打印矩阵](剑指offer/29. 顺时针打印矩阵.md)
    • [45. 把数组排成最小的数](剑指offer/45. 把数组排成最小的数.md)
    • [36. 二叉搜索树与双向链表](剑指offer/36. 二叉搜索树与双向链表.md)
    • [48. 最长不含重复字符的子字符串](剑指offer/48. 最长不含重复字符的子字符串.md)
    • 24.反转链表
    • [35. 复杂链表的复制](剑指offer/35. 复杂链表的复制.md)
    • [30. 包含min函数的栈](剑指offer/30. 包含min函数的栈.md)
    • [26. 树的子结构](剑指offer/26. 树的子结构.md)
    • [32 - II. 从上到下打印二叉树 II](剑指offer/32 - II. 从上到下打印二叉树 II.md)
    • [22. 链表中倒数第k个节点](剑指offer/22. 链表中倒数第k个节点.md)
    • [49. 丑数](剑指offer/49. 丑数.md)
    • [19. 正则表达式匹配](剑指offer/19. 正则表达式匹配.md)
    • [39. 数组中出现次数超过一半的数字](剑指offer/39. 数组中出现次数超过一半的数字.md)
    • 20.表示数值的字符串
    • [14. 剪梯子](剑指offer/14. 剪梯子.md)
    • [L154. 寻找旋转排序数组中的最小值 II](剑指offer/L154. 寻找旋转排序数组中的最小值 II.md)
    • [9. 用两个栈实现队列](剑指offer/9. 用两个栈实现队列.md)
    • [44. 数字序列中某一位的数字](剑指offer/44. 数字序列中某一位的数字.md)
    • [40. 最小的k个数](剑指offer/40. 最小的k个数.md)
    • [3. 数组中的重复数字](剑指offer/3. 数组中的重复数字.md)
    • [L287. 寻找重复数](剑指offer/L287. 寻找重复数.md)
    • [32 - III. 从上到下打印二叉树 III](剑指offer/32 - III. 从上到下打印二叉树 III.md)
    • [31. 栈的压入、弹出序列](剑指offer/31. 栈的压入、弹出序列.md)
    • [15. 二进制中1的个数](剑指offer/15. 二进制中1的个数.md)
    • [33. 二叉搜索树的后序遍历序列](剑指offer/33. 二叉搜索树的后序遍历序列.md)
    • [41. 数据流中的中位数](剑指offer/41. 数据流中的中位数.md)
    • 8.二叉树的下一个节点

About

Leetcode & 剑指offer 部分题解

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - PythonYXY/leetcode: Leetcode & 剑指offer 部分题解 · GitHub
Skip to content

Repository files navigation

Introduction

本书主要记录了一些我在刷leetcode过程中碰到的一些个人认为比较经典题目的思路和题解。

之前在刷leetcode的过程中,发现很多题目做过就忘掉了,再次碰到类似的甚至是相同的题目是依然感觉无从下手。其实这往往是因为对于题目没有理解,掌握透。因此在之后的刷题过程中,刻意放慢了脚步,每做完一道题,都去主动思考这种算法的时空复杂度是多少,是否还有更优的解法,能否做到举一反三等。

章节的编排形式参考了leetcode的题型分类,例如二叉树,字符串以及链表等。题目以middle难度居多,同时含有少量的easy题以及极少量的hard题。题目没有特定的顺序,纯粹按照了自己的做题顺序来编排。最后一章主要是《剑指offer》上的题目,其中有一部分题目是与之前章节重合的。

目前只有Java语言的实现,后续考虑会加入Javascript以及Go语言的实现。但是鉴于个人有限的精力和时间,也可能不会实施......

如果有任何问题和意见欢迎在Issue区提出。

Author

PythonYXY

Content

  • Introduction

  • 二分查找

    • [287. 寻找重复数](二分查找/287. 寻找重复数.md)
    • [154. 寻找旋转排序数组中的最小值 II](二分查找/154. 寻找旋转排序数组中的最小值 II.md)
    • [300. 最长上升子序列](二分查找/300. 最长上升子序列.md)
    • [69. X的平方根](二分查找/69. X的平方根.md)
    • [354. 俄罗斯套娃信封问题](二分查找/354. 俄罗斯套娃信封问题.md)
    • [153. 寻找旋转排序数组中的最小值](二分查找/153. 寻找旋转排序数组中的最小值.md)
  • 线性表

    • [560. 和为K的子数组](线性表/560. 和为K的子数组.md)
    • [15. 三数之和](线性表/15. 三数之和.md)
    • [523 连续子数组和](线性表/523 连续子数组和.md)
    • [215. 数组中的第K个最大元素](线性表/215. 数组中的第K个最大元素.md)
    • [209. 长度最小的子数组](线性表/209. 长度最小的子数组.md)
    • [4. 寻找两个有序数组的中位数](线性表/4. 寻找两个有序数组的中位数.md)
    • [41. 缺失的第一个正数](线性表/41. 缺失的第一个正数.md)
  • 链表

    • [430. 扁平化多级双向链表](链表/430. 扁平化多级双向链表.md)
    • [138. 复制带随机指针的链表](链表/138. 复制带随机指针的链表.md)
    • [142. 环形链表 II](链表/142. 环形链表 II.md)
    • [460. LFU缓存](链表/460. LFU缓存.md)
    • [86. 分隔链表](链表/86. 分隔链表.md)
    • [109. 有序链表转换二叉搜索树](链表/109. 有序链表转换二叉搜索树.md)
    • [206. 反转链表](链表/206. 反转链表.md)
    • [25. K 个一组翻转链表难度困难](链表/25. K 个一组翻转链表难度困难.md)
    • [92. 反转链表 II](链表/92. 反转链表 II.md)
    • [23. 合并K个排序链表](链表/23. 合并K个排序链表.md)
    • [143. 重排链表](链表/143. 重排链表.md)
  • 二叉树

    • [145. 二叉树的后序遍历](二叉树/145. 二叉树的后序遍历.md)
    • [307. 区域和检索 - 数组可修改](二叉树/307. 区域和检索 - 数组可修改.md)
    • [173. 二叉搜索树迭代器](二叉树/173. 二叉搜索树迭代器.md)
    • [230. 二叉搜索树中第K小的元素](二叉树/230. 二叉搜索树中第K小的元素.md)
    • [95. 不同的二叉搜索树 II](二叉树/95. 不同的二叉搜索树 II.md)
    • [110. 平衡二叉树](二叉树/110. 平衡二叉树.md)
    • [114. 二叉树展开为链表](二叉树/114. 二叉树展开为链表.md)
    • [99. 恢复二叉搜索树](二叉树/99. 恢复二叉搜索树.md)
    • [113. 路径总和 II](二叉树/113. 路径总和 II.md)
    • [96. 不同的二叉搜索树](二叉树/96. 不同的二叉搜索树.md)
    • [129. 求根到叶子节点数字之和](二叉树/129. 求根到叶子节点数字之和.md)
    • [144. 二叉树的前序遍历](二叉树/144. 二叉树的前序遍历.md)
    • [117. 填充每个节点的下一个右侧节点指针 II](二叉树/117. 填充每个节点的下一个右侧节点指针 II.md)
    • [236. 二叉树的最近公共祖先](二叉树/236. 二叉树的最近公共祖先.md)
  • 搜索

    • [240. 搜索二维矩阵 II](搜索/240. 搜索二维矩阵 II.md)
    • [127. 单词接龙](搜索/127. 单词接龙.md)
    • [130. 被围绕的区域](搜索/130. 被围绕的区域.md)
  • 字符串

    • [438. 找到字符串中所有字母异位词](字符串/438. 找到字符串中所有字母异位词.md)
    • [76. 最小覆盖子串](字符串/76. 最小覆盖子串.md)
    • [44. 通配符匹配](字符串/44. 通配符匹配.md)
    • [28. 实现 strStr](字符串/28. 实现 strStr.md)
    • [5. 最长回文子串](字符串/5. 最长回文子串.md)
    • [1143. 最长公共子序列](字符串/1143. 最长公共子序列.md)
    • [10. 正则表达式匹配](字符串/10. 正则表达式匹配.md)
    • [522. 最长特殊序列 II](字符串/522. 最长特殊序列 II.md)
    • [796. 旋转字符串](字符串/796. 旋转字符串.md)
    • [459. 重复的子字符串](字符串/459. 重复的子字符串.md)
    • [72. 编辑距离](字符串/72. 编辑距离.md)
    • [3. 无重复字符的最长子串](字符串/3. 无重复字符的最长子串.md)
  • 动态规划

    • [131. 分割回文串](动态规划/131. 分割回文串.md)
    • [97. 交错字符串](动态规划/97. 交错字符串.md)
    • [188. 买卖股票的最佳时机 IV](动态规划/188. 买卖股票的最佳时机 IV.md)
    • [122. 买卖股票的最佳时机 II](动态规划/122. 买卖股票的最佳时机 II.md)
    • [132. 分割回文串 II](动态规划/132. 分割回文串 II.md)
    • [152. 乘积最大子序列](动态规划/152. 乘积最大子序列.md)
    • [87. 扰乱字符串](动态规划/87. 扰乱字符串.md)
    • [714. 买卖股票的最佳时机含手续费](动态规划/714. 买卖股票的最佳时机含手续费.md)
    • [121. 买卖股票的最佳时机](动态规划/121. 买卖股票的最佳时机.md)
    • [85. 最大矩形](动态规划/85. 最大矩形.md)
    • [120. 三角形最小路径和](动态规划/120. 三角形最小路径和.md)
    • [174. 地下城游戏](动态规划/174. 地下城游戏.md)
    • [140. 单词拆分 II](动态规划/140. 单词拆分 II.md)
    • [123. 买卖股票的最佳时机 III](动态规划/123. 买卖股票的最佳时机 III.md)
    • [940. 不同的子序列 II](动态规划/940. 不同的子序列 II.md)
    • [139. 单词拆分](动态规划/139. 单词拆分.md)
    • [309. 最佳买卖股票时机含冷冻期](动态规划/309. 最佳买卖股票时机含冷冻期.md)
    • [91. 解码方法](动态规划/91. 解码方法.md)
    • [115. 不同的子序列](动态规划/115. 不同的子序列.md)
    • [337. 打家劫舍 III](动态规划/337. 打家劫舍 III.md)
  • 数论

    • [264. 丑数 II](数论/264. 丑数 II.md)
    • [347. 前 K 个高频元素](数论/347. 前 K 个高频元素.md)
    • [355. 设计推特](数论/355. 设计推特.md)
    • [166. 分数到小数](数论/166. 分数到小数.md)
    • [373. 查找和最小的K对数字](数论/373. 查找和最小的K对数字.md)
    • [202. 快乐数](数论/202. 快乐数.md)
    • [172. 阶乘后的零](数论/172. 阶乘后的零.md)
    • [313. 超级丑数](数论/313. 超级丑数.md)
    • [292. Nim 游戏](数论/292. Nim 游戏.md)
  • 位运算

    • [89. 格雷编码](位运算/89. 格雷编码.md)
    • [201. 数字范围按位与](位运算/201. 数字范围按位与.md)
    • [52. N皇后 II](位运算/52. N皇后 II.md)
    • [51. N皇后](位运算/51. N皇后.md)
    • [1275. 找出井字棋的获胜者](位运算/1275. 找出井字棋的获胜者.md)
    • [137. 只出现一次的数字 II](位运算/137. 只出现一次的数字 II.md)
    • [187. 重复的DNA序列](位运算/187. 重复的DNA序列.md)
    • [136. 只出现一次的数字](位运算/136. 只出现一次的数字.md)
  • 剑指offer
    • [46. 把数字翻译成字符串](剑指offer/46. 把数字翻译成字符串.md)
    • [28. 对称的二叉树](剑指offer/28. 对称的二叉树.md)
    • 4.二维数组中的查找
    • [L191. 位1的个数](剑指offer/L191. 位1的个数.md)
    • [43. 1~n整数中1出现的次数](剑指offer/43. 1~n整数中1出现的次数.md)
    • [L153. 寻找旋转排序数组中的最小值](剑指offer/L153. 寻找旋转排序数组中的最小值.md)
    • [29. 顺时针打印矩阵](剑指offer/29. 顺时针打印矩阵.md)
    • [45. 把数组排成最小的数](剑指offer/45. 把数组排成最小的数.md)
    • [36. 二叉搜索树与双向链表](剑指offer/36. 二叉搜索树与双向链表.md)
    • [48. 最长不含重复字符的子字符串](剑指offer/48. 最长不含重复字符的子字符串.md)
    • 24.反转链表
    • [35. 复杂链表的复制](剑指offer/35. 复杂链表的复制.md)
    • [30. 包含min函数的栈](剑指offer/30. 包含min函数的栈.md)
    • [26. 树的子结构](剑指offer/26. 树的子结构.md)
    • [32 - II. 从上到下打印二叉树 II](剑指offer/32 - II. 从上到下打印二叉树 II.md)
    • [22. 链表中倒数第k个节点](剑指offer/22. 链表中倒数第k个节点.md)
    • [49. 丑数](剑指offer/49. 丑数.md)
    • [19. 正则表达式匹配](剑指offer/19. 正则表达式匹配.md)
    • [39. 数组中出现次数超过一半的数字](剑指offer/39. 数组中出现次数超过一半的数字.md)
    • 20.表示数值的字符串
    • [14. 剪梯子](剑指offer/14. 剪梯子.md)
    • [L154. 寻找旋转排序数组中的最小值 II](剑指offer/L154. 寻找旋转排序数组中的最小值 II.md)
    • [9. 用两个栈实现队列](剑指offer/9. 用两个栈实现队列.md)
    • [44. 数字序列中某一位的数字](剑指offer/44. 数字序列中某一位的数字.md)
    • [40. 最小的k个数](剑指offer/40. 最小的k个数.md)
    • [3. 数组中的重复数字](剑指offer/3. 数组中的重复数字.md)
    • [L287. 寻找重复数](剑指offer/L287. 寻找重复数.md)
    • [32 - III. 从上到下打印二叉树 III](剑指offer/32 - III. 从上到下打印二叉树 III.md)
    • [31. 栈的压入、弹出序列](剑指offer/31. 栈的压入、弹出序列.md)
    • [15. 二进制中1的个数](剑指offer/15. 二进制中1的个数.md)
    • [33. 二叉搜索树的后序遍历序列](剑指offer/33. 二叉搜索树的后序遍历序列.md)
    • [41. 数据流中的中位数](剑指offer/41. 数据流中的中位数.md)
    • 8.二叉树的下一个节点

About

Leetcode & 剑指offer 部分题解

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - PythonYXY/leetcode: Leetcode & 剑指offer 部分题解 · GitHub
Skip to content

Repository files navigation

Introduction

本书主要记录了一些我在刷leetcode过程中碰到的一些个人认为比较经典题目的思路和题解。

之前在刷leetcode的过程中,发现很多题目做过就忘掉了,再次碰到类似的甚至是相同的题目是依然感觉无从下手。其实这往往是因为对于题目没有理解,掌握透。因此在之后的刷题过程中,刻意放慢了脚步,每做完一道题,都去主动思考这种算法的时空复杂度是多少,是否还有更优的解法,能否做到举一反三等。

章节的编排形式参考了leetcode的题型分类,例如二叉树,字符串以及链表等。题目以middle难度居多,同时含有少量的easy题以及极少量的hard题。题目没有特定的顺序,纯粹按照了自己的做题顺序来编排。最后一章主要是《剑指offer》上的题目,其中有一部分题目是与之前章节重合的。

目前只有Java语言的实现,后续考虑会加入Javascript以及Go语言的实现。但是鉴于个人有限的精力和时间,也可能不会实施......

如果有任何问题和意见欢迎在Issue区提出。

Author

PythonYXY

Content

  • Introduction

  • 二分查找

    • [287. 寻找重复数](二分查找/287. 寻找重复数.md)
    • [154. 寻找旋转排序数组中的最小值 II](二分查找/154. 寻找旋转排序数组中的最小值 II.md)
    • [300. 最长上升子序列](二分查找/300. 最长上升子序列.md)
    • [69. X的平方根](二分查找/69. X的平方根.md)
    • [354. 俄罗斯套娃信封问题](二分查找/354. 俄罗斯套娃信封问题.md)
    • [153. 寻找旋转排序数组中的最小值](二分查找/153. 寻找旋转排序数组中的最小值.md)
  • 线性表

    • [560. 和为K的子数组](线性表/560. 和为K的子数组.md)
    • [15. 三数之和](线性表/15. 三数之和.md)
    • [523 连续子数组和](线性表/523 连续子数组和.md)
    • [215. 数组中的第K个最大元素](线性表/215. 数组中的第K个最大元素.md)
    • [209. 长度最小的子数组](线性表/209. 长度最小的子数组.md)
    • [4. 寻找两个有序数组的中位数](线性表/4. 寻找两个有序数组的中位数.md)
    • [41. 缺失的第一个正数](线性表/41. 缺失的第一个正数.md)
  • 链表

    • [430. 扁平化多级双向链表](链表/430. 扁平化多级双向链表.md)
    • [138. 复制带随机指针的链表](链表/138. 复制带随机指针的链表.md)
    • [142. 环形链表 II](链表/142. 环形链表 II.md)
    • [460. LFU缓存](链表/460. LFU缓存.md)
    • [86. 分隔链表](链表/86. 分隔链表.md)
    • [109. 有序链表转换二叉搜索树](链表/109. 有序链表转换二叉搜索树.md)
    • [206. 反转链表](链表/206. 反转链表.md)
    • [25. K 个一组翻转链表难度困难](链表/25. K 个一组翻转链表难度困难.md)
    • [92. 反转链表 II](链表/92. 反转链表 II.md)
    • [23. 合并K个排序链表](链表/23. 合并K个排序链表.md)
    • [143. 重排链表](链表/143. 重排链表.md)
  • 二叉树

    • [145. 二叉树的后序遍历](二叉树/145. 二叉树的后序遍历.md)
    • [307. 区域和检索 - 数组可修改](二叉树/307. 区域和检索 - 数组可修改.md)
    • [173. 二叉搜索树迭代器](二叉树/173. 二叉搜索树迭代器.md)
    • [230. 二叉搜索树中第K小的元素](二叉树/230. 二叉搜索树中第K小的元素.md)
    • [95. 不同的二叉搜索树 II](二叉树/95. 不同的二叉搜索树 II.md)
    • [110. 平衡二叉树](二叉树/110. 平衡二叉树.md)
    • [114. 二叉树展开为链表](二叉树/114. 二叉树展开为链表.md)
    • [99. 恢复二叉搜索树](二叉树/99. 恢复二叉搜索树.md)
    • [113. 路径总和 II](二叉树/113. 路径总和 II.md)
    • [96. 不同的二叉搜索树](二叉树/96. 不同的二叉搜索树.md)
    • [129. 求根到叶子节点数字之和](二叉树/129. 求根到叶子节点数字之和.md)
    • [144. 二叉树的前序遍历](二叉树/144. 二叉树的前序遍历.md)
    • [117. 填充每个节点的下一个右侧节点指针 II](二叉树/117. 填充每个节点的下一个右侧节点指针 II.md)
    • [236. 二叉树的最近公共祖先](二叉树/236. 二叉树的最近公共祖先.md)
  • 搜索

    • [240. 搜索二维矩阵 II](搜索/240. 搜索二维矩阵 II.md)
    • [127. 单词接龙](搜索/127. 单词接龙.md)
    • [130. 被围绕的区域](搜索/130. 被围绕的区域.md)
  • 字符串

    • [438. 找到字符串中所有字母异位词](字符串/438. 找到字符串中所有字母异位词.md)
    • [76. 最小覆盖子串](字符串/76. 最小覆盖子串.md)
    • [44. 通配符匹配](字符串/44. 通配符匹配.md)
    • [28. 实现 strStr](字符串/28. 实现 strStr.md)
    • [5. 最长回文子串](字符串/5. 最长回文子串.md)
    • [1143. 最长公共子序列](字符串/1143. 最长公共子序列.md)
    • [10. 正则表达式匹配](字符串/10. 正则表达式匹配.md)
    • [522. 最长特殊序列 II](字符串/522. 最长特殊序列 II.md)
    • [796. 旋转字符串](字符串/796. 旋转字符串.md)
    • [459. 重复的子字符串](字符串/459. 重复的子字符串.md)
    • [72. 编辑距离](字符串/72. 编辑距离.md)
    • [3. 无重复字符的最长子串](字符串/3. 无重复字符的最长子串.md)
  • 动态规划

    • [131. 分割回文串](动态规划/131. 分割回文串.md)
    • [97. 交错字符串](动态规划/97. 交错字符串.md)
    • [188. 买卖股票的最佳时机 IV](动态规划/188. 买卖股票的最佳时机 IV.md)
    • [122. 买卖股票的最佳时机 II](动态规划/122. 买卖股票的最佳时机 II.md)
    • [132. 分割回文串 II](动态规划/132. 分割回文串 II.md)
    • [152. 乘积最大子序列](动态规划/152. 乘积最大子序列.md)
    • [87. 扰乱字符串](动态规划/87. 扰乱字符串.md)
    • [714. 买卖股票的最佳时机含手续费](动态规划/714. 买卖股票的最佳时机含手续费.md)
    • [121. 买卖股票的最佳时机](动态规划/121. 买卖股票的最佳时机.md)
    • [85. 最大矩形](动态规划/85. 最大矩形.md)
    • [120. 三角形最小路径和](动态规划/120. 三角形最小路径和.md)
    • [174. 地下城游戏](动态规划/174. 地下城游戏.md)
    • [140. 单词拆分 II](动态规划/140. 单词拆分 II.md)
    • [123. 买卖股票的最佳时机 III](动态规划/123. 买卖股票的最佳时机 III.md)
    • [940. 不同的子序列 II](动态规划/940. 不同的子序列 II.md)
    • [139. 单词拆分](动态规划/139. 单词拆分.md)
    • [309. 最佳买卖股票时机含冷冻期](动态规划/309. 最佳买卖股票时机含冷冻期.md)
    • [91. 解码方法](动态规划/91. 解码方法.md)
    • [115. 不同的子序列](动态规划/115. 不同的子序列.md)
    • [337. 打家劫舍 III](动态规划/337. 打家劫舍 III.md)
  • 数论

    • [264. 丑数 II](数论/264. 丑数 II.md)
    • [347. 前 K 个高频元素](数论/347. 前 K 个高频元素.md)
    • [355. 设计推特](数论/355. 设计推特.md)
    • [166. 分数到小数](数论/166. 分数到小数.md)
    • [373. 查找和最小的K对数字](数论/373. 查找和最小的K对数字.md)
    • [202. 快乐数](数论/202. 快乐数.md)
    • [172. 阶乘后的零](数论/172. 阶乘后的零.md)
    • [313. 超级丑数](数论/313. 超级丑数.md)
    • [292. Nim 游戏](数论/292. Nim 游戏.md)
  • 位运算

    • [89. 格雷编码](位运算/89. 格雷编码.md)
    • [201. 数字范围按位与](位运算/201. 数字范围按位与.md)
    • [52. N皇后 II](位运算/52. N皇后 II.md)
    • [51. N皇后](位运算/51. N皇后.md)
    • [1275. 找出井字棋的获胜者](位运算/1275. 找出井字棋的获胜者.md)
    • [137. 只出现一次的数字 II](位运算/137. 只出现一次的数字 II.md)
    • [187. 重复的DNA序列](位运算/187. 重复的DNA序列.md)
    • [136. 只出现一次的数字](位运算/136. 只出现一次的数字.md)
  • 剑指offer
    • [46. 把数字翻译成字符串](剑指offer/46. 把数字翻译成字符串.md)
    • [28. 对称的二叉树](剑指offer/28. 对称的二叉树.md)
    • 4.二维数组中的查找
    • [L191. 位1的个数](剑指offer/L191. 位1的个数.md)
    • [43. 1~n整数中1出现的次数](剑指offer/43. 1~n整数中1出现的次数.md)
    • [L153. 寻找旋转排序数组中的最小值](剑指offer/L153. 寻找旋转排序数组中的最小值.md)
    • [29. 顺时针打印矩阵](剑指offer/29. 顺时针打印矩阵.md)
    • [45. 把数组排成最小的数](剑指offer/45. 把数组排成最小的数.md)
    • [36. 二叉搜索树与双向链表](剑指offer/36. 二叉搜索树与双向链表.md)
    • [48. 最长不含重复字符的子字符串](剑指offer/48. 最长不含重复字符的子字符串.md)
    • 24.反转链表
    • [35. 复杂链表的复制](剑指offer/35. 复杂链表的复制.md)
    • [30. 包含min函数的栈](剑指offer/30. 包含min函数的栈.md)
    • [26. 树的子结构](剑指offer/26. 树的子结构.md)
    • [32 - II. 从上到下打印二叉树 II](剑指offer/32 - II. 从上到下打印二叉树 II.md)
    • [22. 链表中倒数第k个节点](剑指offer/22. 链表中倒数第k个节点.md)
    • [49. 丑数](剑指offer/49. 丑数.md)
    • [19. 正则表达式匹配](剑指offer/19. 正则表达式匹配.md)
    • [39. 数组中出现次数超过一半的数字](剑指offer/39. 数组中出现次数超过一半的数字.md)
    • 20.表示数值的字符串
    • [14. 剪梯子](剑指offer/14. 剪梯子.md)
    • [L154. 寻找旋转排序数组中的最小值 II](剑指offer/L154. 寻找旋转排序数组中的最小值 II.md)
    • [9. 用两个栈实现队列](剑指offer/9. 用两个栈实现队列.md)
    • [44. 数字序列中某一位的数字](剑指offer/44. 数字序列中某一位的数字.md)
    • [40. 最小的k个数](剑指offer/40. 最小的k个数.md)
    • [3. 数组中的重复数字](剑指offer/3. 数组中的重复数字.md)
    • [L287. 寻找重复数](剑指offer/L287. 寻找重复数.md)
    • [32 - III. 从上到下打印二叉树 III](剑指offer/32 - III. 从上到下打印二叉树 III.md)
    • [31. 栈的压入、弹出序列](剑指offer/31. 栈的压入、弹出序列.md)
    • [15. 二进制中1的个数](剑指offer/15. 二进制中1的个数.md)
    • [33. 二叉搜索树的后序遍历序列](剑指offer/33. 二叉搜索树的后序遍历序列.md)
    • [41. 数据流中的中位数](剑指offer/41. 数据流中的中位数.md)
    • 8.二叉树的下一个节点

About

Leetcode & 剑指offer 部分题解

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); GitHub - PythonYXY/leetcode: Leetcode & 剑指offer 部分题解 · GitHub
Skip to content

Repository files navigation

Introduction

本书主要记录了一些我在刷leetcode过程中碰到的一些个人认为比较经典题目的思路和题解。

之前在刷leetcode的过程中,发现很多题目做过就忘掉了,再次碰到类似的甚至是相同的题目是依然感觉无从下手。其实这往往是因为对于题目没有理解,掌握透。因此在之后的刷题过程中,刻意放慢了脚步,每做完一道题,都去主动思考这种算法的时空复杂度是多少,是否还有更优的解法,能否做到举一反三等。

章节的编排形式参考了leetcode的题型分类,例如二叉树,字符串以及链表等。题目以middle难度居多,同时含有少量的easy题以及极少量的hard题。题目没有特定的顺序,纯粹按照了自己的做题顺序来编排。最后一章主要是《剑指offer》上的题目,其中有一部分题目是与之前章节重合的。

目前只有Java语言的实现,后续考虑会加入Javascript以及Go语言的实现。但是鉴于个人有限的精力和时间,也可能不会实施......

如果有任何问题和意见欢迎在Issue区提出。

Author

PythonYXY

Content

  • Introduction

  • 二分查找

    • [287. 寻找重复数](二分查找/287. 寻找重复数.md)
    • [154. 寻找旋转排序数组中的最小值 II](二分查找/154. 寻找旋转排序数组中的最小值 II.md)
    • [300. 最长上升子序列](二分查找/300. 最长上升子序列.md)
    • [69. X的平方根](二分查找/69. X的平方根.md)
    • [354. 俄罗斯套娃信封问题](二分查找/354. 俄罗斯套娃信封问题.md)
    • [153. 寻找旋转排序数组中的最小值](二分查找/153. 寻找旋转排序数组中的最小值.md)
  • 线性表

    • [560. 和为K的子数组](线性表/560. 和为K的子数组.md)
    • [15. 三数之和](线性表/15. 三数之和.md)
    • [523 连续子数组和](线性表/523 连续子数组和.md)
    • [215. 数组中的第K个最大元素](线性表/215. 数组中的第K个最大元素.md)
    • [209. 长度最小的子数组](线性表/209. 长度最小的子数组.md)
    • [4. 寻找两个有序数组的中位数](线性表/4. 寻找两个有序数组的中位数.md)
    • [41. 缺失的第一个正数](线性表/41. 缺失的第一个正数.md)
  • 链表

    • [430. 扁平化多级双向链表](链表/430. 扁平化多级双向链表.md)
    • [138. 复制带随机指针的链表](链表/138. 复制带随机指针的链表.md)
    • [142. 环形链表 II](链表/142. 环形链表 II.md)
    • [460. LFU缓存](链表/460. LFU缓存.md)
    • [86. 分隔链表](链表/86. 分隔链表.md)
    • [109. 有序链表转换二叉搜索树](链表/109. 有序链表转换二叉搜索树.md)
    • [206. 反转链表](链表/206. 反转链表.md)
    • [25. K 个一组翻转链表难度困难](链表/25. K 个一组翻转链表难度困难.md)
    • [92. 反转链表 II](链表/92. 反转链表 II.md)
    • [23. 合并K个排序链表](链表/23. 合并K个排序链表.md)
    • [143. 重排链表](链表/143. 重排链表.md)
  • 二叉树

    • [145. 二叉树的后序遍历](二叉树/145. 二叉树的后序遍历.md)
    • [307. 区域和检索 - 数组可修改](二叉树/307. 区域和检索 - 数组可修改.md)
    • [173. 二叉搜索树迭代器](二叉树/173. 二叉搜索树迭代器.md)
    • [230. 二叉搜索树中第K小的元素](二叉树/230. 二叉搜索树中第K小的元素.md)
    • [95. 不同的二叉搜索树 II](二叉树/95. 不同的二叉搜索树 II.md)
    • [110. 平衡二叉树](二叉树/110. 平衡二叉树.md)
    • [114. 二叉树展开为链表](二叉树/114. 二叉树展开为链表.md)
    • [99. 恢复二叉搜索树](二叉树/99. 恢复二叉搜索树.md)
    • [113. 路径总和 II](二叉树/113. 路径总和 II.md)
    • [96. 不同的二叉搜索树](二叉树/96. 不同的二叉搜索树.md)
    • [129. 求根到叶子节点数字之和](二叉树/129. 求根到叶子节点数字之和.md)
    • [144. 二叉树的前序遍历](二叉树/144. 二叉树的前序遍历.md)
    • [117. 填充每个节点的下一个右侧节点指针 II](二叉树/117. 填充每个节点的下一个右侧节点指针 II.md)
    • [236. 二叉树的最近公共祖先](二叉树/236. 二叉树的最近公共祖先.md)
  • 搜索

    • [240. 搜索二维矩阵 II](搜索/240. 搜索二维矩阵 II.md)
    • [127. 单词接龙](搜索/127. 单词接龙.md)
    • [130. 被围绕的区域](搜索/130. 被围绕的区域.md)
  • 字符串

    • [438. 找到字符串中所有字母异位词](字符串/438. 找到字符串中所有字母异位词.md)
    • [76. 最小覆盖子串](字符串/76. 最小覆盖子串.md)
    • [44. 通配符匹配](字符串/44. 通配符匹配.md)
    • [28. 实现 strStr](字符串/28. 实现 strStr.md)
    • [5. 最长回文子串](字符串/5. 最长回文子串.md)
    • [1143. 最长公共子序列](字符串/1143. 最长公共子序列.md)
    • [10. 正则表达式匹配](字符串/10. 正则表达式匹配.md)
    • [522. 最长特殊序列 II](字符串/522. 最长特殊序列 II.md)
    • [796. 旋转字符串](字符串/796. 旋转字符串.md)
    • [459. 重复的子字符串](字符串/459. 重复的子字符串.md)
    • [72. 编辑距离](字符串/72. 编辑距离.md)
    • [3. 无重复字符的最长子串](字符串/3. 无重复字符的最长子串.md)
  • 动态规划

    • [131. 分割回文串](动态规划/131. 分割回文串.md)
    • [97. 交错字符串](动态规划/97. 交错字符串.md)
    • [188. 买卖股票的最佳时机 IV](动态规划/188. 买卖股票的最佳时机 IV.md)
    • [122. 买卖股票的最佳时机 II](动态规划/122. 买卖股票的最佳时机 II.md)
    • [132. 分割回文串 II](动态规划/132. 分割回文串 II.md)
    • [152. 乘积最大子序列](动态规划/152. 乘积最大子序列.md)
    • [87. 扰乱字符串](动态规划/87. 扰乱字符串.md)
    • [714. 买卖股票的最佳时机含手续费](动态规划/714. 买卖股票的最佳时机含手续费.md)
    • [121. 买卖股票的最佳时机](动态规划/121. 买卖股票的最佳时机.md)
    • [85. 最大矩形](动态规划/85. 最大矩形.md)
    • [120. 三角形最小路径和](动态规划/120. 三角形最小路径和.md)
    • [174. 地下城游戏](动态规划/174. 地下城游戏.md)
    • [140. 单词拆分 II](动态规划/140. 单词拆分 II.md)
    • [123. 买卖股票的最佳时机 III](动态规划/123. 买卖股票的最佳时机 III.md)
    • [940. 不同的子序列 II](动态规划/940. 不同的子序列 II.md)
    • [139. 单词拆分](动态规划/139. 单词拆分.md)
    • [309. 最佳买卖股票时机含冷冻期](动态规划/309. 最佳买卖股票时机含冷冻期.md)
    • [91. 解码方法](动态规划/91. 解码方法.md)
    • [115. 不同的子序列](动态规划/115. 不同的子序列.md)
    • [337. 打家劫舍 III](动态规划/337. 打家劫舍 III.md)
  • 数论

    • [264. 丑数 II](数论/264. 丑数 II.md)
    • [347. 前 K 个高频元素](数论/347. 前 K 个高频元素.md)
    • [355. 设计推特](数论/355. 设计推特.md)
    • [166. 分数到小数](数论/166. 分数到小数.md)
    • [373. 查找和最小的K对数字](数论/373. 查找和最小的K对数字.md)
    • [202. 快乐数](数论/202. 快乐数.md)
    • [172. 阶乘后的零](数论/172. 阶乘后的零.md)
    • [313. 超级丑数](数论/313. 超级丑数.md)
    • [292. Nim 游戏](数论/292. Nim 游戏.md)
  • 位运算

    • [89. 格雷编码](位运算/89. 格雷编码.md)
    • [201. 数字范围按位与](位运算/201. 数字范围按位与.md)
    • [52. N皇后 II](位运算/52. N皇后 II.md)
    • [51. N皇后](位运算/51. N皇后.md)
    • [1275. 找出井字棋的获胜者](位运算/1275. 找出井字棋的获胜者.md)
    • [137. 只出现一次的数字 II](位运算/137. 只出现一次的数字 II.md)
    • [187. 重复的DNA序列](位运算/187. 重复的DNA序列.md)
    • [136. 只出现一次的数字](位运算/136. 只出现一次的数字.md)
  • 剑指offer
    • [46. 把数字翻译成字符串](剑指offer/46. 把数字翻译成字符串.md)
    • [28. 对称的二叉树](剑指offer/28. 对称的二叉树.md)
    • 4.二维数组中的查找
    • [L191. 位1的个数](剑指offer/L191. 位1的个数.md)
    • [43. 1~n整数中1出现的次数](剑指offer/43. 1~n整数中1出现的次数.md)
    • [L153. 寻找旋转排序数组中的最小值](剑指offer/L153. 寻找旋转排序数组中的最小值.md)
    • [29. 顺时针打印矩阵](剑指offer/29. 顺时针打印矩阵.md)
    • [45. 把数组排成最小的数](剑指offer/45. 把数组排成最小的数.md)
    • [36. 二叉搜索树与双向链表](剑指offer/36. 二叉搜索树与双向链表.md)
    • [48. 最长不含重复字符的子字符串](剑指offer/48. 最长不含重复字符的子字符串.md)
    • 24.反转链表
    • [35. 复杂链表的复制](剑指offer/35. 复杂链表的复制.md)
    • [30. 包含min函数的栈](剑指offer/30. 包含min函数的栈.md)
    • [26. 树的子结构](剑指offer/26. 树的子结构.md)
    • [32 - II. 从上到下打印二叉树 II](剑指offer/32 - II. 从上到下打印二叉树 II.md)
    • [22. 链表中倒数第k个节点](剑指offer/22. 链表中倒数第k个节点.md)
    • [49. 丑数](剑指offer/49. 丑数.md)
    • [19. 正则表达式匹配](剑指offer/19. 正则表达式匹配.md)
    • [39. 数组中出现次数超过一半的数字](剑指offer/39. 数组中出现次数超过一半的数字.md)
    • 20.表示数值的字符串
    • [14. 剪梯子](剑指offer/14. 剪梯子.md)
    • [L154. 寻找旋转排序数组中的最小值 II](剑指offer/L154. 寻找旋转排序数组中的最小值 II.md)
    • [9. 用两个栈实现队列](剑指offer/9. 用两个栈实现队列.md)
    • [44. 数字序列中某一位的数字](剑指offer/44. 数字序列中某一位的数字.md)
    • [40. 最小的k个数](剑指offer/40. 最小的k个数.md)
    • [3. 数组中的重复数字](剑指offer/3. 数组中的重复数字.md)
    • [L287. 寻找重复数](剑指offer/L287. 寻找重复数.md)
    • [32 - III. 从上到下打印二叉树 III](剑指offer/32 - III. 从上到下打印二叉树 III.md)
    • [31. 栈的压入、弹出序列](剑指offer/31. 栈的压入、弹出序列.md)
    • [15. 二进制中1的个数](剑指offer/15. 二进制中1的个数.md)
    • [33. 二叉搜索树的后序遍历序列](剑指offer/33. 二叉搜索树的后序遍历序列.md)
    • [41. 数据流中的中位数](剑指offer/41. 数据流中的中位数.md)
    • 8.二叉树的下一个节点

About

Leetcode & 剑指offer 部分题解

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors