The number of LeetCode questions is increasing every week. For more questions and solutions, you can see my LintCode repository. I'll keep updating for full summary and better solutions. Stay tuned for updates. (Notes: "📖" means you need to subscribe to LeetCode premium membership for the access to premium questions.)
- Bit Manipulation
- Array
- String
- Linked List
- Stack
- Queue
- Heap
- Tree
- Hash Table
- Math
- Two Pointers
- Sort
- Recursion
- Binary Search
- Binary Search Tree
- Breadth-First Search
- Depth-First Search
- Backtracking
- Dynamic Programming
- Greedy
- Design
| # | Title | Solution | Time | Space | Difficulty | Tag | Note |
|---|---|---|---|---|---|---|---|
| 2 | Add Two Numbers | C++Python | O(n) | O(1) | Medium | ||
| 21 | Merge Two Sorted Lists | C++Python | O(n) | O(1) | Easy | ||
| 23 | Merge k Sorted Lists | C++Python | O(nlogk) | O(1) | Hard | Heap, Divide and Conquer | |
| 24 | Swap Nodes in Pairs | C++Python | O(n) | O(1) | Easy | ||
| 25 | Reverse Nodes in k-Group | C++Python | O(n) | O(1) | Hard | ||
| 61 | Rotate List | C++Python | O(n) | O(1) | Medium | ||
| 82 | Remove Duplicates from Sorted List II | C++Python | O(n) | O(1) | Medium | ||
| 83 | Remove Duplicates from Sorted List | C++Python | O(n) | O(1) | Easy | ||
| 92 | Reverse Linked List II | C++Python | O(n) | O(1) | Medium | ||
| 138 | Copy List with Random Pointer | C++Python | O(n) | O(1) | Hard | ||
| 160 | Intersection of Two Linked Lists | C++Python | O(m + n) | O(1) | Easy | ||
| 203 | Remove Linked List Elements | C++Python | O(n) | O(1) | Easy | ||
| 206 | Reverse Linked List | C++Python | O(n) | O(1) | Easy | ||
| 234 | Palindrome Linked List | C++Python | O(n) | O(1) | Easy | ||
| 237 | Delete Node in a Linked List | C++Python | O(1) | O(1) | Easy | LintCode | |
| 328 | Odd Even Linked List | C++Python | O(n) | O(1) | Medium | ||
| 369 | Plus One Linked List | C++Python | O(n) | O(1) | Medium | 📖 | Two Pointers |
| 445 | Add Two Numbers II | C++Python | O(m + n) | O(m + n) | Medium |
| # | Title | Solution | Time | Space | Difficulty | Tag | Note |
|---|---|---|---|---|---|---|---|
| 239 | Sliding Window Maximum | C++Python | O(n) | O(k) | Hard | EPI, LintCode | |
| 281 | Zigzag Iterator | C++Python | O(n) | O(k) | Medium | 📖 | |
| 346 | Moving Average from Data Stream | C++Python | O(1) | O(w) | Easy | 📖 |
| # | Title | Solution | Time | Space | Difficulty | Tag | Note |
|---|---|---|---|---|---|---|---|
| 264 | Ugly Number II | C++Python | O(n) | O(1) | Medium | CTCI, LintCode | BST, Heap |
| 295 | Find Median from Data Stream | C++Python | O(nlogn) | O(n) | Hard | EPI, LintCode | BST, Heap |
| 313 | Super Ugly Number | C++Python | O(n * k) | O(n + k) | Medium | BST, Heap | |
| 358 | Rearrange String k Distance Apart | C++Python | O(n) | O(n) | Hard | 📖 | Greedy, Heap |
| 373 | Find K Pairs with Smallest Sums | C++Python | O(k * log(min(n, m, k))) | O(min(n, m, k)) | Medium | ||
| 378 | Kth Smallest Element in a Sorted Matrix | C++Python | O(k * log(min(n, m, k))) | O(min(n, m, k)) | Medium | LintCode | |
| 407 | Trapping Rain Water II | C++Python | O(m * n * (logm + logn)) | O(m * n) | Hard | LintCode |
| # | Title | Solution | Time | Space | Difficulty | Tag | Note |
|---|---|---|---|---|---|---|---|
| 94 | Binary Tree Inorder Traversal | C++Python | O(n) | O(1) | Medium | Morris Traversal | |
| 99 | Recover Binary Search Tree | C++Python | O(n) | O(1) | Hard | Morris Traversal | |
| 144 | Binary Tree Preorder Traversal | C++Python | O(n) | O(1) | Medium | Morris Traversal | |
| 145 | Binary Tree Postorder Traversal | C++Python | O(n) | O(1) | Hard | Morris Traversal | |
| 208 | Implement Trie (Prefix Tree) | C++Python | O(n) | O(1) | Medium | Trie | |
| 211 | Add and Search Word - Data structure design | C++Python | O(min(n, h)) | O(min(n, h)) | Medium | Trie, DFS | |
| 226 | Invert Binary Tree | C++Python | O(n) | O(h), O(w) | Easy | ||
| 297 | Serialize and Deserialize Binary Tree | C++Python | O(n) | O(h) | Hard | LintCode | DFS |
| 307 | Range Sum Query - Mutable | C++Python | ctor: O(n), update: O(logn), query: O(logn) | O(n) | Medium | LintCode | DFS, Segment Tree, BIT |
| 308 | Range Sum Query 2D - Mutable | C++Python | ctor: O(m * n), update: O(logm + logn), query: O(logm + logn) | O(m * n) | Hard | 📖 | DFS, Segment Tree, BIT |
| 315 | Count of Smaller Numbers After Self | C++Python | O(nlogn) | O(n) | Hard | LintCode | BST, BIT, Divide and Conquer |
| 652 | Find Duplicate Subtrees | C++Python | O(n) | O(n) | Medium | DFS, Hash | |
| 653 | Two Sum IV - Input is a BST | C++Python | O(n) | O(h) | Easy | Two Pointers | |
| 654 | Maximum Binary Tree | C++Python | O(n) | O(n) | Medium | LintCode | Descending Stack |
| 655 | Print Binary Tree | C++Python | O(n) | O(h) | Medium | ||
| 662 | Maximum Width of Binary Tree | C++Python | O(n) | O(h) | Medium | DFS | |
| 663 | Equal Tree Partition | C++Python | O(n) | O(n) | Medium | 📖 | Hash |
| 677 | Map Sum Pairs | C++Python | O(n) | O(t) | Medium | Trie |
| # | Title | Solution | Time | Space | Difficulty | Tag | Note |
|---|---|---|---|---|---|---|---|
| 56 | Merge Intervals | C++Python | O(nlogn) | O(1) | Hard | ||
| 57 | Insert Interval | C++Python | O(n) | O(1) | Hard | ||
| 75 | Sort Colors | C++Python | O(n) | O(1) | Medium | Tri Partition | |
| 88 | Merge Sorted Array | C++Python | O(n) | O(1) | Easy | ||
| 147 | Insertion Sort List | C++Python | O(n^2) | O(1) | Medium | ||
| 148 | Sort List | C++Python | O(nlogn) | O(logn) | Medium | ||
| 164 | Maximum Gap | C++Python | O(n) | O(n) | Hard | Tricky | |
| 179 | Largest Number | C++Python | O(nlogn) | O(1) | Medium | ||
| 218 | The Skyline Problem | C++Python | O(nlogn) | O(n) | Hard | Sort, BST | |
| 252 | Meeting Rooms | C++Python | O(nlogn) | O(n) | Easy | 📖 | |
| 253 | Meeting Rooms II | C++Python | O(nlogn) | O(n) | Medium | 📖 | |
| 274 | H-Index | C++Python | O(n) | O(n) | Medium | Counting Sort | |
| 280 | Wiggle Sort | C++Python | O(n) | O(1) | Medium | 📖 | |
| 324 | Wiggle Sort II | C++Python | O(n) on average | O(1) | Medium | variant of Sort Colors | Tri Partition |
| 347 | Top K Frequent Elements | C++Python | O(n) on average | O(n) | Medium | Quick Select, Heap | |
| 406 | Queue Reconstruction by Height | C++Python | O(n * sqrt(n)) | O(n) | Medium | ||
| 451 | Sort Characters By Frequency | C++Python | O(n) | O(n) | Medium |
| # | Title | Solution | Time | Space | Difficulty | Tag | Note |
|---|---|---|---|---|---|---|---|
| 19 | Remove Nth Node From End of List | C++Python | O(n) | O(1) | Easy | ||
| 86 | Partition List | C++Python | O(n) | O(1) | Medium | ||
| 141 | Linked List Cycle | C++Python | O(n) | O(1) | Easy | ||
| 142 | Linked List Cycle II | C++Python | O(n) | O(1) | Medium | ||
| 143 | Reorder List | C++Python | O(n) | O(1) | Medium | ||
| 167 | Two Sum II - Input array is sorted | C++Python | O(n) | O(1) | Medium | ||
| 259 | 3Sum Smaller | C++Python | O(n^2) | O(1) | Medium | 📖, LintCode | |
| 283 | Move Zeroes | C++Python | O(n) | O(1) | Easy | ||
| 287 | Find the Duplicate Number | C++Python | O(n) | O(1) | Hard | Binary Search, Two Pointers | |
| 344 | Reverse String | C++Python | O(n) | O(1) | Easy | ||
| 345 | Reverse Vowels of a String | C++Python | O(n) | O(1) | Easy | ||
| 349 | Intersection of Two Arrays | C++Python | O(m + n) | O(min(m, n)) | Easy | EPI | Hash, Binary Search |
| 350 | Intersection of Two Arrays II | C++Python | O(m + n) | O(1) | Easy | EPI | Hash, Binary Search |
| 360 | Sort Transformed Array | C++Python | O(n) | O(1) | Medium | 📖 | |
| 457 | Circular Array Loop | C++Python | O(n) | O(1) | Medium |
| # | Title | Solution | Time | Space | Difficulty | Tag | Note |
|---|---|---|---|---|---|---|---|
| 220 | Contains Duplicate III | C++Python | O(nlogk) | O(k) | Medium | ||
| 230 | Kth Smallest Element in a BST | C++Python | O(max(h, k)) | O(min(h, k)) | Medium | ||
| 235 | Lowest Common Ancestor of a Binary Search Tree | C++Python | O(h) | O(1) | Easy | EPI | |
| 270 | Closest Binary Search Tree Value | C++Python | O(h) | O(1) | Easy | 📖 | |
| 285 | Inorder Successor in BST | C++Python | O(h) | O(1) | Medium | 📖 | |
| 352 | Data Stream as Disjoint Intervals | C++Python | O(logn) | O(n) | Hard | ||
| 449 | Serialize and Deserialize BST | C++Python | O(n) | O(h) | Medium | ||
| 450 | Delete Node in a BST | C++Python | O(h) | O(h) | Medium |
| # | Title | Solution | Time | Space | Difficulty | Tag | Note |
|---|---|---|---|---|---|---|---|
| 17 | Letter Combinations of a Phone Number | Python | O(n * 4^n) | O(n) | Medium | ||
| 22 | Generate Parentheses | Python | O(4^n / n^(3/2)) | O(n) | Medium | ||
| 37 | Sudoku Solver | Python | O((9!)^9) | O(1) | Hard | ||
| 39 | Combination Sum | Python | O(k * n^k) | O(k) | Medium | ||
| 40 | Combination Sum II | Python | O(k * C(n, k)) | O(k) | Medium | ||
| 46 | Permutations | Python | O(n * n!) | O(n) | Medium | ||
| 47 | Permutations II | Python | O(n * n!) | O(n) | Medium | ||
| 51 | N-Queens | Python | O(n!) | O(n) | Hard | ||
| 52 | N-Queens-II | Python | O(n!) | O(n) | Hard | ||
| 77 | Combinations | Python | O(n!) | O(n) | Medium | ||
| 79 | Word Search | Python | O(m * n * l) | O(l) | Medium | ||
| 93 | Restore IP Addresses | Python | O(1) | O(1) | Medium | ||
| 78 | Subsets | C++Python | O(n * 2^n) | O(1) | Medium | ||
| 90 | Subsets II | C++Python | O(n * 2^n) | O(1) | Medium | ||
| 126 | Word Ladder II | Python | O(n * d) | O(d) | Hard | ||
| 131 | Palindrome Partitioning | Python | O(n^2) ~ O(2^n) | O(n^2) | Medium | ||
| 140 | Word Break II | C++Python | O(n * l^2 + n * r) | O(n^2) | Hard | ||
| 212 | Word Search II | C++Python | O(m * n * l) | O(l) | Hard | LintCode | Trie, DFS |
| 216 | Combination Sum III | C++Python | O(k * C(n, k)) | O(k) | Medium | ||
| 254 | Factor Combinations | C++Python | O(nlogn) | O(logn) | Medium | 📖 | |
| 267 | Palindrome Permutation II | C++Python | O(n * n!) | O(n) | Medium | 📖 | |
| 291 | Word Pattern II | C++Python | O(n * C(n - 1, c - 1)) | O(n + c) | Hard | 📖 | |
| 294 | Flip Game II | C++Python | O(n + c^2) | O(c) | Medium | 📖 | DP, Hash |
| 320 | Generalized Abbreviation | C++Python | O(n * 2^n) | O(n) | Medium | 📖 | |
| 425 | Word Squares | C++Python | O(n^2 * n!) | O(n^2) | Hard | 📖 | |
| 676 | Implement Magic Dictionary | C++Python | O(n) | O(d) | Medium | Trie, DFS | |
| 679 | 24 Game | C++Python | O(1) | O(1) | Hard | DFS |
| # | Title | Solution | Time | Space | Difficulty | Tag | Note |
|---|---|---|---|---|---|---|---|
| 146 | LRU Cache | C++Python | O(1) | O(k) | Hard | ||
| 225 | Implement Stack using Queues | C++Python | push: O(n), pop: O(1), top: O(1) | O(n) | Easy | ||
| 284 | Peeking Iterator | C++Python | O(1) | O(1) | Medium | ||
| 348 | Design Tic-Tac-Toe | C++Python | O(1) | O(n^2) | Medium | 📖 | |
| 353 | Design Snake Game | C++Python | O(1) | O(s) | Medium | 📖 | Deque |
| 355 | Design Twitter | C++Python | O(klogu) | O(t + f) | Medium | LintCode | Heap |
| 359 | Logger Rate Limiter | C++Python | O(1), amortized | O(k) | Easy | 📖 | Deque |
| 362 | Design Hit Counter | C++Python | O(1), amortized | O(k) | Medium | 📖 | Deque |
| 379 | Design Phone Directory | C++Python | O(1) | O(n) | Medium | 📖 | |
| 380 | Insert Delete GetRandom O(1) | C++Python | O(1) | O(n) | Hard | ||
| 381 | Insert Delete GetRandom O(1) - Duplicates allowed | C++Python | O(1) | O(n) | Hard | ||
| 432 | All O`one Data Structure | C++Python | O(1) | O(n) | Hard | ||
| 460 | LFU Cache | C++Python | O(1) | O(k) | Hard |
| # | Title | Solution | Time | Space | Difficulty | Tag | Note |
|---|---|---|---|---|---|---|---|
| 175 | Combine Two Tables | MySQL | O(m + n) | O(m + n) | Easy | ||
| 176 | Second Highest Salary | MySQL | O(n) | O(1) | Easy | ||
| 177 | Nth Highest Salary | MySQL | O(n^2) | O(n) | Medium | ||
| 178 | Rank Scores | MySQL | O(n^2) | O(n) | Medium | ||
| 180 | Consecutive Numbers | MySQL | O(n) | O(n) | Medium | ||
| 181 | Employees Earning More Than Their Managers | MySQL | O(n^2) | O(1) | Easy | ||
| 182 | Duplicate Emails | MySQL | O(n^2) | O(n) | Easy | ||
| 183 | Customers Who Never Order | MySQL | O(n^2) | O(1) | Easy | ||
| 184 | Department Highest Salary | MySQL | O(n^2) | O(n) | Medium | ||
| 185 | Department Top Three Salaries | MySQL | O(n^2) | O(n) | Hard | ||
| 196 | Delete Duplicate Emails | MySQL | O(n^2) | O(n) | Easy | ||
| 197 | Rising Temperature | MySQL | O(n^2) | O(n) | Easy | ||
| 262 | Trips and Users | MySQL | O((t * u) + tlogt) | O(t) | Hard |
| # | Title | Solution | Time | Space | Difficulty | Tag | Note |
|---|---|---|---|---|---|---|---|
| 192 | Word Frequency | Shell | O(n) | O(k) | Medium | ||
| 193 | Valid Phone Numbers | Shell | O(n) | O(1) | Easy | ||
| 194 | Transpose File | Shell | O(n^2) | O(n^2) | Medium | ||
| 195 | Tenth Line | Shell | O(n) | O(1) | Easy |