LintCode
Up to date (2016-08-22), there are 289
problems on LintCode Online Judge.
The number of problems is increasing recently.
Here is the classification of all 289
problems.
For more problems and solutions, you can see my LeetCode-Solutions repository.
I'll keep updating for full summary and better solutions. Stay tuned for updates.
Algorithms
- Bit Manipulation
- Array
- String
- Linked List
- Math
- Tree
- Stack
- Queue
- Heap
- Hash Tables
- Data Structure
- Sort
- Recursion
- Binary Search
- Breadth-First Search
- Depth-First Search
- Backtracking
- Binary Search Trees
- Dynamic Programming
- Greedy
- OO Design
- System Design
Bit Manipulation
# | Title | Solution | Time | Space | Difficulty | Tag | Note |
---|---|---|---|---|---|---|---|
1 | A + B Problem | C++ | O(1) | O(1) | Medium | ||
82 | Single Number | C++ | O(n) | O(1) | Easy | LeetCode | |
83 | Single Number II | C++ | O(n) | O(1) | Easy | LeetCode | |
84 | Single Number III | C++ | O(n) | O(1) | Medium | CTCI | |
142 | O(1) Check Power of 2 | C++ | O(1) | O(1) | Easy | ||
179 | Update Bits | C++ | O(1) | O(1) | Medium | CTCI | |
181 | Flip Bits | C++ | O(1) | O(1) | Easy | CTCI | |
196 | Find the Missing Number | C++ | O(n) | O(1) | Medium | ||
365 | Count 1 in Binary | C++ | O(1) | O(1) | Easy | CTCI |
Array
# | Title | Solution | Time | Space | Difficulty | Tag | Note |
---|---|---|---|---|---|---|---|
6 | Merge Sorted Array | C++ | O(m + n) | O(1) | Easy | LeetCode | Two Pointers |
8 | Rotate String | C++ | O(n) | O(1) | Easy | LeetCode | |
9 | Fizz Buzz | C++ | O(n) | O(1) | Easy | ||
30 | Insert Interval | C++ | O(n) | O(1) | Easy | LeetCode, EPI | |
31 | Partition Array | C++ | O(n) | O(1) | Medium | Two Pointers | |
32 | Minimum Window Substring | C++ | O(n) | O(1) | Medium | LeetCode | |
38 | Search a 2D Matrix II | C++ | O(m + n) | O(1) | Medium | EPI | |
39 | Recover Rotated Sorted Array | C++ | O(n) | O(1) | Easy | ||
46 | Majority Number | C++ | O(n) | O(1) | Easy | LeetCode | |
47 | Majority Number II | C++ | O(n) | O(1) | Medium | EPI | |
48 | Majority Number III | C++ | O(n) | O(k) | Medium | EPI | |
49 | Sort Letters by Case | C++ | O(n) | O(1) | Medium | Two Pointers | |
50 | Product of Array Exclude Itself | C++ | O(n) | O(1) | Easy | ||
51 | Previous Permutation | C++ | O(n) | O(1) | Medium | ||
52 | Next Permutation | C++ | O(n) | O(1) | Medium | LeetCode | |
57 | 3 Sum | C++ | O(n^2) | O(1) | Medium | LeetCode | Two Pointers, Sort |
58 | 4 Sum | C++ | O(n^3) | O(1) | Medium | LeetCode | Hash |
59 | 3 Sum Closest | C++ | O(n^2) | O(1) | Medium | LeetCode | Two Pointers, Sort |
64 | Merge Sorted Array II | C++ | O(m + n) | O(1) | Easy | LeetCode | Two Pointers |
100 | Remove Duplicates from Sorted Array | C++ | O(n) | O(1) | Easy | LeetCode | Two Pointers |
101 | Remove Duplicates from Sorted Array II | C++ | O(n) | O(1) | Easy | LeetCode | Two Pointers |
133 | Longest Words | C++ | O(n) | O(n) | Easy | ||
144 | Interleaving Positive and Negative Numbers | C++ | O(n) | O(1) | Medium | Two Pointers | |
161 | Rotate Image | C++ | O(n^2) | O(1) | Medium | LeetCode | |
162 | Set Matrix Zeroes | C++ | O(m * n) | O(1) | Medium | LeetCode | |
172 | Remove Element | C++ | O(n) | O(1) | Easy | LeetCode | Two Pointers |
185 | Matrix Zigzag Traversal | C++ | O(m * n) | O(1) | Easy | ||
189 | First Missing Positive | C++ | O(n) | O(1) | Easy | LeetCode, EPI | Hash |
190 | Next Permutation II | C++ | O(n) | O(1) | Medium | LeetCode | |
200 | Longest Palindromic Substring | C++ | O(n) | O(n) | Medium | LeetCode | Manacher's Algorithm |
363 | Trapping Rain Water | C++ | O(n) | O(1) | Medium | LeetCode | Two Pointers, Tricky |
373 | Partition Array by Odd and Even | C++ | O(n) | O(1) | Easy | Two Pointers | |
374 | Spiral Matrix | C++ | O(m * n) | O(1) | Medium | LeetCode | |
381 | Spiral Matrix II | C++ | O(n^2) | O(1) | Medium | LeetCode | |
382 | Triangle Count | C++ | O(n^2) | O(1) | Medium | Two Pointers | |
383 | Container With Most Water | C++ | O(n) | O(1) | Medium | LeetCode, EPI | Two Pointers |
388 | Permutation Sequence | C++ | O(n^2) | O(n) | Medium | LeetCode | |
389 | Valid Sudoku | C++ | O(9^2) | O(9) | Easy | LeetCode | |
404 | Subarray Sum II | C++ | O(nlogn) | O(n) | Hard | Two Pointers, Binary Search | |
405 | Submatrix Sum | C++ | O(m * n^2) | O(m) | Hard | Hash | |
406 | Minimum Size Subarray Sum | C++ | O(n) | O(1) | Medium | LeetCode | Two Pointers, Binary Search |
539 | Move Zeroes | C++ | O(n) | O(1) | Easy | LeetCode | Two Pointers |
String
# | Title | Solution | Time | Space | Difficulty | Tag | Note |
---|---|---|---|---|---|---|---|
13 | strStr | C++ | O(n + k) | O(k) | Easy | LeetCode | KMP Algorithm |
53 | Reverse Words in a String | C++ | O(n) | O(1) | Easy | LeetCode, EPI | |
54 | String to Integer(atoi) | C++ | O(n) | O(1) | Hard | LeetCode | |
55 | Compare Strings | C++ | O(n) | O(c) | Easy | ||
78 | Longest Common Prefix | C++ | O(n) | O(1) | Medium | ||
157 | Unique Characters | C++ | O(n) | O(1) | Easy | CTCI | |
158 | Two Strings Are Anagrams | C++ | O(n) | O(1) | Easy | ||
171 | Anagrams | C++ | O(n * klogk) | O(m) | Easy | LeetCode, EPI | |
212 | Space Replacement | C++ | O(n) | O(1) | Easy | ||
407 | Plus One | C++ | O(n) | O(1) | Easy | LeetCode | |
408 | Add Binary | C++ | O(n) | O(1) | Easy | LeetCode | |
415 | Valid Palindrome | C++ | O(n) | O(1) | Easy | LeetCode | |
417 | Valid Number | C++ | O(n) | O(1) | Hard | LeetCode | Automata |
420 | Count and Say | C++ | O(n * 2^n) | O(2^n) | Easy | LeetCode | |
422 | Length of Last Word | C++ | O(n) | O(1) | Easy | LeetCode | |
524 | Left Pad | C++ | O(p + n) | O(1) | Easy | LeetCode |
Linked List
# | Title | Solution | Time | Space | Difficulty | Tag | Note |
---|---|---|---|---|---|---|---|
16 | Merge Two Sorted Lists | C++ | O(n) | O(1) | Easy | LeetCode, EPI | |
35 | Reverse Linked List | C++ | O(n) | O(1) | Easy | LeetCode, EPI | |
36 | Reverse Linked List II | C++ | O(n) | O(1) | Medium | LeetCode, EPI | |
96 | Partition List | C++ | O(n) | O(1) | Easy | LeetCode | |
98 | Sort List | C++ | O(nlogn) | O(logn) | Medium | LeetCode, EPI | |
99 | Reorder List | C++ | O(n) | O(1) | Medium | LeetCode | |
102 | Linked List Cycle | C++ | O(n) | O(1) | Medium | LeetCode | |
103 | Linked List Cycle II | C++ | O(n) | O(1) | Hard | LeetCode | |
104 | Merge k Sorted Lists | C++ | O(n * logk) | O(1) | Medium | LeetCode | Heap, Divide and Conquer |
105 | Copy List with Random Pointer | C++ | O(n) | O(1) | Medium | LeetCode | |
106 | Convert Sorted List to Binary Search Tree | C++ | O(n) | O(logn) | Medium | LeetCode, EPI | |
112 | Remove Duplicates from Sorted List | C++ | O(n) | O(1) | Easy | LeetCode, EPI | |
113 | Remove Duplicates from Sorted List II | C++ | O(n) | O(1) | Medium | LeetCode, EPI | |
166 | Nth to Last Node in List | C++ | O(n) | O(1) | Easy | LeetCode | |
167 | Two Lists Sum | C++ | O(n) | O(1) | Easy | LeetCode | |
170 | Rotate List | C++ | O(n) | O(1) | Medium | LeetCode | |
173 | Insertion Sort List | C++ | O(n^2) | O(1) | Easy | LeetCode | |
174 | Remove Nth Node From End of List | C++ | O(n) | O(1) | Easy | LeetCode | |
223 | Palindrome Linked List | C++ | O(n) | O(1) | Medium | LeetCode | |
372 | Delete Node in the Middle of Singly Linked List | C++ | O(1) | O(1) | Easy | CTCI | |
380 | Intersection of Two Linked Lists | C++ | O(m + n) | O(1) | Easy | LeetCode | |
450 | Reverse Nodes in k-Group | C++ | O(n) | O(1) | Hard | LeetCode | |
451 | Swap Nodes in Pairs | C++ | O(n) | O(1) | Easy | LeetCode | |
452 | Remove Linked List Elements | C++ | O(n) | O(1) | Naive | LeetCode | |
511 | Swap Two Nodes in Linked List | C++ | O(n) | O(1) | Medium |
Tree
# | Title | Solution | Time | Space | Difficulty | Tag | Note |
---|---|---|---|---|---|---|---|
7 | Binary Tree Serialization | C++ | O(n) | O(h) | Medium | ||
85 | Insert Node in a Binary Search Tree | C++ | O(h) | O(1) | Easy | ||
88 | Lowest Common Ancestor | C++ | O(n) | O(h) | Medium | EPI | |
175 | Invert Binary Tree | C++ | O(n) | O(h) | Easy | LeetCode | |
442 | Implement Trie | C++ | O(n) | O(1) | Medium | LeetCode | Trie |
Stack
# | Title | Solution | Time | Space | Difficulty | Tag | Note |
---|---|---|---|---|---|---|---|
12 | Min Stack | C++ | O(n) | O(1) | Medium | LeetCode, EPI | |
40 | Implement Queue by Two Stacks | C++ | O(1), amortized | O(n) | Medium | EPI | |
66 | Binary Tree Preorder Traversal | C++ | O(n) | O(1) | Easy | LeetCode, EPI | Morris Traversal |
67 | Binary Tree Inorder Traversal | C++ | O(n) | O(1) | Easy | LeetCode, EPI | Morris Traversal |
68 | Binary Tree Postorder Traversal | C++ | O(n) | O(1) | Easy | LeetCode, EPI | Morris Traversal |
122 | Largest Rectangle in Histogram | C++ | O(n) | O(n) | Hard | LeetCode, EPI | Ascending Stack |
126 | Max Tree | C++ | O(n) | O(n) | Hard | Descending Stack | |
367 | Expression Tree Build | C++ | O(n) | O(n) | Hard | ||
368 | Expression Evaluation | C++ | O(n) | O(n) | Hard | ||
369 | Convert Expression to Polish Notation | C++ | O(n) | O(n) | Hard | ||
370 | Convert Expression to Reverse Polish Notation | C++ | O(n) | O(n) | Hard | ||
421 | Simplify Path | C++ | O(n) | O(n) | Medium | LeetCode | |
423 | Valid Parentheses | C++ | O(n) | O(n) | Easy | LeetCode | |
424 | Evaluate Reverse Polish Notation | C++ | O(n) | O(n) | Medium | LeetCode | |
473 | Add and Search Word | C++ | O(min(n, h)) | O(min(n, h) | Medium | LeetCode | Trie |
510 | Maximal Rectangle | C++ | O(m * n) | O(n) | Hard | LeetCode | Ascending Stack |
528 | Flatten Nested List Iterator | C++ | O(n) | O(h) | Medium | LeetCode |
Queue
# | Title | Solution | Time | Space | Difficulty | Tag | Note |
---|---|---|---|---|---|---|---|
362 | Sliding Window Maximum | C++ | O(n) | O(k) | Hard | EPI | Deque, Tricky |
Heap
# | Title | Solution | Time | Space | Difficulty | Tag | Note |
---|---|---|---|---|---|---|---|
4 | Ugly Number II | C++ | O(n) | O(1) | Medium | CTCI | BST, Heap |
81 | Data Stream Median | C++ | O(nlogn) | O(n) | Hard | EPI | BST, Heap |
130 | Heapify | C++ | O(n) | O(1) | Medium | ||
364 | Trapping Rain Water II | C++ | O(m * n * (logm + logn)) | O(m * n) | Hard | BFS, Heap, Tricky | |
518 | Super Ugly Number | C++ | O(n * k) | O(n + k) | Medium | LeetCode | BST, Heap |
Hash Tables
# | Title | Solution | Time | Space | Difficulty | Tag | Note |
---|---|---|---|---|---|---|---|
56 | 2 Sum | C++ | O(n) | O(n) | Medium | LeetCode | |
124 | Longest Consecutive Sequence | C++ | O(n) | O(n) | Medium | LeetCode, EPI | |
128 | Hash Function | C++ | O(n) | O(1) | Easy | ||
129 | Rehashing | C++ | O(n) | O(n) | Medium | ||
138 | Subarray Sum | C++ | O(n) | O(n) | Easy | ||
186 | Max Points on a Line | C++ | O(n^2) | O(n) | Medium | LeetCode | |
211 | String Permutation | C++ | O(n) | O(1) | Easy | ||
384 | Longest Substring Without Repeating Characters | C++ | O(n) | O(1) | Medium | LeetCode, EPI | |
386 | Longest Substring with At Most K Distinct Characters | C++ | O(n) | O(n) | Medium | ||
432 | Find the Weak Connected Component in the Directed Graph | C++ | O(nlogn) | O(n) | Medium | Union Find | |
434 | Number of Islands II | C++ | O(k) | O(k) | Hard | Union Find | |
488 | Happy Number | C++ | O(k) | O(k) | Easy | LeetCode | |
547 | Intersection of Two Arrays | C++ | O(m + n) | O(min(m, n)) | Easy | EPI, LeetCode | Two Pointers, Binary Search |
548 | Intersection of Two Arrays II | C++ | O(m + n) | O(min(m, n)) | Easy | EPI, LeetCode | Two Pointers, Binary Search |
Data Structure
# | Title | Solution | Time | Space | Difficulty | Tag | Note |
---|---|---|---|---|---|---|---|
134 | LRU Cache | C++ | O(1) | O(k) | Hard | LeetCode, EPI | List, Hash |
Math
# | Title | Solution | Time | Space | Difficulty | Tag | Note |
---|---|---|---|---|---|---|---|
2 | Trailing Zeros | C++ | O(1) | O(1) | Easy | LeetCode | |
3 | Digit Counts | C++ | O(1) | O(1) | Medium | CTCI | |
114 | Unique Paths | C++ | O(min(m, n)) | O(1) | Easy | LeetCode, CTCI | DP, Math |
163 | Unique Binary Search Trees | C++ | O(n) | O(1) | Medium | CTCI | DP, Math, Catalan Number |
180 | Binary Represention | C++ | O(1) | O(1) | Hard | CTCI | |
197 | Permutation Index | C++ | O(n^2) | O(1) | Easy | ||
198 | Permutation Index II | C++ | O(n^2) | O(n) | Medium | ||
394 | Coins in a Line | C++ | O(1) | O(1) | Easy | ||
411 | Gray Code | C++ | O(2^n) | O(1) | Medium | LeetCode | |
413 | Reverse Integer | C++ | O(1) | O(1) | Medium | LeetCode | |
414 | Divide Two Integer | C++ | O(1) | O(1) | Medium | LeetCode | |
418 | Integer to Roman | C++ | O(n) | O(1) | Medium | LeetCode | |
419 | Roman to Integer | C++ | O(n) | O(1) | Medium | LeetCode | |
428 | Pow(x, n) | C++ | O(1) | O(1) | Medium | LeetCode | |
445 | Cosine Similarity | C++ Python | O(n) | O(1) | Easy | ||
517 | Ugly Number | C++ | O(1) | O(1) | Easy | CTCI, LeetCode |
Sort
# | Title | Solution | Time | Space | Difficulty | Tag | Note |
---|---|---|---|---|---|---|---|
5 | Kth Largest Element | C++ | O(n) ~ O(n^2) | O(1) | Medium | EPI | Two Pointers, Quick Sort |
80 | Median | C++ | O(n) | O(1) | Easy | EPI | |
139 | Subarray Sum Closest | C++ | O(nlogn) | O(n) | Medium | Sort | |
143 | Sort Colors II | C++ | O(n) | O(1) | Medium | ||
148 | Sort Colors | C++ | O(n) | O(1) | Medium | LeetCode | |
156 | Merge Intervals | C++ | O(nlogn) | O(1) | Easy | LeetCode, EPI | |
184 | Largest Number | C++ | O(nlogn) | O(1) | Medium | LeetCode | |
366 | Fibonacci | C++ | O(n) | O(1) | Easy | ||
379 | Reorder array to construct the minimum number | C++ | O(nlogn) | O(1) | Medium | LeetCode | |
387 | The Smallest Difference | C++ | O(max(m, n) * log(min(m, n))) | O(1) | Medium | Two Pointers, Binary Search | |
399 | Nuts & Bolts Problem | C++ | O(nlogn) | O(logn) | Medium | Quick Sort | |
400 | Maximum Gap | C++ Python | O(n) | O(n) | Hard | LeetCode | Bucket Sort |
463 | Sort Integers | C++ | O(n^2) | O(1) | Easy | Insertion Sort, Selection Sort, Bubble Sort | |
464 | Sort Integers II | C++ | O(nlogn) | O(n) | Easy | Merge Sort, Heap Sort, Quick Sort | |
507 | Wiggle Sort II | C++ | O(n) on average | O(1) | Medium | LeetCode | Tri Partition |
508 | Wiggle Sort | C++ | O(n) | O(1) | Medium | LeetCode |
Recursion
# | Title | Solution | Time | Space | Difficulty | Tag | Note |
---|---|---|---|---|---|---|---|
22 | Flatten List | C++ | O(n) | O(h) | Easy | ||
72 | Construct Binary Tree from Inorder and Postorder Traversal | C++ | O(n) | O(n) | Medium | LeetCode, EPI | |
73 | Construct Binary Tree from Preorder and Inorder Traversal | C++ | O(n) | O(n) | Medium | LeetCode, EPI | |
93 | Balanced Binary Tree | C++ | O(n) | O(h) | Easy | LeetCode | |
94 | Binary Tree Maximum Path Sum | C++ | O(n) | O(h) | Medium | LeetCode | |
95 | Validate Binary Search Tree | C++ | O(n) | O(h) | Medium | LeetCode | |
97 | Maximum Depth of Binary Tree | C++ | O(n) | O(h) | Easy | LeetCode | |
131 | Building Outline | C++ Python | O(nlogn) | O(n) | Hard | EPI | Sort, BST |
140 | Fast Power | C++ | O(logn) | O(1) | Medium | ||
155 | Minimum Depth of Binary Tree | C++ | O(n) | O(h) | Easy | LeetCode | |
164 | Unique Binary Search Trees II | C++ | O(n * 4^n / n^(3/2)) | O(n) | Medium | LeetCode | |
177 | Convert Sorted Array to Binary Search Tree With Minimal Height | C++ | O(n) | O(logn) | Easy | LeetCode | |
201 | Segment Tree Build | C++ | O(n) | O(h) | Medium | Segment Tree, BST | |
202 | Segment Tree Query | C++ | O(h) | O(h) | Medium | Segment Tree, BST | |
203 | Segment Tree Modify | C++ | O(h) | O(h) | Medium | Segment Tree, BST | |
205 | Interval Minimum Number | C++ | build tree: O(n), query: (h) | O(h) | Hard | Segment Tree, BST | |
206 | Interval Sum | C++ | build tree: O(n), query: O(logn) | O(n) | Hard | Segment Tree, BIT | |
207 | Interval Sum II | C++ | build tree: O(n), query: O(logn), modify: O(logn) | O(n) | Hard | Segment Tree, BIT | |
245 | Subtree | C++ | O(m * n) | O(1) | Easy | Morris Traversal |
|
247 | Segment Tree Query II | C++ | O(h) | O(h) | Hard | Segment Tree, BST | |
248 | Count of Smaller Number | C++ | build tree: O(n), query: O(logn) | O(h) | Medium | Segment Tree, BST | |
371 | Print Numbers by Recursion | C++ | O(n) | O(n) | Medium | ||
375 | Clone Binary Tree | C++ | O(n) | O(h) | Easy | ||
378 | Convert Binary Search Tree to Doubly Linked List | C++ | O(n) | O(h) | Medium | ||
439 | Segment Tree Build II | C++ | O(n) | O(h) | Medium | Segment Tree, BST | |
453 | Flatten Binary Tree to Linked List | C++ | O(n) | O(h) | Easy | LeetCode | |
469 | Identical Binary Tree | C++ | O(n) | O(h) | Easy | ||
532 | Reverse Pairs | C++ | O(nlogn) | O(n) | Medium | variant of Count of Smaller Number before itself | BIT, Merge Sort |
535 | House Robber III | C++ | O(n) | O(h) | Medium | LeetCode |
Binary Search
# | Title | Solution | Time | Space | Difficulty | Tag | Note |
---|---|---|---|---|---|---|---|
14 | First Position of Target | C++ | O(logn) | O(1) | Easy | ||
28 | Search a 2D Matrix | C++ | O(logm + logn) | O(1) | Easy | LeetCode | |
60 | Search Insert Position | C++ | O(logn) | O(1) | Easy | LeetCode | |
61 | Search for a Range | C++ | O(logn) | O(1) | Medium | LeetCode | |
62 | Search in Rotated Sorted Array | C++ | O(logn) | O(1) | Medium | LeetCode | |
63 | Search in Rotated Sorted Array II | C++ | O(logn) | O(1) | Medium | LeetCode | |
65 | Median of two Sorted Arrays | C++ | O(log(min(m, n))) | O(1) | Hard | LeetCode, EPI | Tricky |
74 | First Bad Version | C++ | O(logn) | O(1) | Medium | ||
75 | Find Peak Element | C++ | O(logn) | O(1) | Medium | LeetCode | |
76 | Longest Increasing Subsequence | C++ | O(nlogn) | O(n) | Medium | CTCI | |
141 | Sqrt(x) | C++ | O(logn) | O(1) | Easy | LeetCode | |
159 | Find Minimum in Rotated Sorted Array | C++ | O(logn) | O(1) | Medium | LeetCode | |
160 | Find Minimum in Rotated Sorted Array II | C++ | O(logn) | O(1) | Medium | LeetCode | |
183 | Wood Cut | C++ | O(nlogL) | O(1) | Medium | ||
390 | Find Peak Element II | C++ Java Python | O(m + n) | O(1) | Hard | ||
437 | Copy Books | C++ | O(nlogp) | O(1) | Hard | UVa 714 |
Breadth-First Search
# | Title | Solution | Time | Space | Difficulty | Tag | Note |
---|---|---|---|---|---|---|---|
69 | Binary Tree Level Order Traversal | C++ | O(n) | O(n) | Medium | LeetCode | BFS |
70 | Binary Tree Level Order Traversal II | C++ | O(n) | O(n) | Medium | LeetCode | BFS |
71 | Binary Tree Zigzag Level Order Traversal | C++ | O(n) | O(n) | Medium | LeetCode | BFS |
120 | Word Ladder | C++ | O(n * d) | O(d) | Medium | LeetCode | BFS |
121 | Word Ladder II | C++ | O(n * d) | O(d) | Hard | LeetCode | BFS, Back Trace |
127 | Topological Sorting | C++ | O(|V|+|E|) | O(|E|) | Medium | DFS, BFS | |
137 | Clone Graph | C++ | O(|V|+|E|) | O(|V|) | Medium | BFS | |
176 | Route Between Two Nodes in Graph | C++ | O(n) | O(n) | Medium | DFS, BFS | |
178 | Graph Valid Tree | C++ | O(|V| + |E|) | O(|V| + |E|) | Medium | LeetCode | |
431 | Find the Connected Component in the Undirected Graph | C++ | O(n) | O(n) | Medium | BFS | |
477 | Surrounded Regions | C++ | O(m * n) | O(m + n) | Medium | LeetCode |
Depth-First Search
# | Title | Solution | Time | Space | Difficulty | Tag | Note |
---|---|---|---|---|---|---|---|
90 | K Sum II | C++ | O(k * C(n, k)) | O(k) | Medium | ||
376 | Binary Tree Path Sum | C++ | O(n) | O(h) | Easy | LeetCode | |
433 | Number of Islands | C++ | O(m * n) | O(m * n) | Easy | LeetCode | DFS |
480 | Binary Tree Paths | C++ | O(n * h) | O(h) | Easy | LeetCode |
Backtracking
# | Title | Solution | Time | Space | Difficulty | Tag | Note |
---|---|---|---|---|---|---|---|
15 | Permutations | C++ | O(n * n!) | O(n) | Medium | LeetCode, EPI | |
16 | Permutations II | C++ | O(n * n!) | O(n) | Medium | LeetCode, EPI | |
17 | Subsets | C++ | O(n * 2^n) | O(1) | Medium | LeetCode | |
18 | Subsets II | C++ | O(n * 2^n) | O(1) | Medium | LeetCode | |
33 | N-Queens | C++ | O(n * n!) | O(n) | Medium | LeetCode, EPI | |
34 | N-Queens II | C++ | O(n * n!) | O(n) | Medium | LeetCode, EPI | |
123 | Word Search | C++ | O(m * n * l) | O(l) | Medium | LeetCode | |
132 | Word Search II | C++ | O(m * n * l) | O(l) | Hard | Trie, DFS | |
135 | Combination Sum | C++ | O(k * n^k) | O(k) | Medium | LeetCode | DFS |
136 | Palindrome Partitioning | C++ | O(2^n) | O(n) | Easy | LeetCode, EPI | |
152 | Combinations | C++ | O(k * n^k) | O(k) | Medium | LeetCode, EPI | |
153 | Combination Sum II | C++ | O(k * C(n, k)) | O(k) | Medium | LeetCode | DFS |
425 | Letter Combinations of a Phone Number | C++ | O(n * 4^n) | O(n) | Medium | LeetCode | |
426 | Restore IP Addresses | C++ | O(1) | O(1) | Medium | LeetCode | |
427 | Generate Parentheses | C++ | O(4^n / n^(3/2)) | O(n) | Medium | LeetCode |
Binary Search Trees
# | Title | Solution | Time | Space | Difficulty | Tag | Note |
---|---|---|---|---|---|---|---|
11 | Search Range in Binary Search Tree | C++ | O(n) | O(h) | Medium | EPI | |
86 | Binary Search Tree Iterator | C++ | O(1) | O(h) | Hard | LeetCode | |
87 | Remove Node in Binary Search Tree | C++ | O(h) | O(h) | Hard | ||
249 | Count of Smaller Number before itself | C++ | O(nlogn) | O(n) | Hard | BST, BIT, Divide and Conquer, Merge Sort | |
360 | Sliding Window Median | C++ | O(nlogw) | O(w) | Hard | BST, Tricky | |
391 | Number of Airplanes in the Sky | C++ | O(nlogn) | O(n) | Easy | BST, Heap | |
401 | Kth Smallest Number in Sorted Matrix | C++ | O(klog(min(m, n, k))) | O(min(m, n, k)) | Medium | BST, Heap |
Dynamic Programming
# | Title | Solution | Time | Space | Difficulty | Tag | Note |
---|---|---|---|---|---|---|---|
20 | Dices Sum | C++ | O(n^2) | O(n) | Hard | ||
29 | Interleaving String | C++ | O(m * n) | O(min(m, n)) | Medium | EPI | |
43 | Maximum Subarray III | C++ | O(k * n) | O(k * n) | Hard | ||
77 | Longest Common Subsequence | C++ | O(m * n) | O(min(m, n)) | Medium | ||
79 | Longest Common Substring | C++ | O(m * n) | O(min(m, n)) | Medium | ||
89 | K Sum | C++ | O(k * n * t) | O(n * t) | Hard | ||
91 | Minimum Adjustment Cost | C++ | O(k * n * t) | O(k) | Medium | ||
92 | Backpack | C++ | O(m * n) | O(m) | Easy | ||
107 | Word Break | C++ | O(n * l^2) | O(n) | Medium | LeetCode, EPI | |
108 | Palindrome Partitioning II | C++ | O(n^2) | O(n) | Medium | LeetCode, EPI | |
109 | Triangle | C++ | O(n) | O(n) | Easy | LeetCode, EPI | |
110 | Minimum Path Sum | C++ | O(m * n) | O(min(m, n)) | Easy | LeetCode, EPI | |
111 | Climbing Stairs | C++ | O(logn) | O(1) | Easy | LeetCode | |
115 | Unique Paths II | C++ | O(m * n) | O(min(m, n)) | Easy | LeetCode, CTCI | DP, Math |
118 | Distinct Subsequences | C++ | O(m * n) | O(m) | Medium | LeetCode | DP |
119 | Edit Distance | C++ | O(m * n) | O(min(m, n)) | Medium | LeetCode, CTCI | DP |
125 | Backpack II | C++ | O(m * n) | O(m) | Medium | ||
149 | Best Time to Buy and Sell Stock | C++ | O(n) | O(1) | Medium | LeetCode, EPI | |
150 | Best Time to Buy and Sell Stock II | C++ | O(n) | O(1) | Medium | LeetCode, EPI | |
151 | Best Time to Buy and Sell Stock III | C++ | O(n) | O(1) | Medium | LeetCode, EPI | |
154 | Regular Expression Matching | C++ | O(m * n) | O(m) | Hard | LeetCode | DP, Recursion |
168 | Burst Balloons | C++ | O(n^3) | O(n^2) | Medium | LeetCode | |
191 | Maximum Product Subarray | C++ | O(n) | O(1) | Medium | LeetCode | |
392 | House Robber | C++ | O(n) | O(1) | Medium | LeetCode | |
393 | Best Time to Buy and Sell Stock IV | C++ | O(k * n) | O(k) | Hard | LeetCode, EPI | |
395 | Coins in a Line II | C++ | O(n) | O(1) | Medium | ||
396 | Coins in a Line III | C++ | O(n^2) | O(n) | Hard | ||
397 | Longest Increasing Continuous subsequence | C++ | O(n) | O(1) | Easy | ||
398 | Longest Increasing Continuous subsequence II | C++ | O(m * n) | O(m * n) | Hard | ||
403 | Continuous Subarray Sum II | C++ | O(n) | O(1) | Medium | EPI | |
430 | Scramble String | C++ | O(n^4) | O(n^3) | Hard | LeetCode | |
435 | Post Office Problem | C++ | O(k * n^2) | O(n) | Hard | PKU 1160 | |
436 | Maximal Square | C++ | O(m * n) | O(n) | Medium | LeetCode | |
512 | Decode Ways | C++ | O(n) | O(1) | Medium | LeetCode | |
513 | Perfect Squares | C++ | O(n * sqrt(n)) | O(n) | Medium | LeetCode | |
514 | Paint Fence | C++ | O(n) | O(1) | Easy | LeetCode | |
515 | Paint House | C++ | O(n) | O(1) | Medium | LeetCode | |
516 | Paint House II | C++ | O(n * k) | O(k) | Hard | LeetCode | |
534 | House Robber II | C++ | O(n) | O(1) | Medium | LeetCode | |
564 | Backpack VI | C++ | O(n * t) | O(t) | Medium |
Greedy
# | Title | Solution | Time | Space | Difficulty | Tag | Note |
---|---|---|---|---|---|---|---|
41 | Maximum Subarray | C++ | O(n) | O(1) | Easy | LeetCode | |
42 | Maximum Subarray II | C++ | O(n) | O(n) | Medium | ||
44 | Minimum Subarray | C++ | O(n) | O(1) | Easy | ||
45 | Maximum Subarray Difference | C++ | O(n) | O(n) | Medium | ||
116 | Jump Game | C++ | O(n) | O(1) | Medium | LeetCode | |
117 | Jump Game II | C++ | O(n) | O(1) | Medium | LeetCode | |
182 | Delete Digits | C++ | O(n) | O(n) | Medium | ||
187 | Gas Station | C++ | O(n) | O(1) | Easy | LeetCode | |
192 | Wildcard Matching | C++ | O(m + n) | O(1) | Hard | LeetCode | Greedy, DP, Recursion |
402 | Continuous Subarray Sum | C++ | O(n) | O(1) | Medium | EPI | |
412 | Candy | C++ | O(n) | O(n) | Hard | LeetCode | Greedy |
552 | Create Maximum Number | C++ | O(k * (m + n + k)) ~ O(k * (m + n + k^2)) | O(m + n + k^2) | Hard | LeetCode | Greedy, DP |
OO Design
# | Title | Solution | Time | Space | Difficulty | Tag | Note |
---|---|---|---|---|---|---|---|
204 | Singleton | C++ | O(1) | O(1) | Easy | ||
208 | Assignment Operator Overloading (C++ Only) | C++ | O(n) | O(1) | Medium | ||
496 | Toy Factory | C++ | O(1) | O(1) | Easy | ||
497 | Shape Factory | C++ | O(1) | O(1) | Easy | ||
498 | Parking Lot | C++ | O(n * m * k) | O(n * m * k) | Hard | CTCI | OO Design, Pimpl Idiom, Smart Pointer |
System Design
# | Title | Solution | Time | Space | Difficulty | Tag | Note |
---|---|---|---|---|---|---|---|
501 | Mini Twitter | C++ | O(klogu) | O(t + f) | Medium |