1 |
Easy |
Two Sum |
1-two-sum.cpp |
O(n) |
O(n) |
2 |
Medium |
Add Two Numbers |
2-add-two-numbers.cpp |
O(n1+n2) |
O(n1+n2) |
3 |
Medium |
Longest Substring Without Repeating Characters |
3-longest-substring-without-repeating-characters.cpp |
O(n) |
O(n) |
5 |
Medium |
Longest Palindromic Substring |
5-longest-palindromic-substring.cpp |
O(n^2) |
O(n) |
6 |
Medium |
Zigzag Conversion |
6-zigzag-conversion.cpp |
O(n) |
O(n) |
8 |
Medium |
String to Integer (atoi) |
8-string-to-integer-atoi.cpp |
O(n) |
O(1) |
9 |
Easy |
Palindrome Number |
9-palindrome-number.cpp |
O(1) |
O(1) |
19 |
Medium |
Remove Nth Node From End of List |
19-remove-nth-node-from-end-of-list.cpp |
O(n) |
O(1) |
20 |
Easy |
Valid Parentheses |
20-valid-parentheses.cpp |
O(n) |
O(n) |
21 |
Easy |
Merge Two Sorted Lists |
21-merge-two-sorted-lists.cpp |
O(min(n1, n2)) |
O(1) |
22 |
Medium |
Generate Parentheses |
22-generate-parentheses.cpp |
O(C(n)), where C(n) = the n-th Catalan number |
O(C(n)), where C(n) = the n-th Catalan number |
23 |
Hard |
Merge k Sorted Lists |
23-merge-k-sorted-lists.cpp |
O(n*log(k)) |
O(k) |
28 |
Easy |
Find the Index of the First Occurrence in a String |
28-find-the-index-of-the-first-occurrence-in-a-string.cpp |
O(m+n) |
O(m) |
31 |
Medium |
Next Permutation |
31-next-permutation.cpp |
O(n) |
O(1) |
33 |
Medium |
Search in Rotated Sorted Array |
33-search-in-rotated-sorted-array.cpp |
O(log(n)) |
O(log(n)) |
35 |
Easy |
Search Insert Position |
35-search-insert-position.cpp |
O(log(n)) |
O(1) |
39 |
Medium |
Combination Sum |
39-combination-sum.cpp |
O(2^(n+t)*t) |
O(2^(n+t)*t) |
46 |
Medium |
Permutations |
46-permutations.cpp |
O(n*n!) |
O(n*n!) |
48 |
Medium |
Rotate Image |
48-rotate-image.cpp |
O(n^2) |
O(1) |
49 |
Medium |
Group Anagrams |
49-group-anagrams.cpp |
O(n*m*log(m)) |
O(n*m) |
50 |
Medium |
Pow(x, n) |
50-powx-n.cpp |
O(log(n)) |
O(log(n)) |
53 |
Medium |
Maximum Subarray |
53-maximum-subarray.cpp |
O(n) |
O(1) |
55 |
Medium |
Jump Game |
55-jump-game.cpp |
O(n) |
O(1) |
62 |
Medium |
Unique Paths |
62-unique-paths.cpp |
O(m*n) |
O(m*n) |
63 |
Medium |
Unique Paths II |
63-unique-paths-ii.cpp |
O(m*n) |
O(m*n) |
64 |
Medium |
Minimum Path Sum |
64-minimum-path-sum.cpp |
O(m*n) |
O(m*n) |
70 |
Easy |
Climbing Stairs |
70-climbing-stairs.cpp |
O(n) |
O(n) |
75 |
Medium |
Sort Colors |
75-sort-colors.cpp |
O(n) |
O(1) |
76 |
Hard |
Minimum Window Substring |
76-minimum-window-substring.cpp |
O(m+n) |
O(m) |
77 |
Medium |
Combinations |
77-combinations.cpp |
O(k*C(n,k)) |
O(k*C(n,k)) |
78 |
Medium |
Subsets |
78-subsets.cpp |
O(n*2^n) |
O(n*2^n) |
82 |
Medium |
Remove Duplicates from Sorted List II |
82-remove-duplicates-from-sorted-list-ii.cpp |
O(n) |
O(1) |
83 |
Easy |
Remove Duplicates from Sorted List |
83-remove-duplicates-from-sorted-list.cpp |
O(n) |
O(1) |
88 |
Easy |
Merge Sorted Array |
88-merge-sorted-array.cpp |
O(m+n) |
O(1) |
91 |
Medium |
Decode Ways |
91-decode-ways.cpp |
O(n) |
O(n) |
94 |
Easy |
Binary Tree Inorder Traversal |
94-binary-tree-inorder-traversal.cpp |
O(n) |
O(n) |
95 |
Medium |
Unique Binary Search Trees II |
95-unique-binary-search-trees-ii.cpp |
O(C(n)), where C(n) = the n-th Catalan number |
O(C(n)) |
98 |
Medium |
Validate Binary Search Tree |
98-validate-binary-search-tree.cpp |
O(n) |
O(log(n)) |
102 |
Medium |
Binary Tree Level Order Traversal |
102-binary-tree-level-order-traversal.cpp |
O(n) |
O(n) |
103 |
Medium |
Binary Tree Zigzag Level Order Traversal |
103-binary-tree-zigzag-level-order-traversal.cpp |
O(n) |
O(n) |
104 |
Easy |
Maximum Depth of Binary Tree |
104-maximum-depth-of-binary-tree.cpp |
O(n) |
O(log(n)) |
105 |
Medium |
Construct Binary Tree from Preorder and Inorder Traversal |
105-construct-binary-tree-from-preorder-and-inorder-traversal.cpp |
O(n) |
O(n) |
108 |
Easy |
Convert Sorted Array to Binary Search Tree |
108-convert-sorted-array-to-binary-search-tree.cpp |
O(n) |
O(n) |
111 |
Easy |
Minimum Depth of Binary Tree |
111-minimum-depth-of-binary-tree.cpp |
O(n) |
O(log(n)) |
112 |
Easy |
Path Sum |
112-path-sum.cpp |
O(n) |
O(n) |
113 |
Medium |
Path Sum II |
113-path-sum-ii.cpp |
O(n^2) |
O(n^2) |
116 |
Medium |
Populating Next Right Pointers in Each Node |
116-populating-next-right-pointers-in-each-node.cpp |
O(n) |
O(1) |
118 |
Easy |
Pascal's Triangle |
118-pascals-triangle.cpp |
O(n^2) |
O(n^2) |
120 |
Medium |
Triangle |
120-triangle.cpp |
O(n^2) |
O(n^2) |
121 |
Easy |
Best Time to Buy and Sell Stock |
121-best-time-to-buy-and-sell-stock.cpp |
O(n) |
O(1) |
122 |
Medium |
Best Time to Buy and Sell Stock II |
122-best-time-to-buy-and-sell-stock-ii.cpp |
O(n) |
O(1) |
124 |
Hard |
Binary Tree Maximum Path Sum |
124-binary-tree-maximum-path-sum.cpp |
O(n) |
O(n) |
127 |
Hard |
Word Ladder |
127-word-ladder.cpp |
O(m*n^2) |
O(m*n) |
136 |
Easy |
Single Number |
136-single-number.cpp |
O(n) |
O(1) |
139 |
Medium |
Word Break |
139-word-break.cpp |
O(m*n) |
O(n) |
141 |
Easy |
Linked List Cycle |
141-linked-list-cycle.cpp |
O(n) |
O(1) |
142 |
Medium |
Linked List Cycle II |
142-linked-list-cycle-ii.cpp |
O(n) |
O(1) |
144 |
Easy |
Binary Tree Preorder Traversal |
144-binary-tree-preorder-traversal.cpp |
O(n) |
O(n) |
145 |
Easy |
Binary Tree Postorder Traversal |
145-binary-tree-postorder-traversal.cpp |
O(n) |
O(n) |
146 |
Medium |
LRU Cache |
146-lru-cache.cpp |
O(1) for { get(key), put(key, value) } |
O(n) |
153 |
Medium |
Find Minimum in Rotated Sorted Array |
153-find-minimum-in-rotated-sorted-array.cpp |
O(log(n)) |
O(log(n)) |
155 |
Medium |
Min Stack |
155-min-stack.cpp |
O(1) for { push(x), pop(), top(), getMin() } |
O(n) |
165 |
Medium |
Compare Version Numbers |
165-compare-version-numbers.cpp |
O(n1+n2) |
O(1) |
167 |
Medium |
Two Sum II - Input Array Is Sorted |
167-two-sum-ii-input-array-is-sorted.cpp |
O(n) |
O(1) |
174 |
Hard |
Dungeon Game |
174-dungeon-game.cpp |
O(m*n) |
O(m*n) |
189 |
Medium |
Rotate Array |
189-rotate-array.cpp |
O(n) |
O(1) |
190 |
Easy |
Reverse Bits |
190-reverse-bits.cpp |
O(1) |
O(1) |
191 |
Easy |
Number of 1 Bits |
191-number-of-1-bits.cpp |
O(1) |
O(1) |
198 |
Medium |
House Robber |
198-house-robber.cpp |
O(n) |
O(n) |
200 |
Medium |
Number of Islands |
200-number-of-islands.cpp |
O(m*n) |
O(m*n) |
201 |
Medium |
Bitwise AND of Numbers Range |
201-bitwise-and-of-numbers-range.cpp |
O(log(n)) |
O(1) |
202 |
Easy |
Happy Number |
202-happy-number.cpp |
O(n) |
O(1) |
205 |
Easy |
Isomorphic Strings |
205-isomorphic-strings.cpp |
O(n) |
O(1) |
206 |
Easy |
Reverse Linked List |
206-reverse-linked-list.cpp |
O(n) |
O(1) |
208 |
Medium |
Implement Trie (Prefix Tree) |
208-implement-trie-prefix-tree.cpp |
O(n) for { insert(word), search(word), startsWith(prefix) } |
O(n) |
213 |
Medium |
House Robber II |
213-house-robber-ii.cpp |
O(n) |
O(n) |
215 |
Medium |
Kth Largest Element in an Array |
215-kth-largest-element-in-an-array.cpp |
O(n*log(k)) |
O(k) |
217 |
Easy |
Contains Duplicate |
217-contains-duplicate.cpp |
O(n) |
O(n) |
218 |
Hard |
The Skyline Problem |
218-the-skyline-problem.cpp |
O(n*log(n)) |
O(n) |
221 |
Medium |
Maximal Square |
221-maximal-square.cpp |
O(m*n) |
O(m*n) |
231 |
Easy |
Power of Two |
231-power-of-two.cpp |
O(1) |
O(1) |
234 |
Easy |
Palindrome Linked List |
234-palindrome-linked-list.cpp |
O(n) |
O(n) |
235 |
Medium |
Lowest Common Ancestor of a Binary Search Tree |
235-lowest-common-ancestor-of-a-binary-search-tree.cpp |
O(h) |
O(h) or O(1) with tail-call optimization |
238 |
Medium |
Product of Array Except Self |
238-product-of-array-except-self.cpp |
O(n) |
O(n) |
268 |
Easy |
Missing Number |
268-missing-number.cpp |
O(n) |
O(1) |
278 |
Easy |
First Bad Version |
278-first-bad-version.cpp |
O(log(n)) |
O(1) |
283 |
Easy |
Move Zeroes |
283-move-zeroes.cpp |
O(n) |
O(1) |
299 |
Medium |
Bulls and Cows |
299-bulls-and-cows.cpp |
O(n) |
O(1) |
300 |
Medium |
Longest Increasing Subsequence |
300-longest-increasing-subsequence.cpp |
O(n*log(n)) |
O(n) |
322 |
Medium |
Coin Change |
322-coin-change.cpp |
O(K*M) |
O(K*M) |
326 |
Easy |
Power of Three |
326-power-of-three.cpp |
O(1) |
O(1) |
342 |
Easy |
Power of Four |
342-power-of-four.cpp |
O(1) |
O(1) |
344 |
Easy |
Reverse String |
344-reverse-string.cpp |
O(n) |
O(1) |
347 |
Medium |
Top K Frequent Elements |
347-top-k-frequent-elements.cpp |
O(n) |
O(n) |
349 |
Easy |
Intersection of Two Arrays |
349-intersection-of-two-arrays.cpp |
O(n1+n2) |
O(n1+n2) |
350 |
Easy |
Intersection of Two Arrays II |
350-intersection-of-two-arrays-ii.cpp |
O(n1+n2) |
O(n1+n2) |
373 |
Medium |
Find K Pairs with Smallest Sums |
373-find-k-pairs-with-smallest-sums.cpp |
O(k*log(k)) |
O(k) |
383 |
Easy |
Ransom Note |
383-ransom-note.cpp |
O(m+n) |
O(1) |
387 |
Easy |
First Unique Character in a String |
387-first-unique-character-in-a-string.cpp |
O(n) |
O(1) |
392 |
Easy |
Is Subsequence |
392-is-subsequence.cpp |
O(m+n) |
O(1) |
394 |
Medium |
Decode String |
394-decode-string.cpp |
O(n) |
O(n) |
409 |
Easy |
Longest Palindrome |
409-longest-palindrome.cpp |
O(n) |
O(1) |
438 |
Medium |
Find All Anagrams in a String |
438-find-all-anagrams-in-a-string.cpp |
O(m+n) |
O(m) |
496 |
Easy |
Next Greater Element I |
496-next-greater-element-i.cpp |
O(n1+n2) |
O(n1+n2) |
503 |
Medium |
Next Greater Element II |
503-next-greater-element-ii.cpp |
O(n) |
O(n) |
509 |
Easy |
Fibonacci Number |
509-fibonacci-number.cpp |
O(log(n)) |
O(log(n)) |
525 |
Medium |
Contiguous Array |
525-contiguous-array.cpp |
O(n) |
O(n) |
542 |
Medium |
01 Matrix |
542-01-matrix.cpp |
O(m*n) |
O(m*n) |
543 |
Easy |
Diameter of Binary Tree |
543-diameter-of-binary-tree.cpp |
O(n) |
O(n) |
557 |
Easy |
Reverse Words in a String III |
557-reverse-words-in-a-string-iii.cpp |
O(n) |
O(1) |
560 |
Medium |
Subarray Sum Equals K |
560-subarray-sum-equals-k.cpp |
O(n) |
O(n) |
565 |
Medium |
Array Nesting |
565-array-nesting.cpp |
O(n) |
O(n) |
566 |
Easy |
Reshape the Matrix |
566-reshape-the-matrix.cpp |
O(m*n) |
O(m*n) |
567 |
Medium |
Permutation in String |
567-permutation-in-string.cpp |
O(n1+n2) |
O(1) |
587 |
Hard |
Erect the Fence |
587-erect-the-fence.cpp |
O(n*log(n)) |
O(n) |
589 |
Easy |
N-ary Tree Preorder Traversal |
589-n-ary-tree-preorder-traversal.cpp |
O(n) |
O(n) |
617 |
Easy |
Merge Two Binary Trees |
617-merge-two-binary-trees.cpp |
O(n1+n2) |
O(n1+n2) |
647 |
Medium |
Palindromic Substrings |
647-palindromic-substrings.cpp |
O(n^2) |
O(1) |
678 |
Medium |
Valid Parenthesis String |
678-valid-parenthesis-string.cpp |
O(n) |
O(1) |
692 |
Medium |
Top K Frequent Words |
692-top-k-frequent-words.cpp |
O(n*log(k)) |
O(n) |
695 |
Medium |
Max Area of Island |
695-max-area-of-island.cpp |
O(m*n) |
O(m*n) |
704 |
Easy |
Binary Search |
704-binary-search.cpp |
O(log(n)) |
O(1) |
724 |
Easy |
Find Pivot Index |
724-find-pivot-index.cpp |
O(n) |
O(1) |
733 |
Easy |
Flood Fill |
733-flood-fill.cpp |
O(m*n) |
O(m*n) |
739 |
Medium |
Daily Temperatures |
739-daily-temperatures.cpp |
O(n) |
O(n) |
746 |
Easy |
Min Cost Climbing Stairs |
746-min-cost-climbing-stairs.cpp |
O(n) |
O(n) |
764 |
Medium |
Largest Plus Sign |
764-largest-plus-sign.cpp |
O(n^2) |
O(n^2) |
784 |
Medium |
Letter Case Permutation |
784-letter-case-permutation.cpp |
O(n*2^n) |
O(n*2^n) |
844 |
Easy |
Backspace String Compare |
844-backspace-string-compare.cpp |
O(n) |
O(1) |
848 |
Medium |
Shifting Letters |
848-shifting-letters.cpp |
O(n) |
O(n) |
876 |
Easy |
Middle of the Linked List |
876-middle-of-the-linked-list.cpp |
O(n) |
O(1) |
899 |
Hard |
Orderly Queue |
899-orderly-queue.cpp |
O(n^2) |
O(n) |
917 |
Easy |
Reverse Only Letters |
917-reverse-only-letters.cpp |
O(n) |
O(n) |
929 |
Easy |
Unique Email Addresses |
929-unique-email-addresses.cpp |
O(n) |
O(n) |
977 |
Easy |
Squares of a Sorted Array |
977-squares-of-a-sorted-array.cpp |
O(n) |
O(n) |
978 |
Medium |
Longest Turbulent Subarray |
978-longest-turbulent-subarray.cpp |
O(n) |
O(1) |
994 |
Medium |
Rotting Oranges |
994-rotting-oranges.cpp |
O(m*n) |
O(m*n) |
1008 |
Medium |
Construct Binary Search Tree from Preorder Traversal |
1008-construct-binary-search-tree-from-preorder-traversal.cpp |
O(n*log(n)) maybe? |
O(n) |
1011 |
Medium |
Capacity To Ship Packages Within D Days |
1011-capacity-to-ship-packages-within-d-days.cpp |
O(n*log(sum(W)-max(W))), where W = the weights of packages |
O(1) |
1046 |
Easy |
Last Stone Weight |
1046-last-stone-weight.cpp |
O(n*log(n)) |
O(n) |
1137 |
Easy |
N-th Tribonacci Number |
1137-n-th-tribonacci-number.cpp |
O(n) |
O(n) |
1143 |
Medium |
Longest Common Subsequence |
1143-longest-common-subsequence.cpp |
O(n1*n2) |
O(n1*n2) |
1189 |
Easy |
Maximum Number of Balloons |
1189-maximum-number-of-balloons.cpp |
O(n) |
O(1) |
1426 |
Easy |
Counting Elements |
1426-counting-elements.cpp |
O(n) |
O(n) |
1427 |
Easy |
Perform String Shifts |
1427-perform-string-shifts.cpp |
O(m+n) |
O(n) |
1428 |
Medium |
Leftmost Column with at Least a One |
1428-leftmost-column-with-at-least-a-one.cpp |
O(r+c) |
O(1) |
1429 |
Medium |
First Unique Number |
1429-first-unique-number.cpp |
O(1) for { showFirstUnique(), add(value) } |
O(n) |
1430 |
Medium |
Check If a String Is a Valid Sequence from Root to Leaves Path in a Binary Tree |
1430-check-if-a-string-is-a-valid-sequence-from-root-to-leaves-path-in-a-binary-tree.cpp |
O(n) |
O(n) |
1475 |
Easy |
Final Prices With a Special Discount in a Shop |
1475-final-prices-with-a-special-discount-in-a-shop.cpp |
O(n) |
O(n) |
1480 |
Easy |
Running Sum of 1d Array |
1480-running-sum-of-1d-array.cpp |
O(n) |
O(n) |
1629 |
Easy |
Slowest Key |
1629-slowest-key.cpp |
O(n) |
O(1) |
1944 |
Hard |
Number of Visible People in a Queue |
1944-number-of-visible-people-in-a-queue.cpp |
O(n) |
O(n) |
1985 |
Medium |
Find the Kth Largest Integer in the Array |
1985-find-the-kth-largest-integer-in-the-array.cpp |
O(n), on average |
O(1) |
2487 |
Medium |
Remove Nodes From Linked List |
2487-remove-nodes-from-linked-list.cpp |
O(n) |
O(1) |