我的 LeetCode 刷题之旅
前言
其实,自己一开始刷题的目的就想跟封面图一样——装个 B,但是刷着刷着确实发现刷题是有乐趣的,而且在未看答案的情况下能成功写出题解,确实会给自己带来一些成就感,因此也就坚持下来了。
为了更加方便地去管理自己刷过的题目,方便自己在下一次重刷的时候能够对上一次的题解进行优化,遂有了这个项目。
01. Array
| # | Title | Difficulty | Tags | Note | C++ | Java | Python |
|---|---|---|---|---|---|---|---|
| 1 | Two Sum | Easy | array,hash table | [1], [2] | solution | ||
| 4 | Median of Two Sorted Arrays | Hard | array,divide and conquer,binary search | [1],[2],[3],[4] | |||
| 11 | Container With Most Water | Medium | array,two pointers | [1],[2] | |||
| 15 | 3Sum | Medium | array,hash table,two pointers | [1],[2],[3] | |||
| 16 | 3Sum Closest | Medium | array,two pointers | [1] | |||
| 26 | Remove Duplicates From Sorted Array | Easy | array | [1] | |||
| 33 | Search in Rotated Sorted Array | Medium | array,binary search | [1] | |||
| 46 | Permutations | Medium | array,backtracking | [1],[2] | |||
| 47 | Permutations II | Medium | array,backtracking | [1] | |||
| 54 | Spiral Matrix | Medium | array | [1],[2] | |||
| 56 | Merge Intevals | Medium | array | [1] | |||
| 59 | Spiral Matrix II | Medium | array | [1] | |||
| 66 | Plus One | Easy | array | [1] | |||
| 78 | Subsets | Medium | array,backtracking,bit manipulation | [1],[2],[3] | |||
| 88 | Merge Sorted Array | Easy | array,two pointers | [1] | |||
| 89 | Gray Code | Medium | array | [1] | |||
| 90 | Subsets II | Medium | array,backtracking | [1] | |||
| 136 | Single Number | Easy | array,hash table,bit manipulation | [1],[2],[3],[4] | |||
| 153 | Find Minimum in Rotated Sorted Array | array,binary search | [1] | ||||
| 167 | Two Sum II - Input Array is Sorted | Easy | array,binary search,two pointers,hash table | [1],[2],[3] | |||
| 169 | Majority Element | Easy | array,hash table,bit manipulation | link | [1],[2],[3] | ||
| 215 | Kth Largest Element in an Array | Medium | array,heap,divide and conquer | [1],[2],[3],[4] | |||
| 217 | Contains Duplicate | Easy | array,hash table | [1],[2],[3] | |||
| 238 | Product of Array Except Self | Medium | array | [1],[2] | |||
| 239 | Sliding Window Maximum | Hard | array,heap,dp | [1],[2],[3] | |||
| 283 | Move Zeros | Easy | array | [1],[2],[3] | |||
| 289 | Game of Life | Medium | array | [1],[2] | |||
| 349 | Intersection of Two Arrays | Easy | array | link | [1],[2],[3] | ||
| 350 | Intersection of Two Arrays II | Easy | array,hash table,two pointers | link | [1],[2] | ||
| 525 | Contiguous Array | Medium | array,hash table | [1],[2] | |||
| 560 | Subarray Sum Equals K | Medium | array,hash table | [1],[2],[3],[4] | |||
| 695 | Max Area of Island | Medium | array,dfs,bfs | [1] | |||
| 704 | Binary Search | Easy | array,binary search | [1] | |||
| 724 | Find Pivot Index | Easy | array | [1] | |||
| 744 | Find Smallest Letter Greater Than Target | Easy | array,binary search | [1],[2] | |||
| 747 | Largest Number at Least Twice of Others | Easy | array | [1] | |||
| 912 | Sort an Array | Medium | array | [1],[2],[3] | |||
| 945 | Minimum Increment to Make Array Uniques | Medium | array | [1],[2],[3] | |||
| 994 | Rotting Oranges | Easy | array,bfs | [1] | |||
| 1013 | Partition Array Into Three Parts With Equal Sum | Easy | array | [1] | |||
| 1160 | Find Words That Can be Formed by Characters | Easy | array,hash table | [1] | |||
| 1162 | As Far From Land as Possible | Easy | array,bfs,dfs | [1] | |||
| 1426 | Counting Elements | Easy | array,hash table | [1],[2] |
02. String
| # | Title | Difficulty | Tags | Note | C++ | Java | Python |
|---|---|---|---|---|---|---|---|
| 3 | Longest Substring Without Repeating Characters | Medium | string,hash table,two pointers | [1],[2],[3],[4] | |||
| 8 | String to Integer (atoi) | Medium | string,math | [1],[2] | |||
| 14 | Longest Common Prefix | Easy | string,two pointers,binary search,divide and conquer | [1],[2],[3] | |||
| 20 | Valid Parentheses | Easy | string,stack | link | [1] | ||
| 22 | Generate Parentheses | Medium | string,backtracking,bfs,dfs | [1],[2],[3],[4] | |||
| 43 | Multiply Strings | Medium | string,math | [1] | |||
| 151 | Reverse Words in a String | Medium | string,two pointers | [1],[2],[3] | |||
| 186 | Reverse Words in a String II | Medium | string,two pointers | [1] | |||
| 344 | Reverse String | Easy | string,two pointers | [1] | |||
| 409 | Longest Palindrome | Easy | string,hash table | [1] | |||
| 557 | Reverse Words in a String III | Easy | string | [1],[2] | |||
| 678 | Valid Parenthesis String | Medium | string,dp,greedy | [1],[2],[3] | |||
| 844 | Backspace String Compare | Medium | string,stack,two pointers | [1],[2] | |||
| 890 | Find and Replace Pattern | Medium | string | [1],[2],[3] | |||
| 1111 | Maximum Nesting Depth of Two Valid Parentheses Strings | Medium | string | [1] | |||
| 1427 | Perform String Shifts | Easy | string | [1] |
03. Linked List
| # | Title | Difficulty | Tags | Note | C++ | Java | Python |
|---|---|---|---|---|---|---|---|
| 2 | Add Two Numbers | Medium | linked list | link | [1],[2] | ||
| 19 | Remove Nth Node From End of List | Medium | linked list | [1] | |||
| 21 | Merge Two Sorted Lists | Easy | linked list | link | [1],[2] | ||
| 23 | Merge k Sorted Lists | Hard | linked list | [1],[2],[3],[4],[5],[6] | |||
| 24 | Swap Nodes in Pairs | Medium | linked list | [1],[2] | |||
| 61 | Rotate List | Medium | linked list | [1] | |||
| 141 | Linked List Cycle | Easy | linked list | link | [1],[2] | ||
| 142 | Linked List Cycle II | Medium | linked list | link | [1],[2] | ||
| 148 | Sort List | Medium | linked list | [1],[2] | |||
| 160 | Intersection of Two Linked List | Easy | linked list | link | [1],[2] | ||
| 203 | Remove Linked List Elements | Easy | linked list | [1] | |||
| 206 | Reverse Linked List | Easy | linked list | link | [1],[2] | ||
| 237 | Delete Node in a Linked List | Easy | linked list | link | [1] | ||
| 876 | Middle of the Linked List | Easy | linked list | [1] |
04. Tree
| # | Title | Difficulty | Tags | Note | C++ | Java | Python |
|---|---|---|---|---|---|---|---|
| 94 | Binary Tree Inorder Traversal | Medium | tree,dfs | link | [1],[2],[3] | ||
| 98 | Validate Binary Search Tree | Medium | tree,dfs | [1],[2],[3] | |||
| 102 | Binary Tree Level Order Traversal | Medium | tree,bfs,dfs | [1],[2] | |||
| 103 | Binary Tree Zigzag Level Order Traversal | Medium | tree,bfs,dfs | [1],[2] | |||
| 104 | Maximum Depth of Binary Tree | Easy | tree,bfs | [1],[2],[3] | |||
| 111 | Minimum Depth of Binary Tree | Easy | tree,bfs | [1],[2] | |||
| 124 | Binary Tree Maximum Path Sum | Hard | tree | [1],[2] | |||
| 144 | Binary Tree Preorder Traversal | Medium | tree,dfs | link | [1],[2] | ||
| 145 | Binary Tree Postorder Traversal | Hard | tree,dfs | [1],[2] | |||
| 226 | Invert Binary Tree | Easy | tree,bfs,dfs | [1],[2],[3] | |||
| 230 | Kth Smallest Element in a BST | Medium | tree,bfs | [1],[2] | |||
| 235 | Lowest Common Ancestor of a Binary Search Tree | Easy | tree | [1],[2] | |||
| 236 | Lowest Common Ancestor of a Binary Tree | Medium | tree,dfs | [1],[2],[3] | |||
| 543 | Diameter of Binary Tree | Easy | tree,dfs | [1],[2] | |||
| 1008 | Construct Binary Search Tree From Preorder Traversal | Medium | tree | [1],[2],[3] |
05. Stack & Queue
| # | Title | Difficulty | Tags | Note | C++ | Java | Python |
|---|---|---|---|---|---|---|---|
| 255 | Implement Stack using Queues | Easy | stack,queue,design | [1],[2],[3] | |||
| 232 | Implement Queue using Stacks | Easy | stack,queue,design | [1],[2] | |||
| 496 | Next Greater Element I | Easy | stack,map | [1],[2] | |||
| 682 | Baseball Game | Easy | stack | [1] |
06. Heap & Priority Queue
| # | Title | Difficulty | Tags | Note | C++ | Java | Python |
|---|---|---|---|---|---|---|---|
| 347 | Top K Frequent Elements | Medium | heap,hash table | [1] | |||
| 692 | Top K Frequent Words | Medium | heap,hash table,trie | [1],[2],[3],[4] | |||
| 703 | Kth Largest Element in a Stream | Easy | heap | [1] | |||
| 1046 | Last Stone Weight | Easy | heap | [1] |
07. Math & Digit
| # | Title | Difficulty | Tags | Note | C++ | Java | Python |
|---|---|---|---|---|---|---|---|
| 7 | Reverse Integer | Easy | math | link | [1] | ||
| 9 | Palindrome Number | Easy | math | link | [1] | ||
| 136 | Single Number | Easy | math,bit manipulation | link | [1],[2],[3] | ||
| 169 | Majority Element | Easy | math,array | link | [1],[2],[3] | ||
| 231 | Power of Two | Easy | math,bit manipulation | link | [1],[2],[3] | ||
| 365 | Water And Jug Problem | Medium | math,bfs,dfs | [1],[2],[3] | |||
| 836 | Rectangle Overlap | Easy | math | [1],[2] | |||
| 892 | Surface Area of 3D Shapes | Easy | math | [1] | |||
| 1103 | Distribute Candies to People | Easy | math | [1],[2] |
08. DP
| # | Title | Difficulty | Tags | Note | C++ | Java | Python |
|---|---|---|---|---|---|---|---|
| 5 | Longest Palindromic Substring | Medium | dp,string | [1],[2],[3],[4],[5],[6] | |||
| 53 | Maximum Subarray | Easy | dp,array,divide and conquer | [1],[2],[3],[4] | |||
| 55 | Jump Game | Medium | dp,array,greedy | [1],[2],[3],[4] | |||
| 70 | Climbing Stairs | Easy | dp | [1],[2],[3],[4],[5],[6] | |||
| 72 | Edit Distance | Hard | dp | [1],[2] | |||
| 120 | Triangle | Medium | dp,array | [1] | |||
| 121 | Best Time to Buy and Sell Stock | Easy | dp | [1],[2] | |||
| 122 | Best Time to Buy and Sell Stock II | Easy | dp | [1] | |||
| 132 | Palindrome Partitioning II | Hard | dp,string | [1],[2],[3],[4] | |||
| 300 | (Length of) Longest Increaing Subsequence | Medium | dp,array,bianry search | [1],[2],[3],[4],[5] | |||
| 322 | Coin Change | Medium | dp | [1],[2],[3] | |||
| 343 | Integer Break | Medium | dp,math | [1] | |||
| 516 | (Length) of Longest Palindromic Subsequence | Medium | dp,string | [1],[2],[3],[4],[5] | |||
| 887 | Super Egg Drop | Hard | dp,math,binary search | [1] | |||
| 1143 | Longest Common Subsequence | Medium | dp,string | [1],[2],[3],[4] | |||
| 1312 | Minimum Insertion Steps to Make a String Palindromic | Hard | dp,string | [1] |
09. Design
| # | Title | Difficulty | Tags | Note | C++ | Java | Python |
|---|---|---|---|---|---|---|---|
| 146 | LRU Cache | Medium | design | [1],[2] | |||
| 155 | Min Stack | Easy | design,stack | [1],[2] | |||
| 460 | LFU Cache | Hard | design | [1] | |||
| 1429 | First Unique Number | Medium | design | [1] |
10. Others
| # | Title | Difficulty | Tags | Note | C++ | Java | Python |
|---|---|---|---|---|---|---|---|
| 412 | Fizz Buzz | Easy | [1],[2],[3] |

Formed in 2009, the Archive Team (not to be confused with the archive.org Archive-It Team) is a rogue archivist collective dedicated to saving copies of rapidly dying or deleted websites for the sake of history and digital heritage. The group is 100% composed of volunteers and interested parties, and has expanded into a large amount of related projects for saving online and digital history.

