本仓库是我的《LeetCode 例题精讲》课程的文章索引与参考代码。课程系列文章于 2020 年在我的公众号连载。
- 系统学习 LeetCode 解题方法:
- 建议直接阅读网站版本:https://nettee.io/courses/algorithm
- 根据 LeetCode 题目寻找参考代码:
- 从下方「参考代码」部分的表格中找到 LeetCode 题目,找到对应的参考代码以及讲解文章链接
| 题号 | 题目名 | 题解代码 | 对应文章 |
|---|---|---|---|
| 11 | Container With Most Water 盛最多水的容器 |
Java | 盛最多水的容器(蓄水池问题) |
| 19 | Remove Nth Node From End of List 删除链表的倒数第N个节点 |
Java | 双指针×链表问题:快慢指针 |
| 39 | Combination Sum 组合总和 |
Java | 一套代码解决 Combination Sum 系列问题 |
| 40 | Combination Sum II 组合总和 II |
Java | 一套代码解决 Combination Sum 系列问题 |
| 46 | Permutations 全排列 |
Java | 排列组合问题:回溯法的候选集合 |
| 47 | Permutations II 全排列 II |
Java | 排列组合问题再探:回溯法的去重策略 |
| 53 | Maximum Subarray 最大子序和 |
Java(1, 2, 3, 4, 5) | 最大子数组和:子数组类问题的动态规划技巧 |
| 72 | Edit Distance 编辑距离 |
Java | 经典动态规划:编辑距离 |
| 77 | Combinations 组合 |
排列组合问题:回溯法的候选集合 | |
| 78 | Subsets 子集 |
Java | 从二叉树遍历到回溯算法 |
| 90 | Subsets II 子集 II |
Java | 排列组合问题再探:回溯法的去重策略 |
| 98 | Validate Binary Search Tree 验证二叉搜索树 |
Java | 二叉树转化为链表:二叉树中序遍历中的相邻结点 |
| 102 | Binary Tree Level Order Traversal 二叉树的层序遍历 |
Java | BFS 的使用场景:层序遍历、最短路径问题 |
| 110 | Balanced Binary Tree 平衡二叉树 |
Java | 二叉树直径:二叉树遍历中的全局变量 |
| 112 | Path Sum 路径总和 |
Java | Path Sum:二叉树的子问题划分 |
| 113 | Path Sum II 路径总和 II |
Java | 从二叉树遍历到回溯算法 |
| 123 | Best Time to Buy and Sell Stock III 买卖股票的最佳时机 III |
Java | 一文教你股票买卖问题实用而装逼的解法 |
| 124 | Binary Tree Maximum Path Sum 二叉树中的最大路径和 |
Java | 二叉树直径:二叉树遍历中的全局变量 |
| 141 | Linked List Cycle 环形链表 |
Java | 双指针×链表问题:快慢指针 |
| 148 | Sort List 排序链表 |
Java | 链表综合题:链表排序 |
| 167 | Two Sum II - Input array is sorted 两数之和 II - 输入有序数组 |
Java | 用双指针解 Two Sum:缩减搜索空间 |
| 189 | Rotate Array 旋转数组 |
Java | 基本操作的威力:以 reverse 为例 |
| 198 | House Robber 打家劫舍 |
Java | 打家劫舍:动态规划的解题四步骤 |
| 206 | Reverse Linked List 反转链表 |
Java | 反转链表:如何轻松重构链表 |
| 216 | Combination Sum III 组合总和 III |
Java | 一套代码解决 Combination Sum 系列问题 |
| 240 | Search a 2D Matrix II 搜索二维矩阵 II |
Java | 用双指针解 Two Sum:缩减搜索空间 |
| 242 | Valid Anagram 有效的字母异位词 |
Java | 变位词问题:基本数据结构的威力 |
| 303 | Range Sum Query - Immutable 区域和检索 - 数组不可变 |
Java | 前缀和:空间换时间的技巧 |
| 322 | Coin Change 零钱兑换 |
Java | 经典动态规划:「换硬币」系列三道问题详解 |
| 377 | Combination Sum IV 组合总和 Ⅳ |
Java | 经典动态规划:「换硬币」系列三道问题详解 |
| 426 | Convert Binary Search Tree to Sorted Doubly Linked List 将二叉搜索树转化为排序的双向链表 |
Java | 二叉树转化为链表:二叉树中序遍历中的相邻结点 |
| 463 | Island Perimeter 岛屿的周长 |
Java | 岛屿问题:网格结构中的 DFS |
| 518 | Coin Change 2 零钱兑换 II |
Java | 经典动态规划:「换硬币」系列三道问题详解 |
| 543 | Diameter of Binary Tree 二叉树的直径 |
Java | 二叉树直径:二叉树遍历中的全局变量 |
| 560 | Subarray Sum Equals K 和为K的子数组 |
Java | 前缀和:空间换时间的技巧 |
| 563 | Binary Tree Tilt 二叉树的坡度 |
Java | 二叉树直径:二叉树遍历中的全局变量 |
| 695 | Max Area of Island 岛屿的最大面积 |
Java | 岛屿问题:网格结构中的 DFS |
| 718 | Maximum Length of Repeated Subarray 最长重复子数组 |
Java | 最大子数组和:子数组类问题的动态规划技巧 |
| 724 | Find Pivot Index 寻找数组的中心索引 |
Java | 前缀和:空间换时间的技巧 |
| 827 | Making A Large Island 最大人工岛 |
Java | 岛屿问题:网格结构中的 DFS |
| 876 | Middle of the Linked List 链表的中间结点 |
Java | 双指针×链表问题:快慢指针 |
| 978 | Longest Turbulent Subarray 最长湍流子数组 |
Java | 动态规划如何拆分子问题,简化思路 |
| 1143 | Longest Common Subsequence 最长公共子序列 |
Java | 最长公共子序列:二维动态规划的解法 |
| 1162 | As Far from Land as Possible 地图分析 |
Java | BFS 的使用场景:层序遍历、最短路径问题 |
| 1372 | Longest ZigZag Path in a Binary Tree 二叉树中的最长交错路径 |
Java | 二叉树问题太复杂?「三步走」方法解决它! |
| 1373 | Maximum Sum BST in Binary Tree 二叉搜索子树的最大键值和 |
Java | 二叉树问题太复杂?「三步走」方法解决它! |