algorithm primer - 算法基础、Leetcode编程、剑指offer
| No | Problem | Solution | Difficulty | Tag |
|---|---|---|---|---|
| 20 | 有效的括号 Valid Parentheses | Java | Easy | |
| 94 | 二叉树的中序遍历 Binary Tree Inorder | Java | Medium | |
| 155 | 最小栈 Min Stack | Java | Easy | |
| 394 | 字符串编码 Decode String | Java | Medium |
| No | Problem | Solution | Difficulty | Tag |
|---|---|---|---|---|
| 2 | 两数相加 Add Two Numbers | Java | Medium | |
| 19 | 删除链表倒数第N个节点 Remove Nth Node From End of List | Java | Medium | |
| 21 | 合并两个有序链表 Merge Two Sorted Lists | Java | Easy | |
| 141 | 判断链表是是否存在环 Linked List Cycle | Java | Easy | |
| 142 | 环形链表II Linked List Cycle II | Java | Medium | |
| 148 | 排序链表 Sort List | Java | Medium | |
| 160 | 相交链表 Intersection of Two Linked Lists | Java | Easy | |
| 206 | 反转链表 Reverse Linked List | Java | Easy | |
| 234 | 回文链表 Palindrome Linked List | Java | Easy |
| No | Problem | Solution | Difficulty | Tag |
|---|---|---|---|---|
| 105 | Construct Binary Tree from Preorder and Inorder Traversal | Java | Medium | |
| 121 | Best Time to Buy and Sell Stock | Java | Easy | |
| 152 | Maximum Product Subarray | Java | Medium | |
| 169 | Majority Element | Java | Easy | |
| 238 | Product of Array Except Self | Java | Medium | |
| 283 | Move Zeroes | Java | Easy | |
| 287 | Find the Duplicate Number | Java | Medium | |
| 448 | Find All Numbers Disappeared in an Array | Java | Easy | |
| 560 | Subarray Sum Equals K | Java | Medium | |
| 581 | Shortest Unsorted Continuous Subarray | Java | Easy |
| No | Problem | Solution | Difficulty | Tag |
|---|---|---|---|---|
| 94 | 二叉树的中序遍历 Binary Tree Inorder | Java | Medium | |
| 101 | 对称二叉树 Symmetric Tree | Java | Easy | |
| 102 | 二叉树的层次遍历 Binary Tree Level Order Traversal | Java | Medium | |
| 104 | 二叉树的最大深度 Maximum Depth of Binary Tree | Java | Easy | |
| 105 | 从前序与中序遍历序列构造二叉树 Construct Binary Tree from Preorder and Inorder Traversal | Java | Medium | |
| 114 | 二叉树展开为链表 Flatten Binary Tree to Linked List | Java | Medium | |
| 124 | 二叉树中的最大路径和 Binary Tree Maximum Path Sum | Java | Hard | |
| 226 | 翻转二叉树 Invert Binary Tree | Java | Easy | |
| 236 | 二叉树的最近公共祖先 Lowest Common Ancestor of a Binary Tree | Java | Medium | |
| 257 | 二叉树路径 Binary Tree Paths | Java | Easy | |
| 337 | 打家劫舍 III House Robber III | Java | Medium | |
| 437 | 路径总和 III Path Sum III | Java | Easy | |
| 543 | 二叉树的直径 Diameter of Binary Tree | Java | Easy | |
| 617 | 合并二叉树 Merge Two Binary Trees | Java | Easy |
| No | Problem | Solution | Difficulty | Tag |
|---|---|---|---|---|
| 96 | 不同的二叉搜索树 Unique Binary Search Trees | Java | Medium | |
| 98 | 验证二叉搜索树 Validate Binary Search Tree | Java | Medium | |
| 538 | 把二叉搜索树转换为累加树 Convert BST to Greater Tree | Java | Easy |
| No | Problem | Solution | Difficulty | Tag |
|---|---|---|---|---|
| 208 | 实现 Trie (前缀树) Implement Trie (Prefix Tree) | Java | Medium |
| No | Problem | Solution | Difficulty | Tag |
|---|---|---|---|---|
| 1 | 两数之和 Two Sum | Java | Easy | |
| 3 | 无重复字符的最长子串 Longest Substring Without Repeating Characters | Java | Medium | |
| 49 | 字母异位词分组 Group Anagrams | Java | Medium | |
| 94 | 二叉树的中序遍历 Binary Tree Inorder | Java | Medium | |
| 136 | 只出现一次的数字 Single Number | Java | Easy | |
| 347 | 前 K 个高频元素 Top K Frequent Elements | Java | Medium | |
| 438 | 找到字符串中所有字母异位词 Find All Anagrams in a String | Java | Medium | |
| 560 | 和为K的子数组 Subarray Sum Equals K | Java | Medium |
| No | Problem | Solution | Difficulty | Tag |
|---|---|---|---|---|
| 3 | 无重复字符的最长子串 Longest Substring Without Repeating Characters | Java | Medium | |
| 5 | 最长回文子串 Longest Palindromic Substring | Java | Medium | |
| 17 | 电话号码的字母组合 Letter Combinations of a Phone Number | Java | Medium | |
| 20 | 有效的括号 Valid Parentheses | Java | Easy | |
| 22 | 括号生成 Generate Parentheses | Java | Medium | |
| 49 | 字母异位词分组 Group Anagrams | Java | Medium | |
| 647 | 回文子串 Palindromic Substrings | Java | Medium |
| No | Problem | Solution | Difficulty | Tag |
|---|---|---|---|---|
| 215 | 数组中的第K个最大元素 Kth Largest Element in an Array | Java | Medium | |
| 347 | 前 K 个高频元素 Top K Frequent Elements | Java | Medium |
| No | Problem | Solution | Difficulty | Tag |
|---|---|---|---|---|
| 56 | 合并区间 Merge Intervals | Java | Medium | |
| 75 | 颜色分类 Sort Colors | Java | Medium | |
| 148 | 排序链表 Sort List | Java | Medium |
| No | Problem | Solution | Difficulty | Tag |
|---|---|---|---|---|
| 207 | 课程表 Course Schedule | Java | Medium |
| No | Problem | Solution | Difficulty | Tag |
|---|---|---|---|---|
| 34 | 在排序数组中查找元素的第一个和最后一个位置 Find First and Last Position of Element in Sorted Array | Java | Medium | |
| 240 | 搜索二维矩阵 II Search a 2D Matrix II | Java | Medium | |
| 287 | 寻找重复数 Find the Duplicate Number | Java | Medium | |
| 300 | 最长上升子序列 Longest Increasing Subsequence | Java | Medium |
| No | Problem | Solution | Difficulty | Tag |
|---|---|---|---|---|
| 3 | 无重复字符的最长子串 Longest Substring Without Repeating Characters | Java | Medium | |
| 11 | 盛最多水的容器 Container With Most Water | Java | Medium | |
| 15 | 三数之和 3Sum | Java | Medium | |
| 16 | 最接近的三数之和 3Sum Closest | Java | Medium | |
| 19 | 删除链表的倒数第N个节点 Remove Nth Node From End of List | Java | Medium | |
| 75 | 颜色分类 Sort Colors | Java | Medium | |
| 141 | 环形链表 Linked List Cycle | Java | Easy | |
| 142 | 环形链表 II Linked List Cycle II | Java | Medium | |
| 167 | 两数之和 II - 输入有序数组 Two Sum II - Input array is sorted | Java | Easy | |
| 234 | 回文链表 Palindrome Linked List | Java | Easy | |
| 283 | 移动零 Move Zeroes | Java | Easy | |
| 287 | 寻找重复数 Find the Duplicate Number | Java | Medium |
| No | Problem | Solution | Difficulty | Tag |
|---|---|---|---|---|
| 338 | 比特位计数 Counting Bits | Java | Medium | |
| 416 | 分割等和子集 Partition Equal Subset Sum | Java | Medium | |
| 494 | 目标和 Target Sum | Java | Medium | |
| 647 | 回文子串 Palindromic Substrings | Java | Medium |
| No | Problem | Solution | Difficulty | Tag |
|---|---|---|---|---|
| 55 | 跳跃游戏 Jump Game | Java | Medium | |
| 406 | 根据身高重建队列 Queue Reconstruction by Height | Java | Medium |
| No | Problem | Solution | Difficulty | Tag |
|---|---|---|---|---|
| 53 | 最大子序和 Maximum Subarray | Java | Easy | |
| 169 | 多数元素 Majority Element | Java | Easy | |
| 215 | 数组中的第K个最大元素 Kth Largest Element in an Array | Java | Medium | |
| 240 | Search a 2D Matrix II | Java | Medium |
| No | Problem | Solution | Difficulty | Tag |
|---|---|---|---|---|
| 17 | 电话号码的字母组合 Letter Combinations of a Phone Number | Java | Medium | |
| 22 | 括号生成 Generate Parentheses | Java | Medium | |
| 39 | 组合总和 Combination Sum | Java | Medium | |
| 46 | 全排列 Permutations | Java | Medium | |
| 78 | 子集 Subsets | Java | Medium | |
| 79 | 单词搜索 Word Search | Java | Medium |
| No | Problem | Solution | Difficulty | Tag |
|---|---|---|---|---|
| 78 | 子集 Subsets | Java | Medium | |
| 136 | 只出现一次的数字 Single Number | Java | Easy | |
| 169 | 多数元素 Majority Element | Java | Easy | |
| 338 | 比特位计数 Counting Bits | Java | Medium | |
| 461 | 汉明距离 Hamming Distance | Java | Easy |
| No | Problem | Solution | Difficulty | Tag |
|---|---|---|---|---|
| 3 | 无重复字符的最长子串 Longest Substring Without Repeating Characters | Java | Medium |
| No | Problem | Solution | Difficulty | Tag |
|---|---|---|---|---|
| 1 | 两数之和 Two Sum | Java | Easy | |
| 2 | Add Two Numbers | Java | Medium | |
| 3 | 无重复字符的最长子串 Longest Substring Without Repeating Characters | Java | Medium | |
| 5 | 最长回文子串 Longest Palindromic Substring | Java | Medium | |
| 11 | 盛最多水的容器 Container With Most Water | Java | Medium | |
| 15 | 三数之和 3Sum | Java | Medium | |
| 16 | 最接近的三数之和 3Sum Closest | Java | Medium | |
| 17 | 电话号码的字母组合 Letter Combinations of a Phone Number | Java | Medium | |
| 19 | 删除链表的倒数第N个节点 Remove Nth Node From End of List | Java | Medium | |
| 20 | 有效的括号 Valid Parentheses | Java | Easy | |
| 21 | Merge Two Sorted Lists | Java | Easy | |
| 22 | 括号生成 Generate Parentheses | Java | Medium | |
| 31 | Next Permutation | Java | Medium | |
| 34 | 在排序数组中查找元素的第一个和最后一个位置 Find First and Last Position of Element in Sorted Array | Java | Medium | |
| 39 | 组合总和 Combination Sum | Java | Medium | |
| 46 | 全排列 Permutations | Java | Medium | |
| 48 | Rotate Image | Java | Medium | |
| 49 | 字母异位词分组 Group Anagrams | Java | Medium | |
| 53 | 最大子序和 Maximum Subarray | Java | Easy | |
| 55 | 跳跃游戏 Jump Game | Java | Medium | |
| 56 | 合并区间 Merge Intervals | Java | Medium | |
| 62 | Unique Paths | Java | Medium | |
| 62 | Minimum Path Sum | Java | Medium | |
| 70 | Climbing Stairs | Java | Easy | |
| 75 | 颜色分类 Sort Colors | Java | Medium | |
| 78 | 子集 Subsets | Java | Medium | |
| 79 | 单词搜索 Word Search | Java | Medium | |
| 94 | 二叉树的中序遍历 Binary Tree Inorder | Java | Medium | |
| 96 | 不同的二叉搜索树 Unique Binary Search Trees | Java | Medium | |
| 98 | 验证二叉搜索树 Validate Binary Search Tree | Java | Medium | |
| 101 | 对称二叉树 Symmetric Tree | Java | Easy | |
| 102 | 二叉树的层次遍历 Binary Tree Level Order Traversal | Java | Medium | |
| 104 | 二叉树的最大深度 Maximum Depth of Binary Tree | Java | Easy | |
| 105 | 从前序与中序遍历序列构造二叉树 Construct Binary Tree from Preorder and Inorder Traversal | Java | Medium | |
| 114 | 二叉树展开为链表 Flatten Binary Tree to Linked List | Java | Medium | |
| 121 | Best Time to Buy and Sell Stock | Java | Easy | |
| 124 | 二叉树中的最大路径和 Binary Tree Maximum Path Sum | Java | Hard | |
| 136 | 只出现一次的数字 Single Number | Java | Easy | |
| 139 | Word Break | Java | Medium | |
| 141 | 环形链表 Linked List Cycle | Java | Easy | |
| 142 | 环形链表 II Linked List Cycle II | Java | Medium | |
| 146 | LRU Cache | Java | Medium | |
| 148 | 排序链表 Sort List | Java | Medium | |
| 152 | Maximum Product Subarray | Java | Medium | |
| 155 | Min Stack | Java | Easy | |
| 160 | Intersection of Two Linked Lists | Java | Easy | |
| 169 | 多数元素 Majority Element | Java | Easy | |
| 198 | House Robber | Java | Easy | |
| 200 | Number of Islands | Java | Medium | |
| 206 | Reverse Linked List | Java | Easy | |
| 207 | 课程表 Course Schedule | Java | Medium | |
| 208 | 实现 Trie (前缀树) Implement Trie (Prefix Tree) | Java | Medium | |
| 215 | 数组中的第K个最大元素 Kth Largest Element in an Array | Java | Medium | |
| 221 | Maximal Square | Java | Medium | |
| 226 | 翻转二叉树 Invert Binary Tree | Java | Easy | |
| 234 | 回文链表 Palindrome Linked List | Java | Easy | |
| 236 | 二叉树的最近公共祖先 Lowest Common Ancestor of a Binary Tree | Java | Medium | |
| 238 | Product of Array Except Self | Java | Medium | |
| 240 | 搜索二维矩阵 II Search a 2D Matrix II | Java | Medium | |
| 253 | Meeting Rooms II | Java | Medium | |
| 279 | Perfect Squares | Java | Medium | |
| 283 | 移动零 Move Zeroes | Java | Easy | |
| 287 | 寻找重复数 Find the Duplicate Number | Java | Medium | |
| 300 | 最长上升子序列 Longest Increasing Subsequence | Java | Medium | |
| 309 | Best Time to Buy and Sell Stock with Cooldown | Java | Medium | |
| 322 | Coin Change | Java | Medium | |
| 337 | 打家劫舍 III House Robber III | Java | Medium | |
| 338 | 比特位计数 Counting Bits | Java | Medium | |
| 347 | 前 K 个高频元素 Top K Frequent Elements | Java | Medium | |
| 394 | Decode String | Java | Medium | |
| 399 | Evaluate Division | Java | Medium | |
| 406 | 根据身高重建队列 Queue Reconstruction by Height | Java | Medium | |
| 416 | 分割等和子集 Partition Equal Subset Sum | Java | Medium | |
| 437 | 路径总和 III Path Sum III | Java | Easy | |
| 438 | 找到字符串中所有字母异位词 Find All Anagrams in a String | Java | Medium | |
| 448 | Find All Numbers Disappeared in an Array | Java | Easy | |
| 461 | 汉明距离 Hamming Distance | Java | Easy | |
| 494 | 目标和 Target Sum | Java | Medium | |
| 538 | 把二叉搜索树转换为累加树 Convert BST to Greater Tree | Java | Easy | |
| 543 | 二叉树的直径 Diameter of Binary Tree | Java | Easy | |
| 560 | 和为K的子数组 Subarray Sum Equals K | Java | Medium | |
| 581 | Shortest Unsorted Continuous Subarray | Java | Easy | |
| 617 | 合并二叉树 Merge Two Binary Trees | Java | Easy | |
| 647 | 回文子串 Palindromic Substrings | Java | Medium |
Note:
着重体的问题表示未开放。
| No | Problem | Solution | Difficulty | Tag |
|---|---|---|---|---|
| 167 | 两数之和 II - 输入有序数组 Two Sum II - Input array is sorted | Java | Easy | |
| 257 | 二叉树路径 Binary Tree Paths | Java | Easy |
| No | Leetcode | Problem & Solution | Tag |
|---|---|---|---|
| 003 | 数组中重复的数字 | 数组 | |
| 004 | 二维数组中的查找 | 数组 | |
| 011 | 旋转数组中的最小数字 | 数组与二分查找 | |
| 017 | 打印从 1 到最大的 n 位数 | 数组、大整数 | |
| 021 | 调整数组顺序使奇数位于偶数前面 | 数组、快排 | |
| 039 | 数组中出现次数超过一半的数字 | 数组、多数投票问题 | |
| 040 | 最小的 k 个数 | 数组、topK、大根堆 | |
| 041 | 数据流中的中位数 | 数组、大根堆、小根堆 | |
| 041-2 | 字符流中第一个不重复的字符 | 字符的数组索引、队列 | |
| 050 | 第一个只出现一次的字符 | 数组、数组索引、哈希表、比特位集 | |
| 053 | 数字在排序数组中出现的次数 | 数组、折半查找 | |
| 056 | 数组中只出现一次的数字 | 位运算、数组 | |
| 057 | 有序数组中查找和为s的两个数 | 数组、双指针 | |
| 058 | 翻转单词顺序 | 数组、字符串 | |
| 058-2 | 左旋转字符串 | 数组、字符串 | |
| 061 | 扑克牌的顺子 | 数组 | |
| 065 | 构建乘积数组 | 数组 |
| No | Problem & Solution | Tag |
|---|---|---|
| 006 | 从尾到头打印链表 | 链表 |
| 018-1 | 在 O(1) 时间删除链表结点 | 链表 |
| 018-2 | 删除链表中重复的结点 | 链表 |
| 022 | 链表中倒数第 k 个节点 | 链表、双指针 |
| 023 | 链表中环的入口结点 | 链表、双指针 |
| 024 | 反转链表 | 链表、递归 |
| 035 | 复杂链表的复制 | 链表 |
| No | Leetcode | Problem & Solution | Tag |
|---|---|---|---|
| 007 | 根据前序和中序遍历结果重建二叉树 | 二叉树 | |
| 008 | 查找二叉树指定节点的中序遍历的下一个节点 | 二叉树 | |
| 026 | 树的子结构 | 二叉树、递归 | |
| 027 | 二叉树的镜像 | 二叉树、递归 | |
| 028 | 对称的二叉树 | 二叉树、递归 | |
| 032 | 从上到下打印二叉树 | 二叉树、层次遍历、队列 | |
| 032-2 | 把二叉树打印成多行 | 二叉树、层次遍历、队列 | |
| 032-3 | 按之字形顺序打印二叉树 | 二叉树、层次遍历、队列、栈 | |
| 033 | 二叉搜索树的后序遍历序列 | 二叉搜索树、后序遍历 | |
| 034 | 二叉树中和为某一值的路径 | 二叉树路径、递归 | |
| 036 | 二叉搜索树与双向链表 | 二叉搜索树、双向链表 | |
| 037 | 序列化二叉树 | 二叉树、递归 | |
| 054 | 二叉搜索树的第k个结点 | 二叉搜索树、中序遍历 | |
| 055 | 二叉树的深度 | 二叉树、二叉树的遍历 | |
| 055-2 | 平衡二叉树 | 二叉树、二叉树的遍历 | |
| 068 | 树中两个节点的最低公共祖先节点 | 二叉树、递归、树的路径 |
| No | Leetcode | Problem & Solution | Tag |
|---|---|---|---|
| 009 | 用两个栈实现队列 | 栈与队列 | |
| 059 | 滑动窗口的最大值 | 双端队列、大根堆 |
| No | Problem & Solution | Tag |
|---|---|---|
| 005 | 替换字符串中的空格 | 字符串 |
| 038 | 字符串的排列 | 字符串、递归、回溯 |
| 044 | 数字序列中的某一位数字 | 字符串 |
| 045 | 把数组排成最小的数 | 字符串、数组 |
| No | Leetcode | Problem & Solution | Tag |
|---|---|---|---|
| 015 | 二进制中1的个数 | 位运算 | |
| 056 | 数组中只出现一次的数字 | 位运算、数组 |
| No | Leetcode | Problem & Solution | Tag |
|---|---|---|---|
| 010-1 | 斐波那契数列 | 递归与动态规划 | |
| 010-2 | 矩形覆盖 | 递归与动态规划 | |
| 010-3 | 跳台阶 | 递归与动态规划 | |
| 010-4 | 变态跳台阶 | 递归与动态规划 | |
| 012 | 矩阵中的路径 | 递归、回溯、DFS | |
| 013 | 机器人的运动范围 | 递归、回溯、DFS | |
| 016 | 数值的整数次方 | 递归 | |
| 049 | 第 N 个丑数 | 动态规划 | |
| 062 | 圆圈中最后剩下的数字 | 递归 | |
| 063 | 股票的最大利润 | 动态规划、贪心 | |
| 064 | 求前N个正整数之和 | 递归 |
| No | Leetcode | Problem & Solution | Tag |
|---|---|---|---|
| 003 | 数组中重复的数字 | 数组 | |
| 004 | 二维数组中的查找 | 数组 | |
| 005 | 替换字符串中的空格 | 字符串 | |
| 006 | 从尾到头打印链表 | 链表 | |
| 007 | 根据前序和中序遍历结果重建二叉树 | 二叉树 | |
| 008 | 查找二叉树指定节点的中序遍历的下一个节点 | 二叉树 | |
| 009 | 用两个栈实现队列 | 栈与队列 | |
| 010-1 | 斐波那契数列 | 递归与动态规划 | |
| 010-2 | 矩形覆盖 | 递归与动态规划 | |
| 010-3 | 跳台阶 | 递归与动态规划 | |
| 010-4 | 变态跳台阶 | 递归与动态规划 | |
| 011 | 旋转数组中的最小数字 | 数组与二分查找 | |
| 012 | 矩阵中的路径 | 递归、回溯、DFS | |
| 013 | 机器人的运动范围 | 递归、回溯、DFS | |
| 014 | 剪绳子使各段长度的乘积最大 | 贪心、动态规划 | |
| 015 | 二进制中1的个数 | 位运算 | |
| 016 | 数值的整数次方 | 递归、折半 | |
| 017 | 打印从 1 到最大的 n 位数 | 数组、大整数 | |
| 018-1 | 在 O(1) 时间删除链表结点 | 链表 | |
| 018-2 | 删除链表中重复的结点 | 链表 | |
| 019 | 正则表达式 | 动态规划 | |
| 020 | 表示数值的字符串 | 字符串、正则表达式 | |
| 021 | 调整数组顺序使奇数位于偶数前面 | 数组、快排 | |
| 022 | 链表中倒数第 k 个节点 | 链表、双指针 | |
| 023 | 链表中环的入口结点 | 链表、双指针 | |
| 024 | 反转链表 | 链表、递归 | |
| 026 | 树的子结构 | 二叉树、递归 | |
| 027 | 二叉树的镜像 | 二叉树、递归 | |
| 028 | 对称的二叉树 | 二叉树、递归 | |
| 029 | 顺时针打印矩阵 | 数组 | |
| 030 | 包含 min 函数的栈 | 栈 | |
| 031 | 栈的压入、弹出序列 | 栈 | |
| 032 | 从上到下打印二叉树 | 二叉树、层次遍历、队列 | |
| 032-2 | 把二叉树打印成多行 | 二叉树、层次遍历、队列 | |
| 032-3 | 按之字形顺序打印二叉树 | 二叉树、层次遍历、队列、栈 | |
| 033 | 二叉搜索树的后序遍历序列 | 二叉搜索树、后序遍历 | |
| 034 | 二叉树中和为某一值的路径 | 二叉树路径、递归 | |
| 035 | 复杂链表的复制 | 链表 | |
| 036 | 二叉搜索树与双向链表 | 二叉搜索树、双向链表 | |
| 037 | 序列化二叉树 | 二叉树、递归 | |
| 038 | 字符串的排列 | 字符串、递归、回溯 | |
| 039 | 数组中出现次数超过一半的数字 | 数组、多数投票问题 | |
| 040 | 最小的 k 个数 | 数组、topK、大根堆 | |
| 041 | 数据流中的中位数 | 数组、大根堆、小根堆 | |
| 041-2 | 字符流中第一个不重复的字符 | 字符的数组索引、队列 | |
| 042 | 连续子数组的最大和 | 数组、动态规划 | |
| 043 | 从 1 到 n 整数中 1 出现的次数 | ||
| 044 | 数字序列中的某一位数字 | 字符串 | |
| 045 | 把数组排成最小的数 | 字符串、数组 | |
| 046 | 把数字翻译成字符串 | 动态规划 | |
| 047 | 礼物的最大价值 | 动态规划 | |
| 048 | 最长不含重复字符的子字符串 | ||
| 049 | 第 N 个丑数 | 动态规划 | |
| 050 | 第一个只出现一次的字符 | 数组、数组索引、哈希表、比特位集 | |
| 051 | 数组中的逆序对 | 数组、排序 | |
| 052 | 两个链表的第一个公共结点 | 链表、双指针 | |
| 053 | 数字在排序数组中出现的次数 | 数组、折半查找 | |
| 054 | 二叉搜索树的第k个结点 | 二叉搜索树、中序遍历 | |
| 055 | 二叉树的深度 | 二叉树、二叉树的遍历 | |
| 055-2 | 平衡二叉树 | 二叉树、二叉树的遍历 | |
| 056 | 数组中只出现一次的数字 | 位运算、数组 | |
| 057 | 有序数组中查找和为s的两个数 | 数组、双指针 | |
| 057-2 | 为 s 的连续正数序列 | 数组、双指针 | |
| 058 | 翻转单词顺序 | 数组、字符串 | |
| 058-2 | 左旋转字符串 | 数组、字符串 | |
| 059 | 滑动窗口的最大值 | 双端队列、大根堆 | |
| 060 | n 个骰子的点数 | ||
| 061 | 扑克牌的顺子 | 数组 | |
| 062 | 圆圈中最后剩下的数字 | 递归 | |
| 063 | 股票的最大利润 | 动态规划、贪心 | |
| 064 | 求前N个正整数之和 | 递归 | |
| 065 | 不用加减乘除做加法 | 位运算、递归 | |
| 066 | 构建乘积数组 | 数组 | |
| 067 | 把字符串转换成整数 | 字符串 | |
| 068 | 树中两个节点的最低公共祖先节点 | 二叉树、递归、树的路径 |
| No | Problem & Solution |
|---|---|
| 2 | 实现单例模式 |
| 3 | 二维数组中的查找 |
| 4 | 替换空格 |
| 5 | 从尾到头打印链表 |
| 6 | 重建二叉树2 |
| 7 | 用两个栈实现队列 |
| 8 | 旋转数组的最小数字 |
| 9 | 斐波那契数列/青蛙跳台阶/矩形覆盖/变态跳台阶 |
| 10 | 二进制中 1 的个数 |
| 11 | 数值的整数次方 |
| 12 | 打印 1 到最大的 n 位整数 |
| 13 | 在 o(1) 时间删除链表结点 |
| 14 | 调整数组顺序使奇数位于偶数前面 |
| 15 | 链表中倒数第 k 个节点 |
| 16 | 反转链表 |
| 17 | 合并两个排序的链表 |
| 18 | 树的子结构 |
| 19 | 二叉树的镜像 |
| 20 | 顺时针打印矩阵 |
| 21 | 包含 min 函数的栈 |
| 22 | 栈的压入、弹出序列 |
| 23 | 从上到下打印二叉树 |
| 24 | 二叉搜索树的后序遍历序列 |
| 25 | 二叉树中和为某一值的路径 |
| 26 | 复杂链表的复制 |
| 27 | 二叉搜索树与双向链表 |
| 28 | 字符串的排列 |
| 29 | 数组中出现次数超过一半的数字 |
| 30 | 最小的 k 个数 |
| 31 | 连续子数组的最大和 |
| 32 | 从 1 到 n 整数中 1 出现的次数 |
| 33 | 把数组排成最小的数 |
| 34 | 丑数 |
| 35 | 第一个只出现一次的字符 |
| 36 | 数组中的逆数对 |
| 37 | 两个链表的第一个公共结点 |
| 38 | 数字在排序数组中出现的次数 |
| 39 | 二叉树的深度 |
| 40 | 数组中只出现一次的数字 |
| 41 | 和为 s 的两个数字 VS 和为 s 的连续正数序列 |
| 42 | 翻转单词顺序 VS 左旋转字符串 |
| 43 | n 个骰子的点数 |
| 44 | 扑克牌的顺子 |
| 45 | 圆圈中最后剩下的数字 |
| 46 | 求前 n 项正整数的和(不能使用乘除法以及for、while、if 等关键字) |
| 47 | 不用加减乘除做加法 |
| 48 | 不能被继承的类 |
| 49 | 把字符串转换成整数 |
| 50 | 树中两个结点的最低公共祖先结点 |
| 51 | 数组中重复的数字 |
| 52 | 构建乘积数组 |
| 55 | 字符流中第一个不重复的字符 |
| 56 | 链表中环的入口结点 |
| 57 | 删除链表中重复的结点 |
| 58 | 二叉树的下一个结点 |
| 59 | 对称的二叉树 |
| 60 | 把二叉树打印成多行 |
| 61 | 按之字形顺序打印二叉树 |
| 62 | 序列化二叉树 |
| 63 | 二叉搜索树的第k个结点 |
| 64 | 数据流中的中位数 |
| 65 | 滑动窗口的最大值 |
- leetcode overview
- 《程序员代码面试指南 第2版》
- 《剑指offer 第2版》
- 《编程之美》
- 《编程珠玑》
- 《算法 第4版》
- 《算法导论 第3版》