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
- Graph
- Geometry
- Simulation
- Design
- C++
- Python
| # | 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 | 📖 | |
| 862 | Shortest Subarray with Sum at Least K | C++Python | O(n) | O(n) | Hard |
| # | 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 | |
| 632 | Smallest Range | C++Python | O(nlogk) | O(k) | Hard | ||
| 846 | Hand of Straights | C++Python | O(nlogn) | O(n) | Medium | ||
| 855 | Exam Room | C++Python | seat: O(logn) leave: O(logn) | O(n) | Medium | BST, Hash | |
| 857 | Minimum Cost to Hire K Workers | C++Python | O(nlogn) | O(n) | Hard | Sort | |
| 871 | Minimum Number of Refueling Stops | C++Python | O(nlogn) | O(n) | Hard | Sort |
| # | Title | Solution | Time | Space | Difficulty | Tag | Note |
|---|---|---|---|---|---|---|---|
| 056 | Merge Intervals | C++Python | O(nlogn) | O(1) | Hard | ||
| 057 | Insert Interval | C++Python | O(n) | O(1) | Hard | ||
| 075 | Sort Colors | C++Python | O(n) | O(1) | Medium | Tri Partition | |
| 088 | 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) | O(n) | Medium | Quick Select, Heap, Bucket Sort | |
| 406 | Queue Reconstruction by Height | C++Python | O(n * sqrt(n)) | O(n) | Medium | Tricky | |
| 451 | Sort Characters By Frequency | C++Python | O(n) | O(n) | Medium | ||
| 692 | Top K Frequent Words | C++Python | O(n + klogk) on average | O(n) | Medium | Quick Select, Heap, Bucket Sort |
| # | 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 | ||
| 530 | Minimum Absolute Difference in BST | C++Python | O(n) | O(h) | Easy | ||
| 776 | Split BST | C++Python | O(n) | O(h) | Medium | 📖 | |
| 783 | Minimum Distance Between BST Nodes | C++Python | O(n) | O(h) | Easy |
| # | Title | Solution | Time | Space | Difficulty | Tag | Note |
|---|---|---|---|---|---|---|---|
| 102 | Binary Tree Level Order Traversal | C++Python | O(n) | O(n) | Easy | ||
| 107 | Binary Tree Level Order Traversal II | Python | O(n) | O(n) | Easy | ||
| 103 | Binary Tree Zigzag Level Order Traversal | Python | O(n) | O(n) | Medium | ||
| 117 | Populating Next Right Pointers in Each Node II | Python | O(n) | O(1) | Hard | ||
| 127 | Word Ladder | Python | O(n * d) | O(d) | Medium | ||
| 130 | Surrounded Regions | C++Python | O(m * n) | O(m + n) | Medium | ||
| 133 | Clone Graph | Python | O(n) | O(n) | Medium | ||
| 207 | Course Schedule | Python | O(|V| + |E|) | O(|E|) | Medium | Topological Sort | |
| 210 | Course Schedule II | Python | O(|V| + |E|) | O(|E|) | Medium | Topological Sort | |
| 261 | Graph Valid Tree | C++Python | O(|V| + |E|) | O(|V| + |E|) | Medium | 📖 | |
| 269 | Alien Dictionary | C++Python | O(n) | O(1) | Hard | 📖 | Topological Sort, BFS, DFS |
| 286 | Walls and Gates | C++Python | O(m * n) | O(g) | Medium | 📖 | |
| 310 | Minimum Height Trees | C++Python | O(n) | O(n) | Medium | ||
| 317 | Shortest Distance from All Buildings | C++Python | O(k * m * n) | O(m * n) | Hard | 📖 | |
| 433 | Minimum Genetic Mutation | C++Python | O(n * b) | O(b) | Medium | ||
| 444 | Sequence Reconstruction | C++Python | O(n * s) | O(n) | Medium | 📖 | Topological Sort |
| 542 | 01 Matrix | C++Python | O(m * n) | O(m * n) | Medium | DP | |
| 666 | Path Sum IV | C++Python | O(n) | O(w) | Medium | 📖 | Topological Sort |
| 675 | Cut Off Trees for Golf Event | C++Python | O(t * m * n) | O(m * n) | Hard | A* Search Algorithm | |
| 742 | Closest Leaf in a Binary Tree | C++Python | O(n) | O(n) | Medium | ||
| 743 | Network Delay Time | C++Python | O(|E| * log|V|) | O(|E|) | Medium | Dijkstra's algorithm | |
| 752 | Open the Lock | C++Python | O(k * n^k + d) | O(k * n^k + d) | Medium | ||
| 773 | Sliding Puzzle | C++Python | O((m * n) * (m * n)!) | O((m * n) * (m * n)!) | Hard | A* Search Algorithm | |
| 787 | Cheapest Flights Within K Stops | C++Python | O(|E| * log|V|) | O(|E|) | Medium | Dijkstra's algorithm | |
| 815 | Bus Routes | C++Python | O(|E| + |V|) | O(|E| + |V|) | Hard | ||
| 854 | K-Similar Strings | C++Python | O(n * n!/(c_a!*...*c_z!)) | O(n * n!/(c_a!*...*c_z!)) | Hard | ||
| 865 | Shortest Path to Get All Keys | C++Python | O(k * r * c + k^3*2^k) | O(k*2^k) | Hard | Dijkstra's algorithm | |
| 882 | Reachable Nodes In Subdivided Graph | C++Python | O(|E| * log|V|) | O(|E|) | Hard | Dijkstra's algorithm | |
| 886 | Possible Bipartition | C++Python | O(|V| + |E|) | O(|V| + |E|) | Medium |
| # | Title | Solution | Time | Space | Difficulty | Tag | Note |
|---|---|---|---|---|---|---|---|
| 017 | Letter Combinations of a Phone Number | Python | O(n * 4^n) | O(n) | Medium | ||
| 022 | Generate Parentheses | Python | O(4^n / n^(3/2)) | O(n) | Medium | ||
| 037 | Sudoku Solver | Python | O((9!)^9) | O(1) | Hard | ||
| 039 | Combination Sum | Python | O(k * n^k) | O(k) | Medium | ||
| 040 | Combination Sum II | Python | O(k * C(n, k)) | O(k) | Medium | ||
| 046 | Permutations | Python | O(n * n!) | O(n) | Medium | ||
| 047 | Permutations II | Python | O(n * n!) | O(n) | Medium | ||
| 051 | N-Queens | Python | O(n!) | O(n) | Hard | ||
| 052 | N-Queens-II | Python | O(n!) | O(n) | Hard | ||
| 077 | Combinations | Python | O(O(k * C(n, k))) | O(k) | Medium | ||
| 079 | Word Search | Python | O(m * n * l) | O(l) | Medium | ||
| 093 | Restore IP Addresses | Python | O(1) | O(1) | Medium | ||
| 078 | Subsets | C++Python | O(n * 2^n) | O(1) | Medium | ||
| 090 | 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 | 📖 | |
| 526 | Beautiful Arrangement | C++Python | O(n!) | O(n) | Medium | ||
| 676 | Implement Magic Dictionary | C++Python | O(n) | O(d) | Medium | Trie, DFS | |
| 679 | 24 Game | C++Python | O(1) | O(1) | Hard | DFS | |
| 698 | Partition to K Equal Sum Subsets | C++Python | O(n * 2^n) | O(2^n) | Medium | DFS, DP, Memoization | |
| 718 | Maximum Length of Repeated Subarray | C++Python | O(m * n) | O(min(m, n)) | Medium | DP, Hash, Binary Search | |
| 784 | Letter Case Permutation | C++Python | O(n * 2^n) | O(1) | Easy |
| # | Title | Solution | Time | Space | Difficulty | Tag | Note |
|---|---|---|---|---|---|---|---|
| 765 | Couples Holding Hands | C++Python | O(n) | O(n) | Hard |
| # | Title | Solution | Time | Space | Difficulty | Tag | Note |
|---|---|---|---|---|---|---|---|
| 587 | Erect the Fence | C++Python | O(nlogn) | O(n) | Hard | Monotone Chain | |
| 892 | Surface Area of 3D Shapes | C++Python | O(n^2) | O(1) | Easy |
| # | Title | Solution | Time | Space | Difficulty | Tag | Note |
|---|---|---|---|---|---|---|---|
| 874 | Walking Robot Simulation | C++Python | O(n + k) | O(k) | Easy |
| # | 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 | ||
| 535 | Encode and Decode TinyURL | C++Python | O(1) | O(n) | Medium | ||
| 588 | Design In-Memory File System | C++Python | ls: O(l + klogk) mkdir: O(l) addContentToFile: O(l + c) readContentFromFile: O(l + c) | O(n + s) | Hard | 📖 | |
| 604 | Design Compressed String Iterator | C++Python | O(1) | O(1) | Easy | 📖 | |
| 631 | Design Excel Sum Formula | C++Python | set: O((r * c)^2) get: O(1) sum: O((r * c)^2) | O(r * c) | Hard | 📖 | |
| 635 | Design Log Storage System | C++Python | put: O(1) retrieve: O(n + dlogd) | O(n) | Medium | 📖 | |
| 642 | Design Search Autocomplete System | C++Python | O(p^2) | O(p * t + s) | Hard | 📖 | |
| 715 | Range Module | C++Python | add: O(n) remove: O(n) query: O(logn) | O(n) | Hard | ||
| 716 | Max Stack | C++Python | push: O(logn) pop: O(logn) popMax: O(logn) top: O(1) peekMax: O(1) | O(n) | Easy | ||
| 745 | Prefix and Suffix Search | C++Python | ctor: O(w * l^2) search : O(p + s) | O(t) | Hard | Trie | |
| 900 | RLE Iterator | C++Python | O(n) | O(1) | Medium |
| # | 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 |