diff --git a/README.md b/README.md index 1382a71..8b834ef 100644 --- a/README.md +++ b/README.md @@ -1,129 +1,131 @@ -# LeetCode Topics and Interview Questions Collection +# LeetCode题目分类与面试问题整理 -## Subject Category +> [English edition](/README_EN.md) -### Hash +## 题目分类 -- [Question 1 : Sum of two numbers](/src/hash相关/q1_两数之和) -- [Question 387 : The first unique character in the string](/src/hash相关/q387_字符串中的第一个唯一字符) +### Hash相关 -### Linked List Operations +- [q1_两数之和](/src/hash相关/q1_两数之和) +- [q387_字符串中的第一个唯一字符](/src/hash相关/q387_字符串中的第一个唯一字符) -- [Question 2 : Add two numbers](/src/链表操作/q2_两数相加) -- [Question 19 : Delete the Nth node from the bottom of the linked list](/src/链表操作/q19_删除链表的倒数第N个节点) -- [Question 25 : K set of flipped linked lists](/src/链表操作/q25_k个一组翻转链表) -- [Question 61 : Rotating linked list](/src/链表操作/q61_旋转链表) -- [Question 138 : Copy linked list with random pointer](/src/链表操作/q138_复制带随机指针的链表) -- [Question 206 : Reverse linked list](/src/链表操作/q206_反转链表) +### 链表操作 -### Double Pointer Traversal / Sliding Window +- [q2_两数相加](/src/链表操作/q2_两数相加) +- [q19_删除链表的倒数第N个节点](/src/链表操作/q19_删除链表的倒数第N个节点) +- [q25_k个一组翻转链表](/src/链表操作/q25_k个一组翻转链表) +- [q61_旋转链表](/src/链表操作/q61_旋转链表) +- [q138_复制带随机指针的链表](/src/链表操作/q138_复制带随机指针的链表) +- [q206_反转链表](/src/链表操作/q206_反转链表) -- [Question 3 : Longest substring without repeated characters](/src/双指针遍历/q3_无重复字符的最长子串) -- [Question 11 : Container with the most water](/src/双指针遍历/q11_盛最多水的容器) -- [Question 15 : Sum of three numbers](/src/双指针遍历/q15_三数之和) -- [Question 16 : Closest sum of three numbers](/src/双指针遍历/q16_最接近的三数之和) -- [Question 26 : Delete duplicates in the sorted array](/src/双指针遍历/q26_删除排序数组中的重复项) -- [Question 42 : Trapping-rain-water](/src/双指针遍历/q42_接雨水) -- [Question 121 : The best time to buy and sell stocks](/src/双指针遍历/q121_买卖股票的最佳时机) -- [Question 209 : The smallest length sub-array](/src/双指针遍历/q209_长度最小的子数组) +### 双指针遍历/滑动窗口 -### Fast and Slow Pointer Traversal +- [q3_无重复字符的最长子串](/src/双指针遍历/q3_无重复字符的最长子串) +- [q11_盛最多水的容器](/src/双指针遍历/q11_盛最多水的容器) +- [q15_三数之和](/src/双指针遍历/q15_三数之和) +- [q16_最接近的三数之和](/src/双指针遍历/q16_最接近的三数之和) +- [q26_删除排序数组中的重复项](/src/双指针遍历/q26_删除排序数组中的重复项) +- [q42_接雨水](/src/双指针遍历/q42_接雨水) +- [q121_买卖股票的最佳时机](/src/双指针遍历/q121_买卖股票的最佳时机) +- [q209_长度最小的子数组](/src/双指针遍历/q209_长度最小的子数组) -- [Question 141 : Circular linked list](/src/快慢指针遍历/q141_环形链表) -- [Question 202 : Happy number](/src/快慢指针遍历/q202_快乐数) -- [Question 876 : Intermediate node of linked list](/src/快慢指针遍历/q876_链表的中间结点) +### 快慢指针遍历 -### Interval Merge +- [q141_环形链表](/src/快慢指针遍历/q141_环形链表) +- [q202_快乐数](/src/快慢指针遍历/q202_快乐数) +- [q876_链表的中间结点](/src/快慢指针遍历/q876_链表的中间结点) -- [Question 56 : Merge interval](/src/区间合并/q56_合并区间) +### 区间合并 -### String Manipulation +- [q56_合并区间](/src/区间合并/q56_合并区间) -- [Question 6 : Zigzag transformation](/src/字符串操作/q6_Z字形变换) -- [Question 14 : Longest common prefix](/src/字符串操作/q14_最长公共前缀) -- [Question 763 : Dividing letter interval](/src/字符串操作/q763_划分字母区间) +### 字符串操作 -### Digital Operations +- [q6_Z字形变换](/src/字符串操作/q6_Z字形变换) +- [q14_最长公共前缀](/src/字符串操作/q14_最长公共前缀) +- [q763_划分字母区间](/src/字符串操作/q763_划分字母区间) -- [Question 7 : Integer inversion](/src/数字操作/q7_整数反转) -- [Question 8 : String conversion integer](/src/数字操作/q8_字符串转换整数) -- [Question 9 : Palindrome Number](/src/数字操作/q9_回文数) -- [Question 43 : String multiplication](/src/数字操作/q43_字符串相乘) -- [Question 172 : Zero after factorial](/src/数字操作/q172_阶乘后的零) -- [Question 258 : Add everybody](/src/数字操作/q258_各位相加) +### 数字操作 -### Array Operations +- [q7_整数反转](/src/数字操作/q7_整数反转) +- [q8_字符串转换整数](/src/数字操作/q8_字符串转换整数) +- [q9_回文数](/src/数字操作/q9_回文数) +- [q43_字符串相乘](/src/数字操作/q43_字符串相乘) +- [q172_阶乘后的零](/src/数字操作/q172_阶乘后的零) +- [q258_各位相加](/src/数字操作/q258_各位相加) -- [Question 54 : Spiral matrix](/src/数组操作/q54_螺旋矩阵) -- [Question 73 : Zero Matrix](/src/数组操作/q73_矩阵置零) -- [Question 78 : Subset](/src/数组操作/q78_子集) -- [Question 384 : Scrambling array](/src/数组操作/q384_打乱数组) -- [Question 581 : Shortest unordered continuous subarray](/src/数组操作/q581_最短无序连续子数组) -- [Question 945 : Minimum increment to make the array unique](/src/数组操作/q945_使数组唯一的最小增量) +### 数组操作 -### Stack +- [q54_螺旋矩阵](/src/数组操作/q54_螺旋矩阵) +- [q73_矩阵置零](/src/数组操作/q73_矩阵置零) +- [q78_子集](/src/数组操作/q78_子集) +- [q384_打乱数组](/src/数组操作/q384_打乱数组) +- [q581_最短无序连续子数组](/src/数组操作/q581_最短无序连续子数组) +- [q945_使数组唯一的最小增量](/src/数组操作/q945_使数组唯一的最小增量) -- [Question 20 : Valid brackets](/src/栈相关/q20_有效的括号) -- [Question 32 : Longest valid bracket](/src/栈相关/q32_最长有效括号) -- [Question 155 : Minimal stack](/src/栈相关/q155_最小栈) -- [Question 224 : Basic calculator](/src/栈相关/q224_基本计算器) -- [Question 232 : Implement queue with stack](/src/栈相关/q232_用栈实现队列) -- [Question 316 : Remove duplicate letters](/src/栈相关/q316_去除重复字母) +### 栈相关 -### Heap +- [q20_有效的括号](/src/栈相关/q20_有效的括号) +- [q32_最长有效括号](/src/栈相关/q32_最长有效括号) +- [q155_最小栈](/src/栈相关/q155_最小栈) +- [q224_基本计算器](/src/栈相关/q224_基本计算器) +- [q232_用栈实现队列](/src/栈相关/q232_用栈实现队列) +- [q316_去除重复字母](/src/栈相关/q316_去除重复字母) -- [Question 215 : The Kth largest element in the array](/src/堆相关/q215_数组中的第K个最大元素) -- [Question 347 : Top K high frequency elements](/src/堆相关/q347_前K个高频元素) +### 堆相关 -### Recursion +- [q215_数组中的第K个最大元素](/src/堆相关/q215_数组中的第K个最大元素) +- [q347_前K个高频元素](/src/堆相关/q347_前K个高频元素) -- [Question 21 : Merge two ordered linked lists](/src/递归/q21_合并两个有序链表) -- [Question 101 : Symmetric binary tree](/src/递归/q101_对称二叉树) -- [Question 104 : Maximum Depth of Binary Tree](/src/递归/q104_二叉树的最大深度) -- [Question 226 : Flip binary tree](/src/递归/q226_翻转二叉树) -- [Question 236 : The nearest common ancestor of the binary tree](/src/递归/q236_二叉树的最近公共祖先) +### 递归 -### Divide and Conquer / Dichotomy +- [q21_合并两个有序链表](/src/递归/q21_合并两个有序链表) +- [q101_对称二叉树](/src/递归/q101_对称二叉树) +- [q104_二叉树的最大深度](/src/递归/q104_二叉树的最大深度) +- [q226_翻转二叉树](/src/递归/q226_翻转二叉树) +- [q236_二叉树的最近公共祖先](/src/递归/q236_二叉树的最近公共祖先) -- [Question 23 : Merge K sorted lists](/src/分治法/q23_合并K个排序链表) -- [Question 33 : Search rotating sorted array](/src/分治法/q33_搜索旋转排序数组) -- [Question 34 : Find the first and last position of an element in the sorted array](/src/分治法/q34_在排序数组中查找元素的第一个和最后一个位置) +### 分治法/二分法 -### Dynamic Programming +- [q23_合并K个排序链表](/src/分治法/q23_合并K个排序链表) +- [q33_搜索旋转排序数组](/src/分治法/q33_搜索旋转排序数组) +- [q34_在排序数组中查找元素的第一个和最后一个位置](/src/分治法/q34_在排序数组中查找元素的第一个和最后一个位置) -- [Question 5 : Longest palindrome substring](/src/动态规划/q5_最长回文子串) -- [Question 53 : Maximum Subsequence Sum](/src/动态规划/q53_最大子序和) -- [Question 62 : Different path](/src/动态规划/q62_不同路径) -- [Question 64 : Minimum path sum](/src/动态规划/q64_最小路径和) -- [Question 70 : Stair climbing](/src/动态规划/q70_爬楼梯) -- [Question 118 : Pascal's Triangle](/src/动态规划/q118_杨辉三角) -- [Question 300 : Longest Ascending Subsequence](/src/动态规划/q300_最长上升子序列) -- [Question 1143 : Longest common subsequence](/src/动态规划/q1143_最长公共子序列) -- [Question 1277 : Square submatrix with all 1s](/src/动态规划/q1277_统计全为1的正方形子矩阵) +### 动态规划 -### Backtracking +- [q5_最长回文子串](/src/动态规划/q5_最长回文子串) +- [q53_最大子序和](/src/动态规划/q53_最大子序和) +- [q62_不同路径](/src/动态规划/q62_不同路径) +- [q64_最小路径和](/src/动态规划/q64_最小路径和) +- [q70_爬楼梯](/src/动态规划/q70_爬楼梯) +- [q118_杨辉三角](/src/动态规划/q118_杨辉三角) +- [q300_最长上升子序列](/src/动态规划/q300_最长上升子序列) +- [q1143_最长公共子序列](/src/动态规划/q1143_最长公共子序列) +- [q1277_统计全为1的正方形子矩阵](/src/动态规划/q1277_统计全为1的正方形子矩阵) -- [Question 10 : Regular expression matching](/src/回溯法/q10_正则表达式匹配) -- [Question 22 : Bracket generation](/src/回溯法/q22_括号生成) -- [Question 40 : Combined sum 2](/src/回溯法/q40_组合总和2) -- [Question 46 : All permutation](/src/回溯法/q46_全排列) +### 回溯法 -### Tree Traversal +- [q10_正则表达式匹配](/src/回溯法/q10_正则表达式匹配) +- [q22_括号生成](/src/回溯法/q22_括号生成) +- [q40_组合总和2](/src/回溯法/q40_组合总和2) +- [q46_全排列](/src/回溯法/q46_全排列) -- [Question 94 : In-order traversal of binary tree](/src/树的遍历/q94_二叉树的中序遍历) -- [Question 102 : Binary tree traversal](/src/树的遍历/q102_二叉树的层次遍历) -- [Question 110 : Balanced binary tree](/src/树的遍历/q110_平衡二叉树) -- [Question 144 : Preorder traversal of binary tree](/src/树的遍历/q144_二叉树的前序遍历) -- [Question 145 : Post-order traversal of binary tree](/src/树的遍历/q145_二叉树的后序遍历) +### 树的遍历 -### Binary Search Trees +- [q94_二叉树的中序遍历](/src/树的遍历/q94_二叉树的中序遍历) +- [q102_二叉树的层次遍历](/src/树的遍历/q102_二叉树的层次遍历) +- [q110_平衡二叉树](/src/树的遍历/q110_平衡二叉树) +- [q144_二叉树的前序遍历](/src/树的遍历/q144_二叉树的前序遍历) +- [q145_二叉树的后序遍历](/src/树的遍历/q145_二叉树的后序遍历) -- [Question 98 : Verify Binary Search Tree](/src/二叉搜索树相关/q98_验证二叉搜索树) -- [Question 450 : Delete nodes in binary search tree](/src/二叉搜索树相关/q450_删除二叉搜索树中的节点) -- [Question 701 : Insert operation in binary search tree](/src/二叉搜索树相关/q701_二叉搜索树中的插入操作) +### 二叉搜索树相关 ---- +- [q98_验证二叉搜索树](/src/二叉搜索树相关/q98_验证二叉搜索树) +- [q450_删除二叉搜索树中的节点](/src/二叉搜索树相关/q450_删除二叉搜索树中的节点) +- [q701_二叉搜索树中的插入操作](/src/二叉搜索树相关/q701_二叉搜索树中的插入操作) -## Interview questions finishing +------- -- [Interview Questions Finishing](/Rocket.md) +## 面试问题整理 + +- [面试问题整理](/Rocket.md) diff --git a/README_EN.md b/README_EN.md new file mode 100644 index 0000000..1ae410b --- /dev/null +++ b/README_EN.md @@ -0,0 +1,131 @@ +# LeetCode Topics and Interview Questions Collection + +> [中文版](/README.md) + +## Subject Category + +### Hash + +- [Question 1 : Two Sum](/src/hash相关/q1_两数之和) +- [Question 387 : First Unique Character in a String](/src/hash相关/q387_字符串中的第一个唯一字符) + +### Linked List Operations + +- [Question 2 : Add Two Numbers](/src/链表操作/q2_两数相加) +- [Question 19 : Remove Nth Node From End of List](/src/链表操作/q19_删除链表的倒数第N个节点) +- [Question 25 : Reverse Nodes in k-Group](/src/链表操作/q25_k个一组翻转链表) +- [Question 61 : Rotate List](/src/链表操作/q61_旋转链表) +- [Question 138 : Copy List with Random Pointer](/src/链表操作/q138_复制带随机指针的链表) +- [Question 206 : Reverse Linked List](/src/链表操作/q206_反转链表) + +### Double Pointer Traversal / Sliding Window + +- [Question 3 : Longest Substring Without Repeating Characters](/src/双指针遍历/q3_无重复字符的最长子串) +- [Question 11 : Container With Most Water](/src/双指针遍历/q11_盛最多水的容器) +- [Question 15 : 3Sum](/src/双指针遍历/q15_三数之和) +- [Question 16 : 3Sum Closest](/src/双指针遍历/q16_最接近的三数之和) +- [Question 26 : Remove Duplicates from Sorted Array](/src/双指针遍历/q26_删除排序数组中的重复项) +- [Question 42 : Trapping Rain Water](/src/双指针遍历/q42_接雨水) +- [Question 121 : Best Time to Buy and Sell Stock](/src/双指针遍历/q121_买卖股票的最佳时机) +- [Question 209 : Minimum Size Subarray Sum](/src/双指针遍历/q209_长度最小的子数组) + +### Fast and Slow Pointer Traversal + +- [Question 141 : Linked List Cycle](/src/快慢指针遍历/q141_环形链表) +- [Question 202 : Happy Number](/src/快慢指针遍历/q202_快乐数) +- [Question 876 : Middle of the Linked List](/src/快慢指针遍历/q876_链表的中间结点) + +### Interval Merge + +- [Question 56 : Merge Intervals](/src/区间合并/q56_合并区间) + +### String Manipulation + +- [Question 6 : ZigZag Conversion](/src/字符串操作/q6_Z字形变换) +- [Question 14 : Longest Common Prefix](/src/字符串操作/q14_最长公共前缀) +- [Question 763 : Partition Labels](/src/字符串操作/q763_划分字母区间) + +### Digital Operations + +- [Question 7 : Reverse Integer](/src/数字操作/q7_整数反转) +- [Question 8 : String to Integer (atoi)](/src/数字操作/q8_字符串转换整数) +- [Question 9 : Palindrome Number](/src/数字操作/q9_回文数) +- [Question 43 : Multiply Strings](/src/数字操作/q43_字符串相乘) +- [Question 172 : Factorial Trailing Zeroes](/src/数字操作/q172_阶乘后的零) +- [Question 258 : Add Digits](/src/数字操作/q258_各位相加) + +### Array Operations + +- [Question 54 : Spiral Matrix](/src/数组操作/q54_螺旋矩阵) +- [Question 73 : Set Matrix Zeroes](/src/数组操作/q73_矩阵置零) +- [Question 78 : Subsets](/src/数组操作/q78_子集) +- [Question 384 : Shuffle an Array](/src/数组操作/q384_打乱数组) +- [Question 581 : Shortest Unsorted Continuous Subarray](/src/数组操作/q581_最短无序连续子数组) +- [Question 945 : Minimum Increment to Make Array Unique](/src/数组操作/q945_使数组唯一的最小增量) + +### Stack + +- [Question 20 : Valid Parentheses](/src/栈相关/q20_有效的括号) +- [Question 32 : Longest Valid Parentheses](/src/栈相关/q32_最长有效括号) +- [Question 155 : Min Stack](/src/栈相关/q155_最小栈) +- [Question 224 : Basic Calculator](/src/栈相关/q224_基本计算器) +- [Question 232 : Implement Queue using Stacks](/src/栈相关/q232_用栈实现队列) +- [Question 316 : Remove Duplicate Letters](/src/栈相关/q316_去除重复字母) + +### Heap + +- [Question 215 : Kth Largest Element in an Array](/src/堆相关/q215_数组中的第K个最大元素) +- [Question 347 : Top K Frequent Elements](/src/堆相关/q347_前K个高频元素) + +### Recursion + +- [Question 21 : Merge Two Sorted Lists](/src/递归/q21_合并两个有序链表) +- [Question 101 : Symmetric Tree](/src/递归/q101_对称二叉树) +- [Question 104 : Maximum Depth of Binary Tree](/src/递归/q104_二叉树的最大深度) +- [Question 226 : Invert Binary Tree](/src/递归/q226_翻转二叉树) +- [Question 236 : Lowest Common Ancestor of a Binary Tree](/src/递归/q236_二叉树的最近公共祖先) + +### Divide and Conquer / Dichotomy + +- [Question 23 : Merge k Sorted Lists](/src/分治法/q23_合并K个排序链表) +- [Question 33 : Search in Rotated Sorted Array](/src/分治法/q33_搜索旋转排序数组) +- [Question 34 : Find First and Last Position of Element in Sorted Array](/src/分治法/q34_在排序数组中查找元素的第一个和最后一个位置) + +### Dynamic Programming + +- [Question 5 : Longest Palindromic Substring](/src/动态规划/q5_最长回文子串) +- [Question 53 : Maximum Subarray](/src/动态规划/q53_最大子序和) +- [Question 62 : Unique Paths](/src/动态规划/q62_不同路径) +- [Question 64 : Minimum Path Sum](/src/动态规划/q64_最小路径和) +- [Question 70 : Climbing Stairs](/src/动态规划/q70_爬楼梯) +- [Question 118 : Pascal's Triangle](/src/动态规划/q118_杨辉三角) +- [Question 300 : Longest Increasing Subsequence](/src/动态规划/q300_最长上升子序列) +- [Question 1143 : Longest Common Subsequence](/src/动态规划/q1143_最长公共子序列) +- [Question 1277 : Count Square Submatrices with All One](/src/动态规划/q1277_统计全为1的正方形子矩阵) + +### Backtracking + +- [Question 10 : Regular Expression Matching](/src/回溯法/q10_正则表达式匹配) +- [Question 22 : Generate Parentheses](/src/回溯法/q22_括号生成) +- [Question 40 : Combination Sum II](/src/回溯法/q40_组合总和2) +- [Question 46 : Permutations](/src/回溯法/q46_全排列) + +### Tree Traversal + +- [Question 94 : Binary Tree Inorder Traversal](/src/树的遍历/q94_二叉树的中序遍历) +- [Question 102 : Binary Tree Level Order Traversal](/src/树的遍历/q102_二叉树的层次遍历) +- [Question 110 : Balanced Binary Tree](/src/树的遍历/q110_平衡二叉树) +- [Question 144 : Binary Tree Preorder Traversal](/src/树的遍历/q144_二叉树的前序遍历) +- [Question 145 : Binary Tree Postorder Traversal](/src/树的遍历/q145_二叉树的后序遍历) + +### Binary Search Trees + +- [Question 98 : Validate Binary Search Tree](/src/二叉搜索树相关/q98_验证二叉搜索树) +- [Question 450 : Delete Node in a BST](/src/二叉搜索树相关/q450_删除二叉搜索树中的节点) +- [Question 701 : Insert into a Binary Search Tree](/src/二叉搜索树相关/q701_二叉搜索树中的插入操作) + +--- + +## Interview questions finishing(CN) + +- [Interview Questions Finishing](/Rocket.md)