Skip to content

Latest commit

 

History

History
1587 lines (1186 loc) · 159 KB

File metadata and controls

1587 lines (1186 loc) · 159 KB

Table of Contents

Merge Sort (3)

Squence Problem Level Language Tags Video Tutorial
0 MergeSort.java Medium Java [Merge Sort, Sort]
1 Sort List.java Medium Java [Divide and Conquer, Linked List, Merge Sort, Sort]
2 Count of Range Sum.java Hard Java [BST, Divide and Conquer, Merge Sort, PreSum]

Sequence DFS (2)

Squence Problem Level Language Tags Video Tutorial
0 Generate Parentheses.java Medium Java [Backtracking, DFS, Sequence DFS, String]
1 Strobogrammatic Number II.java Medium Java [DFS, Math, Sequence DFS]

String (47)

Squence Problem Level Language Tags Video Tutorial
0 Multiply Strings.java Medium Java [Math, String]
1 Space Replacement.java Medium Java [String]
2 Judge Route Circle.java Easy Java [String]
3 First Unique Character in a String.java Easy Java [Hash Table, String]
4 Reverse Vowels of a String.java Easy Java [String, Two Pointers]
5 Scramble String.java Hard Java [DP, Interval DP, String]
6 Interleaving String.java Hard Java [DP, String]
7 Letter Combinations of a Phone Number.java Medium Java [Backtracking, String]
8 Edit Distance.java Hard Java [DP, Double Sequence DP, String]
9 Distinct Subsequences.java Hard Java [DP, String]
10 Regular Expression Matching.java Review Java [Backtracking, DP, String]
11 Wildcard Matching.java Hard Java [Backtracking, DP, Greedy, String]
12 Add Binary.java Easy Java [Math, String]
13 Longest Substring Without Repeating Characters.java Medium Java [Hash Table, String, Two Pointers]
14 Minimum Window Substring.java Hard Java [Hash Table, String, Two Pointers]
15 Longest Substring with At Most K Distinct Characters.java Medium Java [Hash Table, String]
16 Palindrome Pairs.java Hard Java [Hash Table, String, Trie]
17 Change to Anagram.java Easy Java [String]
18 Compare Version Numbers.java Medium Java [String]
19 Compare Strings.java Easy Java [String]
20 Count and Say.java Easy Java [Basic Implementation, String]
21 One Edit Distance.java Medium Java [String]
22 Decode Ways.java Medium Java [DP, Partition DP, String]
23 Group Anagrams.java Medium Java [Hash Table, String]
24 Flip Game.java Easy Java [String]
25 Implement strStr().java Easy Java [String, Two Pointers]
26 Integer to English Words.java Hard Java [Math, String]
27 Length of Last Word.java Easy Java [String]
28 Longest Common Substring.java Medium Java [DP, Double Sequence DP, String]
29 Longest Words.java Easy Java [Hash Map, String]
30 Valid Palindrome.java Easy Java [String, Two Pointers]
31 Rotate String.java Easy Java [String]
32 Next Closest Time.java Medium Java [Basic Implementation, Enumeration, String]
33 Encode and Decode Strings.java Medium Java [String]
34 Longest Common Prefix.java Easy Java [String]
35 Restore IP Addresses.java Medium Java [Backtracking, DFS, String]
36 Reverse Words in a String.java Medium Java [String]
37 Reverse Words in a String II.java Medium Java [String]
38 Reverse Words in a String III.java Easy Java [String]
39 Unique Characters.java Easy Java [Array, String]
40 Expression Add Operators.java Hard Java [Backtracking, DFS, Divide and Conquer, String]
41 Shortest Palindrome.java Hard Java [KMP, String]
42 Generate Parentheses.java Medium Java [Backtracking, DFS, Sequence DFS, String]
43 Binary Representation.java Hard Java [Bit Manipulation, String]
44 Longest Palindromic Substring.java Medium Java [DP, String]
45 Longest Valid Parentheses.java Hard Java [Coordinate DP, Stack, String]
46 Sort Letters by Case.java Medium Java [Partition, Sort, String, Two Pointers]

Math (29)

Squence Problem Level Language Tags Video Tutorial
0 Fraction to Recurring Decimal.java Medium Java [Hash Table, Math]
1 Multiply Strings.java Medium Java [Math, String]
2 Permutation Sequence.java Medium Java [Backtracking, Math]
3 Trailing Zeros.java Easy Java [Math]
4 Ugly Number II.java Medium Java [DP, Heap, Math]
5 Power of Three.java Easy Java [Math]
6 Plus One.java Easy Java [Array, Math]
7 Power of Two.java Easy Java [Bit Manipulation, Math]
8 Encode and Decode TinyURL.java Medium Java [Hash Table, Math]
9 Perfect Squares.java Medium Java [BFS, DP, Math, Partition DP]
10 Valid Perfect Square.java Review Java [Binary Search, Math]
11 Pow(x,n).java Medium Java [Binary Search, Math]
12 Add Binary.java Easy Java [Math, String]
13 Add Digits.java Easy Java [Math]
14 Add Two Numbers.java Medium Java [Linked List, Math]
15 Reverse Integer.java Easy Java [Math]
16 Sqrt(x).java Easy Java [Binary Search, Math]
17 Continuous Subarray Sum.java Medium Java [Coordinate DP, DP, Math]
18 Count Primes.java Easy Java [Hash Table, Math]
19 Excel Sheet Column Number.java Easy Java [Math]
20 Excel Sheet Column Title.java Easy Java [Math]
21 Integer to English Words.java Hard Java [Math, String]
22 Fibonacci.java Easy Java [DP, Math, Memoization]
23 Missing Number.java Easy Java [Array, Bit Manipulation, Math]
24 Basic Calculator.java Hard Java [Binary Tree, Expression Tree, Math, Minimum Binary Tree, Stack]
25 Ugly Number.java Medium Java [Math]
26 Strobogrammatic Number II.java Medium Java [DFS, Math, Sequence DFS]
27 Max Points on a Line.java Hard Java [Array, Geometry, Hash Table, Math]
28 Number of Digit One.java Hard Java [Math]

DP (75)

Squence Problem Level Language Tags Video Tutorial
0 Stone Game.java Medium Java [DP]
1 Ugly Number II.java Medium Java [DP, Heap, Math]
2 Coin Change.java Medium Java [DP, Memoization, Sequence DP]
3 Maximum Product Subarray.java Medium Java [Array, DP]
4 k Sum.java Hard Java [DP]
5 Longest Increasing Subsequence.java Medium Java [Binary Search, Coordinate DP, DP, Memoization, Sequence DP]
6 Unique Binary Search Tree.java Medium Java [BST, DP, Tree]
7 Unique Paths II.java Medium Java [Array, Coordinate DP, DP]
8 Bomb Enemy.java Medium Java [Coordinate DP, DP]
9 Perfect Squares.java Medium Java [BFS, DP, Math, Partition DP]
10 Backpack VI.java Medium Java [Backpack DP, DP]
11 Copy Books.java Hard Java [Binary Search, DP, Partition DP]
12 Scramble String.java Hard Java [DP, Interval DP, String]
13 Best Time to Buy and Sell Stock with Cooldown.java Medium Java [DP]
14 Longest Common Subsequence.java Medium Java [DP, Double Sequence DP]
15 Interleaving String.java Hard Java [DP, String]
16 Edit Distance.java Hard Java [DP, Double Sequence DP, String]
17 Distinct Subsequences.java Hard Java [DP, String]
18 Regular Expression Matching.java Review Java [Backtracking, DP, String]
19 Wildcard Matching.java Hard Java [Backtracking, DP, Greedy, String]
20 Ones and Zeroes.java Hard Java [DP]
21 Word Break II.java Hard Java [Backtracking, DFS, DP, Memoization]
22 Unique Path.java Medium Java [Array, Coordinate DP, DP]
23 Maximal Rectangle.java Hard Java [Array, DP, Hash Table, Stack]
24 Maximal Square.java Medium Java [Coordinate DP, DP]
25 Longest Increasing Path in a Matrix.java Hard Java [Coordinate DP, DFS, DP, Memoization, Topological Sort]
26 Coins in a Line.java Medium Java [DP, Game Theory, Greedy]
27 Coins in a Line II.java Medium Java [Array, DP, Game Theory, Memoization, MiniMax]
28 Climbing Stairs.java Easy Java [DP, Memoization, Sequence DP]
29 Coins in a Line III.java Hard Java [Array, DP, Game Theory, Interval DP, Memoization]
30 Burst Balloons.java Hard Java [DP, Divide and Conquer, Interval DP, Memoization]
31 Nim Game.java Easy Java [Brainteaser, DP, Game Theory]
32 K Edit Distance.java Hard Java [DP, Double Sequence DP, Trie]
33 Jump Game.java Medium Java [Array, DP, Greedy]
34 Coin Change 2.java Medium Java [Backpack DP, DP, Sequence DP]
35 Paint House.java Easy Java [DP, Sequence DP]
36 Decode Ways.java Medium Java [DP, Partition DP, String]
37 Longest Continuous Increasing Subsequence.java Easy Java [Array, Coordinate DP, DP]
38 Minimum Path Sum.java Medium Java [Array, Coordinate DP, DP]
39 Counting Bits.java Medium Java [Bit Manipulation, Bitwise DP, DP]
40 Continuous Subarray Sum.java Medium Java [Coordinate DP, DP, Math]
41 House Robber.java Easy Java [DP, Sequence DP]
42 House Robber II.java Medium Java [DP, Sequence DP]
43 House Robber III.java Medium Java [DFS, DP, Status DP, Tree]
44 Paint House II.java Hard Java [DP, Sequence DP]
45 Best Time to Buy and Sell Stock I.java Easy Java [Array, DP, Sequence DP]
46 Best Time to Buy and Sell Stock II.java Easy Java [Array, DP, Greedy, Sequence DP]
47 Best Time to Buy and Sell Stock III .java Hard Java [Array, DP, Sequence DP]
48 Best Time to Buy and Sell Stock IV.java Hard Java [DP, Sequence DP]
49 Russian Doll Envelopes.java Hard Java [Binary Search, Coordinate DP, DP]
50 Backpack.java Medium Java [Backpack DP, DP]
51 Backpack II.java Medium Java [Backpack DP, DP]
52 Backpack V.java Medium Java [Backpack DP, DP]
53 Decode Ways II.java Hard Java [DP, Partition DP]
54 Palindrome Partitioning II.java Hard Java [DP, Partition DP]
55 Backpack III.java Hard Java [Backpack DP, DP]
56 Longest Common Substring.java Medium Java [DP, Double Sequence DP, String]
57 Longest Increasing Continuous subsequence.java Easy Java [Array, Coordinate DP, DP]
58 Longest Increasing Continuous subsequence II.java Medium Java [Array, Coordinate DP, DP, Memoization]
59 Maximum Subarray.java Easy Java [Array, DFS, DP, Divide and Conquer, PreSum, Sequence DP]
60 Maximum Subarray II.java Medium Java [Array, DP, Greedy, PreSum, Sequence DP]
61 Fibonacci.java Easy Java [DP, Math, Memoization]
62 Binary Tree Maximum Path Sum.java Hard Java [DFS, DP, Tree, Tree DP]
63 Combination Sum IV.java Medium Java [Array, Backpack DP, DP]
64 Word Break.java Medium Java [DP, Sequence DP]
65 Unique Binary Search Tree II.java Medium Java [BST, DP, Divide and Conquer, Tree]
66 Max Sum of Rectangle No Larger Than K.java Hard Java [Array, BST, Binary Search, DP, Queue, TreeSet]
67 Flip Game II.java Medium Java [DFS, DP, backtracking]
68 Longest Palindromic Substring.java Medium Java [DP, String]
69 Longest Palindromic Subsequence.java Medium Java [DFS, DP, Interval DP, Memoization]
70 Jump Game II.java Hard Java [Array, Coordinate DP, DP, Greedy]
71 Triangles.java Medium Java [Array, Coordinate DP, DFS, DP, Memoization]
72 Range Sum Query - Immutable.java Easy Java [DP, PreSum]
73 Remove Invalid Parentheses.java Review Java [BFS, DFS, DP]
74 Paint Fence.java Easy Java [DP, Sequence DP]

Double Sequence DP (4)

Squence Problem Level Language Tags Video Tutorial
0 Longest Common Subsequence.java Medium Java [DP, Double Sequence DP]
1 Edit Distance.java Hard Java [DP, Double Sequence DP, String]
2 K Edit Distance.java Hard Java [DP, Double Sequence DP, Trie]
3 Longest Common Substring.java Medium Java [DP, Double Sequence DP, String]

BFS (28)

Squence Problem Level Language Tags Video Tutorial
0 Binary Tree Zigzag Level Order Traversal.java Medium Java [BFS, Stack, Tree]
1 Minimum Height Trees.java Medium Java [BFS, Graph]
2 Perfect Squares.java Medium Java [BFS, DP, Math, Partition DP]
3 Nested List Weight Sum.java Easy Java [BFS, DFS]
4 Clone Graph.java Medium Java [BFS, DFS, Graph]
5 Number of Islands.java Medium Java [BFS, DFS, Matrix DFS, Union Find]
6 Surrounded Regions.java Medium Java [BFS, DFS, Matrix DFS, Union Find]
7 Trapping Rain Water II.java Hard Java [BFS, Heap]
8 Course Schedule.java Medium Java [BFS, Backtracking, DFS, Graph, Topological Sort]
9 Course Schedule II.java Medium Java [BFS, DFS, Graph, Topological Sort]
10 Binary Tree Preorder Traversal.java Easy Java [BFS, DFS, Stack, Tree]
11 Complete Binary Tree.java Easy Java [BFS, Tree]
12 Invert Binary Tree.java Easy Java [BFS, DFS, Tree]
13 Minimum Depth of Binary Tree.java Easy Java [BFS, DFS, Tree]
14 Symmetric Tree.java Easy Java [BFS, DFS, Tree]
15 Binary Tree Level Order Traversal.java Medium Java [BFS, DFS, Tree]
16 Binary Tree Level Order Traversal II.java Medium Java [BFS, Tree]
17 Subset.java Medium Java [Array, BFS, Backtracking, Bit Manipulation, DFS]
18 Subsets II.java Medium Java [Array, BFS, Backtracking, DFS]
19 Binary Tree Right Side View.java Medium Java [BFS, DFS, Tree]
20 Number of Connected Components in an Undirected Graph.java Medium Java [BFS, DFS, Graph, Union Find]
21 Serilization and Deserialization Of Binary Tree.java Hard Java [BFS, DFS, Design, Divide and Conquer, Tree]
22 Word Ladder.java Medium Java [BFS]
23 Find the Connected Component in the Undirected Graph.java Medium Java [BFS, DFS]
24 Topological Sorting.java Medium Java [BFS, DFS, Topological Sort]
25 Alien Dictionary.java Hard Java [BFS, Backtracking, DFS, Graph, Topological Sort]
26 Graph Valid Tree.java Medium Java [BFS, DFS, Graph, Union Find]
27 Remove Invalid Parentheses.java Review Java [BFS, DFS, DP]

Segment Tree (10)

Squence Problem Level Language Tags Video Tutorial
0 Count of Smaller Number.java Review Java [Binary Search, Segment Tree]
1 Building Outline.java Review Java [Binary Indexed Tree, Divide and Conquer, Heap, Segment Tree, Sweep Line]
2 Segment Tree Build.java Medium Java [Binary Tree, Divide and Conquer, Segment Tree]
3 Segment Tree Build II.java Medium Java [Binary Tree, Divide and Conquer, Segment Tree]
4 Segment Tree Query.java Medium Java [Binary Tree, DFS, Divide and Conquer, Segment Tree]
5 Segment Tree Modify.java Medium Java [Binary Tree, DFS, Divide and Conquer, Segment Tree]
6 Segment Tree Query II.java Medium Java [Binary Tree, DFS, Divide and Conquer, Segment Tree]
7 Count of Smaller Numbers After Self.java Review Java [BST, Binary Indexed Tree, Binary Search, Divide and Conquer, Segment Tree]
8 Interval Minimum Number.java Medium Java [Binary Search, Divide and Conquer, Segment Tree]
9 Interval Sum.java Medium Java [Binary Search, Segment Tree]

Design (18)

Squence Problem Level Language Tags Video Tutorial
0 Flatten 2D Vector.java Medium Java [Design]
1 LFU Cache.java Hard Java [Design, Hash Table]
2 Binary Search Tree Iterator.java Medium Java [BST, Design, Stack, Tree]
3 Flatten Nested List Iterator.java Medium Java [Design, Stack]
4 Implement Trie.java Medium Java [Design, Trie]
5 Add and Search Word.java Medium Java [Backtracking, Design, Trie]
6 Data Stream Median.java Hard Java [Design, Heap]
7 Sliding Window Median.java Hard Java [Design, Heap]
8 Min Stack.java Easy Java [Design, Stack]
9 Implement Queue using Stacks.java Easy Java [Design, Stack]
10 Singleton.java Easy Java [Design]
11 Implement Stack using Queues.java Easy Java [Design, Stack]
12 LRU Cache.java Hard Java [Design, Hash Table, Linked List]
13 Serilization and Deserialization Of Binary Tree.java Hard Java [BFS, DFS, Design, Divide and Conquer, Tree]
14 Unique Word Abbreviation.java Medium Java [Design, Hash Table]
15 ColorGrid.java Medium Java [Design, Hash Table]
16 Peeking Iterator.java Medium Java [Design]
17 Perfect Rectangle.java Hard Java [Design, Geometry, Hash Table]

DFS (77)

Squence Problem Level Language Tags Video Tutorial
0 Word Break II.java Hard Java [Backtracking, DFS, DP, Memoization]
1 Nested List Weight Sum.java Easy Java [BFS, DFS]
2 Same Tree.java Easy Java [DFS, Tree]
3 Convert Sorted Array to Binary Search Tree.java Easy Java [DFS, Divide and Conquer, Tree]
4 Construct Binary Tree from Inorder and Preorder Traversal.java Medium Java [Array, DFS, Divide and Conquer, Hash Table, Tree]
5 Balanced Binary Tree.java Medium Java [DFS, Tree]
6 Populating Next Right Pointers in Each Node.java Medium Java [DFS, Divide and Conquer, Tree]
7 Validate Binary Search Tree.java Medium Java [BST, DFS, Divide and Conquer, Tree]
8 Convert Sorted List to Binary Search Tree.java Medium Java [BST, DFS, Divide and Conquer, Linked List]
9 Flatten Binary Tree to Linked List.java Medium Java [Binary Tree, DFS]
10 Binary Tree Paths.java Easy Java [Backtracking, Binary Tree, DFS]
11 Clone Graph.java Medium Java [BFS, DFS, Graph]
12 Number of Islands.java Medium Java [BFS, DFS, Matrix DFS, Union Find]
13 Surrounded Regions.java Medium Java [BFS, DFS, Matrix DFS, Union Find]
14 Word Search II.java Hard Java [Backtracking, DFS, Trie]
15 Word Search.java Medium Java [Array, Backtracking, DFS]
16 Decode String.java Medium Java [DFS, Divide and Conquer, Stack]
17 Find Peak Element II.java Hard Java [Binary Search, DFS, Divide and Conquer]
18 Longest Increasing Path in a Matrix.java Hard Java [Coordinate DP, DFS, DP, Memoization, Topological Sort]
19 Course Schedule.java Medium Java [BFS, Backtracking, DFS, Graph, Topological Sort]
20 Course Schedule II.java Medium Java [BFS, DFS, Graph, Topological Sort]
21 Binary Tree Preorder Traversal.java Easy Java [BFS, DFS, Stack, Tree]
22 House Robber III.java Medium Java [DFS, DP, Status DP, Tree]
23 Expression Evaluation.java Hard Java [Binary Tree, DFS, Expression Tree, Minimum Binary Tree, Stack]
24 Convert Expression to Polish Notation.java Hard Java [Binary Tree, DFS, Expression Tree, Stack]
25 Convert Expression to Reverse Polish Notation.java Hard Java [Binary Tree, DFS, Expression Tree, Stack]
26 Maximum Subarray.java Easy Java [Array, DFS, DP, Divide and Conquer, PreSum, Sequence DP]
27 Invert Binary Tree.java Easy Java [BFS, DFS, Tree]
28 Maximum Depth of Binary Tree.java Easy Java [DFS, Tree]
29 Minimum Depth of Binary Tree.java Easy Java [BFS, DFS, Tree]
30 Symmetric Tree.java Easy Java [BFS, DFS, Tree]
31 Tweaked Identical Binary Tree.java Easy Java [DFS, Tree]
32 Merge Two Binary Trees.java Easy Java [DFS, Tree]
33 Subtree.java Easy Java [DFS, Tree]
34 Lowest Common Ancestor of a Binary Tree.java Medium Java [DFS, Tree]
35 Lowest Common Ancestor of a Binary Search Tree.java Medium Java [BST, DFS, Tree]
36 Binary Tree Level Order Traversal.java Medium Java [BFS, DFS, Tree]
37 Binary Tree Longest Consecutive Sequence II.java Medium Java [DFS, Divide and Conquer, Double Recursive, Tree]
38 Binary Tree Maximum Path Sum.java Hard Java [DFS, DP, Tree, Tree DP]
39 Path Sum.java Easy Java [DFS, Tree]
40 Path Sum II.java Easy Java [Backtracking, DFS, Tree]
41 Path Sum III.java Easy Java [DFS, Double Recursive, Tree]
42 Path Sum IV.java Medium Java [DFS, Hash Map, Tree]
43 Combinations.java Medium Java [Backtracking, Combination, DFS]
44 Combination Sum.java Medium Java [Array, Backtracking, Combination, DFS]
45 Combination Sum II.java Medium Java [Array, Backtracking, Combination, DFS]
46 Combination Sum III.java Medium Java [Array, Backtracking, Combination, DFS]
47 Subset.java Medium Java [Array, BFS, Backtracking, Bit Manipulation, DFS]
48 Subsets II.java Medium Java [Array, BFS, Backtracking, DFS]
49 Binary Tree Right Side View.java Medium Java [BFS, DFS, Tree]
50 Binary Tree Maximum Path Sum II.java Medium Java [DFS, Tree]
51 Binary Tree Longest Consecutive Sequence.java Medium Java [DFS, Divide and Conquer, Tree]
52 Number of Connected Components in an Undirected Graph.java Medium Java [BFS, DFS, Graph, Union Find]
53 Serilization and Deserialization Of Binary Tree.java Hard Java [BFS, DFS, Design, Divide and Conquer, Tree]
54 Segment Tree Query.java Medium Java [Binary Tree, DFS, Divide and Conquer, Segment Tree]
55 Segment Tree Modify.java Medium Java [Binary Tree, DFS, Divide and Conquer, Segment Tree]
56 Segment Tree Query II.java Medium Java [Binary Tree, DFS, Divide and Conquer, Segment Tree]
57 Fast Power.java Medium Java [DFS, Divide and Conquer]
58 Find the Connected Component in the Undirected Graph.java Medium Java [BFS, DFS]
59 Kth Smallest Element in a BST.java Medium Java [BST, DFS, Stack, Tree]
60 Permutations.java Medium Java [Backtracking, DFS, Permutation]
61 Restore IP Addresses.java Medium Java [Backtracking, DFS, String]
62 Topological Sorting.java Medium Java [BFS, DFS, Topological Sort]
63 Median of two Sorted Arrays.java Hard Java [Array, Binary Search, DFS, Divide and Conquer]
64 Expression Add Operators.java Hard Java [Backtracking, DFS, Divide and Conquer, String]
65 Construct Binary Tree from Inorder and Postorder Traversal.java Medium Java [Array, DFS, Divide and Conquer, Tree]
66 Generate Parentheses.java Medium Java [Backtracking, DFS, Sequence DFS, String]
67 Strobogrammatic Number II.java Medium Java [DFS, Math, Sequence DFS]
68 Alien Dictionary.java Hard Java [BFS, Backtracking, DFS, Graph, Topological Sort]
69 Flip Game II.java Medium Java [DFS, DP, backtracking]
70 Max Area of Island.java Easy Java [Array, DFS]
71 Palindrome Partitioning.java Medium Java [Backtracking, DFS]
72 Graph Valid Tree.java Medium Java [BFS, DFS, Graph, Union Find]
73 Recover Binary Search Tree.java Hard Java [BST, DFS, Tree]
74 Longest Palindromic Subsequence.java Medium Java [DFS, DP, Interval DP, Memoization]
75 Triangles.java Medium Java [Array, Coordinate DP, DFS, DP, Memoization]
76 Remove Invalid Parentheses.java Review Java [BFS, DFS, DP]

Game Theory (4)

Squence Problem Level Language Tags Video Tutorial
0 Coins in a Line.java Medium Java [DP, Game Theory, Greedy]
1 Coins in a Line II.java Medium Java [Array, DP, Game Theory, Memoization, MiniMax]
2 Coins in a Line III.java Hard Java [Array, DP, Game Theory, Interval DP, Memoization]
3 Nim Game.java Easy Java [Brainteaser, DP, Game Theory]

Hash Table (43)

Squence Problem Level Language Tags Video Tutorial
0 Fraction to Recurring Decimal.java Medium Java [Hash Table, Math]
1 Jewels and Stones.java Easy Java [Hash Table]
2 LFU Cache.java Hard Java [Design, Hash Table]
3 Majority Number III.java Medium Java [Hash Table, Linked List]
4 Find Anagram Mappings.java Easy Java [Hash Table]
5 Island Perimeter.java Easy Java [Hash Table]
6 First Unique Character in a String.java Easy Java [Hash Table, String]
7 Encode and Decode TinyURL.java Medium Java [Hash Table, Math]
8 4 Sum.java Medium Java [Hash Table]
9 Intersection of Two Arrays II.java Easy Java [Binary Search, Hash Table, Sort, Two Pointers]
10 Construct Binary Tree from Inorder and Preorder Traversal.java Medium Java [Array, DFS, Divide and Conquer, Hash Table, Tree]
11 Valid Anagram.java Easy Java [Hash Table, Sort]
12 Longest Substring Without Repeating Characters.java Medium Java [Hash Table, String, Two Pointers]
13 Minimum Window Substring.java Hard Java [Hash Table, String, Two Pointers]
14 Longest Substring with At Most K Distinct Characters.java Medium Java [Hash Table, String]
15 Palindrome Pairs.java Hard Java [Hash Table, String, Trie]
16 Maximal Rectangle.java Hard Java [Array, DP, Hash Table, Stack]
17 Binary Tree Inorder Traversal.java Easy Java [Hash Table, Stack, Tree]
18 Contains Duplicate.java Easy Java [Array, Hash Table]
19 Contains Duplicate II.java Easy Java [Array, Hash Table]
20 Find All Anagrams in a String.java Easy Java [Hash Table]
21 Group Anagrams.java Medium Java [Hash Table, String]
22 Count Primes.java Easy Java [Hash Table, Math]
23 Palindrome Permutation.java Easy Java [Hash Table]
24 Lowest Common Ancestor II.java Easy Java [Hash Table, Tree]
25 Hash Function.java Easy Java [Hash Table]
26 LRU Cache.java Hard Java [Design, Hash Table, Linked List]
27 Longest Word in Dictionary.java Easy Java [Hash Table, Trie]
28 Longest Consecutive Sequence.java Hard Java [Array, Hash Table, Union Find]
29 Unique Word Abbreviation.java Medium Java [Design, Hash Table]
30 Top K Frequent Words.java Medium Java [Hash Table, Heap, PriorityQueue, Trie]
31 ColorGrid.java Medium Java [Design, Hash Table]
32 Copy List with Random Pointer.java Medium Java [Hash Table, Linked List]
33 HashWithCustomizedClass(LinkedList).java Medium Java [Hash Table]
34 Rehashing.java Medium Java [Hash Table]
35 Top K Frequent Elements.java Medium Java [Hash Table, Heap, PriorityQueue]
36 Remove Duplicate Letters.java Hard Java [Greedy, Hash Table, Stack]
37 2 Sum.java Easy Java [Array, Hash Table]
38 Perfect Rectangle.java Hard Java [Design, Geometry, Hash Table]
39 Max Points on a Line.java Hard Java [Array, Geometry, Hash Table, Math]
40 Subarray Sum.java Easy Java [Array, Hash Table]
41 Submatrix Sum.java Medium Java [Array, Hash Table, PreSum]
42 H-Index.java Medium Java [Bucket Sort, Hash Table, Sort]

Backtracking (29)

Squence Problem Level Language Tags Video Tutorial
0 Gray Code.java Medium Java [Backtracking]
1 Palindrome Permutation II.java Medium Java [Backtracking, Permutation]
2 Permutation Sequence.java Medium Java [Backtracking, Math]
3 Letter Combinations of a Phone Number.java Medium Java [Backtracking, String]
4 Regular Expression Matching.java Review Java [Backtracking, DP, String]
5 Wildcard Matching.java Hard Java [Backtracking, DP, Greedy, String]
6 Word Break II.java Hard Java [Backtracking, DFS, DP, Memoization]
7 Binary Tree Paths.java Easy Java [Backtracking, Binary Tree, DFS]
8 Add and Search Word.java Medium Java [Backtracking, Design, Trie]
9 Word Search II.java Hard Java [Backtracking, DFS, Trie]
10 Word Search.java Medium Java [Array, Backtracking, DFS]
11 Word Squares.java Hard Java [Backtracking, Trie]
12 Course Schedule.java Medium Java [BFS, Backtracking, DFS, Graph, Topological Sort]
13 Permutations II.java Medium Java [Backtracking]
14 N-Queens.java Hard Java [Backtracking]
15 N-Queens II.java Hard Java [Backtracking]
16 Path Sum II.java Easy Java [Backtracking, DFS, Tree]
17 Combinations.java Medium Java [Backtracking, Combination, DFS]
18 Combination Sum.java Medium Java [Array, Backtracking, Combination, DFS]
19 Combination Sum II.java Medium Java [Array, Backtracking, Combination, DFS]
20 Combination Sum III.java Medium Java [Array, Backtracking, Combination, DFS]
21 Subset.java Medium Java [Array, BFS, Backtracking, Bit Manipulation, DFS]
22 Subsets II.java Medium Java [Array, BFS, Backtracking, DFS]
23 Permutations.java Medium Java [Backtracking, DFS, Permutation]
24 Restore IP Addresses.java Medium Java [Backtracking, DFS, String]
25 Expression Add Operators.java Hard Java [Backtracking, DFS, Divide and Conquer, String]
26 Generate Parentheses.java Medium Java [Backtracking, DFS, Sequence DFS, String]
27 Alien Dictionary.java Hard Java [BFS, Backtracking, DFS, Graph, Topological Sort]
28 Palindrome Partitioning.java Medium Java [Backtracking, DFS]

Double Recursive (2)

Squence Problem Level Language Tags Video Tutorial
0 Binary Tree Longest Consecutive Sequence II.java Medium Java [DFS, Divide and Conquer, Double Recursive, Tree]
1 Path Sum III.java Easy Java [DFS, Double Recursive, Tree]

Combination (4)

Squence Problem Level Language Tags Video Tutorial
0 Combinations.java Medium Java [Backtracking, Combination, DFS]
1 Combination Sum.java Medium Java [Array, Backtracking, Combination, DFS]
2 Combination Sum II.java Medium Java [Array, Backtracking, Combination, DFS]
3 Combination Sum III.java Medium Java [Array, Backtracking, Combination, DFS]

TreeSet (2)

Squence Problem Level Language Tags Video Tutorial
0 K Empty Slots.java Hard Java [Array, BST, TreeSet]
1 Max Sum of Rectangle No Larger Than K.java Hard Java [Array, BST, Binary Search, DP, Queue, TreeSet]

Tree (46)

Squence Problem Level Language Tags Video Tutorial
0 Binary Tree Zigzag Level Order Traversal.java Medium Java [BFS, Stack, Tree]
1 Inorder Successor in Binary Search Tree.java Medium Java [BST, Tree]
2 Unique Binary Search Tree.java Medium Java [BST, DP, Tree]
3 Trim a Binary Search Tree.java Easy Java [BST, Tree]
4 Binary Search Tree Iterator.java Medium Java [BST, Design, Stack, Tree]
5 Same Tree.java Easy Java [DFS, Tree]
6 Convert Sorted Array to Binary Search Tree.java Easy Java [DFS, Divide and Conquer, Tree]
7 Construct Binary Tree from Inorder and Preorder Traversal.java Medium Java [Array, DFS, Divide and Conquer, Hash Table, Tree]
8 Balanced Binary Tree.java Medium Java [DFS, Tree]
9 Populating Next Right Pointers in Each Node.java Medium Java [DFS, Divide and Conquer, Tree]
10 Validate Binary Search Tree.java Medium Java [BST, DFS, Divide and Conquer, Tree]
11 Maximum Binary Tree.java Medium Java [Stack, Tree]
12 Binary Tree Inorder Traversal.java Easy Java [Hash Table, Stack, Tree]
13 Binary Tree Postorder Traversal.java Medium Java [Stack, Tree, Two Stacks]
14 Closest Binary Search Tree Value.java Easy Java [BST, Binary Search, Tree]
15 Count Complete Tree Nodes.java Medium Java [Binary Search, Tree]
16 Binary Tree Preorder Traversal.java Easy Java [BFS, DFS, Stack, Tree]
17 Complete Binary Tree.java Easy Java [BFS, Tree]
18 House Robber III.java Medium Java [DFS, DP, Status DP, Tree]
19 Invert Binary Tree.java Easy Java [BFS, DFS, Tree]
20 Maximum Depth of Binary Tree.java Easy Java [DFS, Tree]
21 Minimum Depth of Binary Tree.java Easy Java [BFS, DFS, Tree]
22 Symmetric Tree.java Easy Java [BFS, DFS, Tree]
23 Tweaked Identical Binary Tree.java Easy Java [DFS, Tree]
24 Merge Two Binary Trees.java Easy Java [DFS, Tree]
25 Subtree.java Easy Java [DFS, Tree]
26 Lowest Common Ancestor of a Binary Tree.java Medium Java [DFS, Tree]
27 Lowest Common Ancestor II.java Easy Java [Hash Table, Tree]
28 Lowest Common Ancestor of a Binary Search Tree.java Medium Java [BST, DFS, Tree]
29 Binary Tree Level Order Traversal.java Medium Java [BFS, DFS, Tree]
30 Binary Tree Level Order Traversal II.java Medium Java [BFS, Tree]
31 Binary Tree Longest Consecutive Sequence II.java Medium Java [DFS, Divide and Conquer, Double Recursive, Tree]
32 Binary Tree Maximum Path Sum.java Hard Java [DFS, DP, Tree, Tree DP]
33 Path Sum.java Easy Java [DFS, Tree]
34 Path Sum II.java Easy Java [Backtracking, DFS, Tree]
35 Path Sum III.java Easy Java [DFS, Double Recursive, Tree]
36 Path Sum IV.java Medium Java [DFS, Hash Map, Tree]
37 Binary Tree Right Side View.java Medium Java [BFS, DFS, Tree]
38 Binary Tree Maximum Path Sum II.java Medium Java [DFS, Tree]
39 Binary Tree Longest Consecutive Sequence.java Medium Java [DFS, Divide and Conquer, Tree]
40 Serilization and Deserialization Of Binary Tree.java Hard Java [BFS, DFS, Design, Divide and Conquer, Tree]
41 Unique Binary Search Tree II.java Medium Java [BST, DP, Divide and Conquer, Tree]
42 Convert Binary Search Tree to Doubly Linked List.java Medium Java [Linked List, Tree]
43 Kth Smallest Element in a BST.java Medium Java [BST, DFS, Stack, Tree]
44 Construct Binary Tree from Inorder and Postorder Traversal.java Medium Java [Array, DFS, Divide and Conquer, Tree]
45 Recover Binary Search Tree.java Hard Java [BST, DFS, Tree]

Sort (20)

Squence Problem Level Language Tags Video Tutorial
0 The Smallest Difference.java Medium Java [Array, Sort, Two Pointers]
1 Wiggle Sort.java Medium Java [Array, Sort]
2 Intersection of Two Arrays II.java Easy Java [Binary Search, Hash Table, Sort, Two Pointers]
3 Valid Anagram.java Easy Java [Hash Table, Sort]
4 Meeting Rooms.java Easy Java [Sort, Sweep Line]
5 Number of Airplane in the sky.java Medium Java [Array, Interval, Sort, Sweep Line]
6 Meeting Rooms II.java Medium Java [Greedy, Heap, Sort, Sweep Line]
7 Insertion Sort List.java Medium Java [Linked List, Sort]
8 Largest Number.java Medium Java [Sort]
9 QuickSort.java Medium Java [Sort]
10 MergeSort.java Medium Java [Merge Sort, Sort]
11 Partition Array.java Medium Java [Array, Quick Sort, Sort, Two Pointers]
12 Sort List.java Medium Java [Divide and Conquer, Linked List, Merge Sort, Sort]
13 Insert Interval.java Hard Java [Array, PriorityQueue, Sort]
14 Merge Intervals.java Medium Java [Array, PriorityQueue, Sort, Sweep Line]
15 H-Index.java Medium Java [Bucket Sort, Hash Table, Sort]
16 Sort Color.java Medium Java [Array, Partition, Sort, Two Pointers]
17 Sort Colors II.java Medium Java [Partition, Sort, Two Pointers]
18 Sort Letters by Case.java Medium Java [Partition, Sort, String, Two Pointers]
19 Subarray Sum Closest.java Medium Java [PreSum, Sort]

Trie (9)

Squence Problem Level Language Tags Video Tutorial
0 Maximum XOR of Two Numbers in an Array.java Medium Java [Bit Manipulation, Trie]
1 Implement Trie.java Medium Java [Design, Trie]
2 Add and Search Word.java Medium Java [Backtracking, Design, Trie]
3 Word Search II.java Hard Java [Backtracking, DFS, Trie]
4 Word Squares.java Hard Java [Backtracking, Trie]
5 Palindrome Pairs.java Hard Java [Hash Table, String, Trie]
6 K Edit Distance.java Hard Java [DP, Double Sequence DP, Trie]
7 Longest Word in Dictionary.java Easy Java [Hash Table, Trie]
8 Top K Frequent Words.java Medium Java [Hash Table, Heap, PriorityQueue, Trie]

BST (21)

Squence Problem Level Language Tags Video Tutorial
0 Inorder Successor in Binary Search Tree.java Medium Java [BST, Tree]
1 Insert Node in a Binary Search Tree .java Easy Java [BST]
2 Minimum Absolute Difference in BST.java Easy Java [BST]
3 Remove Node in Binary Search Tree.java Hard Java [BST]
4 Zigzag Iterator.java Medium Java [BST]
5 Unique Binary Search Tree.java Medium Java [BST, DP, Tree]
6 Trim a Binary Search Tree.java Easy Java [BST, Tree]
7 Binary Search Tree Iterator.java Medium Java [BST, Design, Stack, Tree]
8 Validate Binary Search Tree.java Medium Java [BST, DFS, Divide and Conquer, Tree]
9 Convert Sorted List to Binary Search Tree.java Medium Java [BST, DFS, Divide and Conquer, Linked List]
10 Closest Binary Search Tree Value.java Easy Java [BST, Binary Search, Tree]
11 Contains Duplicate III.java Medium Java [BST]
12 Lowest Common Ancestor of a Binary Search Tree.java Medium Java [BST, DFS, Tree]
13 Unique Binary Search Tree II.java Medium Java [BST, DP, Divide and Conquer, Tree]
14 Count of Smaller Numbers After Self.java Review Java [BST, Binary Indexed Tree, Binary Search, Divide and Conquer, Segment Tree]
15 Kth Smallest Element in a BST.java Medium Java [BST, DFS, Stack, Tree]
16 Search Range in Binary Search Tree .java Medium Java [BST, Binary Tree]
17 K Empty Slots.java Hard Java [Array, BST, TreeSet]
18 Count of Range Sum.java Hard Java [BST, Divide and Conquer, Merge Sort, PreSum]
19 Max Sum of Rectangle No Larger Than K.java Hard Java [Array, BST, Binary Search, DP, Queue, TreeSet]
20 Recover Binary Search Tree.java Hard Java [BST, DFS, Tree]

Permutation (3)

Squence Problem Level Language Tags Video Tutorial
0 Palindrome Permutation II.java Medium Java [Backtracking, Permutation]
1 Shuffle an Array.java Medium Java [Permutation]
2 Permutations.java Medium Java [Backtracking, DFS, Permutation]

Partition DP (5)

Squence Problem Level Language Tags Video Tutorial
0 Perfect Squares.java Medium Java [BFS, DP, Math, Partition DP]
1 Copy Books.java Hard Java [Binary Search, DP, Partition DP]
2 Decode Ways.java Medium Java [DP, Partition DP, String]
3 Decode Ways II.java Hard Java [DP, Partition DP]
4 Palindrome Partitioning II.java Hard Java [DP, Partition DP]

PriorityQueue (6)

Squence Problem Level Language Tags Video Tutorial
0 Top K Frequent Words.java Medium Java [Hash Table, Heap, PriorityQueue, Trie]
1 Merge k Sorted Lists.java Medium Java [Divide and Conquer, Heap, Linked List, PriorityQueue]
2 Merge k Sorted Arrays.java Medium Java [Heap, PriorityQueue]
3 Top K Frequent Elements.java Medium Java [Hash Table, Heap, PriorityQueue]
4 Insert Interval.java Hard Java [Array, PriorityQueue, Sort]
5 Merge Intervals.java Medium Java [Array, PriorityQueue, Sort, Sweep Line]

Heap (13)

Squence Problem Level Language Tags Video Tutorial
0 Heapify.java Review Java [Heap]
1 Kth Largest Element.java Review Java [Divide and Conquer, Heap, Quick Sort]
2 Ugly Number II.java Medium Java [DP, Heap, Math]
3 Kth Smallest Number in Sorted Matrix.java Medium Java [Binary Search, Heap]
4 Trapping Rain Water II.java Hard Java [BFS, Heap]
5 Data Stream Median.java Hard Java [Design, Heap]
6 Sliding Window Median.java Hard Java [Design, Heap]
7 Meeting Rooms II.java Medium Java [Greedy, Heap, Sort, Sweep Line]
8 Building Outline.java Review Java [Binary Indexed Tree, Divide and Conquer, Heap, Segment Tree, Sweep Line]
9 Top K Frequent Words.java Medium Java [Hash Table, Heap, PriorityQueue, Trie]
10 Merge k Sorted Lists.java Medium Java [Divide and Conquer, Heap, Linked List, PriorityQueue]
11 Merge k Sorted Arrays.java Medium Java [Heap, PriorityQueue]
12 Top K Frequent Elements.java Medium Java [Hash Table, Heap, PriorityQueue]

Interval DP (4)

Squence Problem Level Language Tags Video Tutorial
0 Scramble String.java Hard Java [DP, Interval DP, String]
1 Coins in a Line III.java Hard Java [Array, DP, Game Theory, Interval DP, Memoization]
2 Burst Balloons.java Hard Java [DP, Divide and Conquer, Interval DP, Memoization]
3 Longest Palindromic Subsequence.java Medium Java [DFS, DP, Interval DP, Memoization]

Stack (24)

Squence Problem Level Language Tags Video Tutorial
0 Binary Tree Zigzag Level Order Traversal.java Medium Java [BFS, Stack, Tree]
1 Binary Search Tree Iterator.java Medium Java [BST, Design, Stack, Tree]
2 Flatten Nested List Iterator.java Medium Java [Design, Stack]
3 Trapping Rain Water.java Hard Java [Array, Stack, Two Pointers]
4 Min Stack.java Easy Java [Design, Stack]
5 Implement Queue using Stacks.java Easy Java [Design, Stack]
6 Decode String.java Medium Java [DFS, Divide and Conquer, Stack]
7 Largest Rectangle in Histogram.java Hard Java [Array, Monotonous Stack, Stack]
8 Maximum Binary Tree.java Medium Java [Stack, Tree]
9 Maximal Rectangle.java Hard Java [Array, DP, Hash Table, Stack]
10 Binary Tree Inorder Traversal.java Easy Java [Hash Table, Stack, Tree]
11 Binary Tree Postorder Traversal.java Medium Java [Stack, Tree, Two Stacks]
12 Binary Tree Preorder Traversal.java Easy Java [BFS, DFS, Stack, Tree]
13 Expression Tree Build.java Hard Java [Binary Tree, Expression Tree, Minimum Binary Tree, Stack]
14 Expression Evaluation.java Hard Java [Binary Tree, DFS, Expression Tree, Minimum Binary Tree, Stack]
15 Convert Expression to Polish Notation.java Hard Java [Binary Tree, DFS, Expression Tree, Stack]
16 Convert Expression to Reverse Polish Notation.java Hard Java [Binary Tree, DFS, Expression Tree, Stack]
17 Evaluate Reverse Polish Notation.java Medium Java [Stack]
18 Implement Stack using Queues.java Easy Java [Design, Stack]
19 Implement Stack.java Easy Java [Stack]
20 Basic Calculator.java Hard Java [Binary Tree, Expression Tree, Math, Minimum Binary Tree, Stack]
21 Kth Smallest Element in a BST.java Medium Java [BST, DFS, Stack, Tree]
22 Remove Duplicate Letters.java Hard Java [Greedy, Hash Table, Stack]
23 Longest Valid Parentheses.java Hard Java [Coordinate DP, Stack, String]

Linked List (30)

Squence Problem Level Language Tags Video Tutorial
0 Intersection of Two Linked Lists.java Easy Java [Linked List]
1 Majority Number III.java Medium Java [Hash Table, Linked List]
2 Remove Duplicates from Unsorted List.java Medium Java [Linked List]
3 Two Lists Sum.java Medium Java [Linked List]
4 Add Two Numbers.java Medium Java [Linked List, Math]
5 Add Two Numbers II.java Medium Java [Linked List]
6 Convert Sorted List to Binary Search Tree.java Medium Java [BST, DFS, Divide and Conquer, Linked List]
7 Linked List Cycle.java Easy Java [Linked List, Two Pointers]
8 Remove Nth Node From End of List.java Medium Java [Linked List, Two Pointers]
9 Linked List Cycle II.java Medium Java [Linked List, Two Pointers]
10 Swap Nodes in Pairs.java Medium Java [Linked List]
11 Delete Node in a Linked List.java Easy Java [Linked List]
12 Insertion Sort List.java Medium Java [Linked List, Sort]
13 Middle of Linked List.java Easy Java [Linked List]
14 Remove Linked List Elements.java Easy Java [Linked List]
15 Palindrome Linked List.java Easy Java [Linked List, Two Pointers]
16 Reverse Linked List.java Easy Java [Linked List]
17 Reverse Linked List II .java Medium Java [Linked List]
18 Merge Two Sorted Lists.java Easy Java [Linked List]
19 LRU Cache.java Hard Java [Design, Hash Table, Linked List]
20 Remove Duplicates from Sorted List.java Easy Java [Linked List]
21 Remove Duplicates from Sorted List II.java Medium Java [Linked List]
22 Rotate List.java Medium Java [Linked List, Two Pointers]
23 Convert Binary Search Tree to Doubly Linked List.java Medium Java [Linked List, Tree]
24 Copy List with Random Pointer.java Medium Java [Hash Table, Linked List]
25 Merge k Sorted Lists.java Medium Java [Divide and Conquer, Heap, Linked List, PriorityQueue]
26 Partition List.java Medium Java [Linked List, Two Pointers]
27 Reorder List.java Medium Java [Linked List]
28 Nth to Last Node in List.java Easy Java [Linked List]
29 Sort List.java Medium Java [Divide and Conquer, Linked List, Merge Sort, Sort]

KMP (1)

Squence Problem Level Language Tags Video Tutorial
0 Shortest Palindrome.java Hard Java [KMP, String]

PreSum (7)

Squence Problem Level Language Tags Video Tutorial
0 Maximum Average Subarray II.java Review Java [Array, Binary Search, PreSum]
1 Maximum Subarray.java Easy Java [Array, DFS, DP, Divide and Conquer, PreSum, Sequence DP]
2 Maximum Subarray II.java Medium Java [Array, DP, Greedy, PreSum, Sequence DP]
3 Count of Range Sum.java Hard Java [BST, Divide and Conquer, Merge Sort, PreSum]
4 Submatrix Sum.java Medium Java [Array, Hash Table, PreSum]
5 Range Sum Query - Immutable.java Easy Java [DP, PreSum]
6 Subarray Sum Closest.java Medium Java [PreSum, Sort]

Binary Indexed Tree (2)

Squence Problem Level Language Tags Video Tutorial
0 Building Outline.java Review Java [Binary Indexed Tree, Divide and Conquer, Heap, Segment Tree, Sweep Line]
1 Count of Smaller Numbers After Self.java Review Java [BST, Binary Indexed Tree, Binary Search, Divide and Conquer, Segment Tree]

Graph (7)

Squence Problem Level Language Tags Video Tutorial
0 Minimum Height Trees.java Medium Java [BFS, Graph]
1 Clone Graph.java Medium Java [BFS, DFS, Graph]
2 Course Schedule.java Medium Java [BFS, Backtracking, DFS, Graph, Topological Sort]
3 Course Schedule II.java Medium Java [BFS, DFS, Graph, Topological Sort]
4 Number of Connected Components in an Undirected Graph.java Medium Java [BFS, DFS, Graph, Union Find]
5 Alien Dictionary.java Hard Java [BFS, Backtracking, DFS, Graph, Topological Sort]
6 Graph Valid Tree.java Medium Java [BFS, DFS, Graph, Union Find]

Brainteaser (1)

Squence Problem Level Language Tags Video Tutorial
0 Nim Game.java Easy Java [Brainteaser, DP, Game Theory]

Union Find (10)

Squence Problem Level Language Tags Video Tutorial
0 Find the Weak Connected Component in the Directed Graph.java Medium Java [Union Find]
1 Connecting Graph.java Medium Java [Union Find]
2 Connecting Graph II.java Medium Java [Union Find]
3 Connecting Graph III.java Medium Java [Union Find]
4 Number of Islands.java Medium Java [BFS, DFS, Matrix DFS, Union Find]
5 Number of Islands II.java Hard Java [Union Find]
6 Surrounded Regions.java Medium Java [BFS, DFS, Matrix DFS, Union Find]
7 Longest Consecutive Sequence.java Hard Java [Array, Hash Table, Union Find]
8 Number of Connected Components in an Undirected Graph.java Medium Java [BFS, DFS, Graph, Union Find]
9 Graph Valid Tree.java Medium Java [BFS, DFS, Graph, Union Find]

Matrix DFS (2)

Squence Problem Level Language Tags Video Tutorial
0 Number of Islands.java Medium Java [BFS, DFS, Matrix DFS, Union Find]
1 Surrounded Regions.java Medium Java [BFS, DFS, Matrix DFS, Union Find]

Sweep Line (5)

Squence Problem Level Language Tags Video Tutorial
0 Meeting Rooms.java Easy Java [Sort, Sweep Line]
1 Number of Airplane in the sky.java Medium Java [Array, Interval, Sort, Sweep Line]
2 Meeting Rooms II.java Medium Java [Greedy, Heap, Sort, Sweep Line]
3 Building Outline.java Review Java [Binary Indexed Tree, Divide and Conquer, Heap, Segment Tree, Sweep Line]
4 Merge Intervals.java Medium Java [Array, PriorityQueue, Sort, Sweep Line]

Interval (1)

Squence Problem Level Language Tags Video Tutorial
0 Number of Airplane in the sky.java Medium Java [Array, Interval, Sort, Sweep Line]

Sequence DP (16)

Squence Problem Level Language Tags Video Tutorial
0 Coin Change.java Medium Java [DP, Memoization, Sequence DP]
1 Longest Increasing Subsequence.java Medium Java [Binary Search, Coordinate DP, DP, Memoization, Sequence DP]
2 Climbing Stairs.java Easy Java [DP, Memoization, Sequence DP]
3 Coin Change 2.java Medium Java [Backpack DP, DP, Sequence DP]
4 Paint House.java Easy Java [DP, Sequence DP]
5 House Robber.java Easy Java [DP, Sequence DP]
6 House Robber II.java Medium Java [DP, Sequence DP]
7 Paint House II.java Hard Java [DP, Sequence DP]
8 Best Time to Buy and Sell Stock I.java Easy Java [Array, DP, Sequence DP]
9 Best Time to Buy and Sell Stock II.java Easy Java [Array, DP, Greedy, Sequence DP]
10 Best Time to Buy and Sell Stock III .java Hard Java [Array, DP, Sequence DP]
11 Best Time to Buy and Sell Stock IV.java Hard Java [DP, Sequence DP]
12 Maximum Subarray.java Easy Java [Array, DFS, DP, Divide and Conquer, PreSum, Sequence DP]
13 Maximum Subarray II.java Medium Java [Array, DP, Greedy, PreSum, Sequence DP]
14 Word Break.java Medium Java [DP, Sequence DP]
15 Paint Fence.java Easy Java [DP, Sequence DP]

Minimum Binary Tree (3)

Squence Problem Level Language Tags Video Tutorial
0 Expression Tree Build.java Hard Java [Binary Tree, Expression Tree, Minimum Binary Tree, Stack]
1 Expression Evaluation.java Hard Java [Binary Tree, DFS, Expression Tree, Minimum Binary Tree, Stack]
2 Basic Calculator.java Hard Java [Binary Tree, Expression Tree, Math, Minimum Binary Tree, Stack]

Bitwise DP (1)

Squence Problem Level Language Tags Video Tutorial
0 Counting Bits.java Medium Java [Bit Manipulation, Bitwise DP, DP]

MiniMax (1)

Squence Problem Level Language Tags Video Tutorial
0 Coins in a Line II.java Medium Java [Array, DP, Game Theory, Memoization, MiniMax]

Two Pointers (33)

Squence Problem Level Language Tags Video Tutorial
0 Partition Array by Odd and Even.java Easy Java [Array, Two Pointers]
1 Subarray Sum II.java Hard Java [Array, Binary Search, Two Pointers]
2 The Smallest Difference.java Medium Java [Array, Sort, Two Pointers]
3 Reverse Vowels of a String.java Easy Java [String, Two Pointers]
4 2 Sum II - Input array is sorted.java Medium Java [Array, Binary Search, Two Pointers]
5 2 Sum II.java Medium Java [Array, Binary Search, Two Pointers]
6 3 Sum Closest.java Medium Java [Array, Two Pointers]
7 3 Sum.java Medium Java [Array, Two Pointers]
8 3 Sum Smaller.java Medium Java [Array, Two Pointers]
9 Intersection of Two Arrays II.java Easy Java [Binary Search, Hash Table, Sort, Two Pointers]
10 Minimum Size Subarray Sum.java Medium Java [Array, Binary Search, Two Pointers]
11 Longest Substring Without Repeating Characters.java Medium Java [Hash Table, String, Two Pointers]
12 Minimum Window Substring.java Hard Java [Hash Table, String, Two Pointers]
13 Linked List Cycle.java Easy Java [Linked List, Two Pointers]
14 Remove Nth Node From End of List.java Medium Java [Linked List, Two Pointers]
15 Linked List Cycle II.java Medium Java [Linked List, Two Pointers]
16 Trapping Rain Water.java Hard Java [Array, Stack, Two Pointers]
17 Find the Duplicate Number.java Medium Java [Array, Binary Search, Two Pointers]
18 Permutation in String.java Medium Java [Two Pointers]
19 Implement strStr().java Easy Java [String, Two Pointers]
20 Interleaving Positive and Negative Numbers.java Medium Java [Two Pointers]
21 Merge Sorted Array.java Easy Java [Array, Two Pointers]
22 Palindrome Linked List.java Easy Java [Linked List, Two Pointers]
23 Valid Palindrome.java Easy Java [String, Two Pointers]
24 Remove Duplicates from Sorted Array.java Easy Java [Array, Two Pointers]
25 Remove Duplicates from Sorted Array II.java Medium Java [Array, Two Pointers]
26 Rotate List.java Medium Java [Linked List, Two Pointers]
27 Partition Array.java Medium Java [Array, Quick Sort, Sort, Two Pointers]
28 Container With Most Water.java Medium Java [Array, Two Pointers]
29 Partition List.java Medium Java [Linked List, Two Pointers]
30 Sort Color.java Medium Java [Array, Partition, Sort, Two Pointers]
31 Sort Colors II.java Medium Java [Partition, Sort, Two Pointers]
32 Sort Letters by Case.java Medium Java [Partition, Sort, String, Two Pointers]

Basic Implementation (3)

Squence Problem Level Language Tags Video Tutorial
0 Cosine Similarity.java Easy Java [Basic Implementation]
1 Count and Say.java Easy Java [Basic Implementation, String]
2 Next Closest Time.java Medium Java [Basic Implementation, Enumeration, String]

Backpack DP (7)

Squence Problem Level Language Tags Video Tutorial
0 Backpack VI.java Medium Java [Backpack DP, DP]
1 Coin Change 2.java Medium Java [Backpack DP, DP, Sequence DP]
2 Backpack.java Medium Java [Backpack DP, DP]
3 Backpack II.java Medium Java [Backpack DP, DP]
4 Backpack V.java Medium Java [Backpack DP, DP]
5 Backpack III.java Hard Java [Backpack DP, DP]
6 Combination Sum IV.java Medium Java [Array, Backpack DP, DP]

Bit Manipulation (15)

Squence Problem Level Language Tags Video Tutorial
0 O(1) Check Power of 2.java Easy Java [Bit Manipulation]
1 Single Number II.java Medium Java [Bit Manipulation]
2 Single Number III.java Medium Java [Bit Manipulation]
3 Power of Two.java Easy Java [Bit Manipulation, Math]
4 Sum of Two Integers.java Easy Java [Bit Manipulation]
5 Swap Bits.java Easy Java [Bit Manipulation]
6 Update Bits.java Medium Java [Bit Manipulation]
7 Maximum XOR of Two Numbers in an Array.java Medium Java [Bit Manipulation, Trie]
8 Majority Element.java Easy Java [Array, Bit Manipulation, Divide and Conquer]
9 Convert Integer A to Integer B.java Easy Java [Bit Manipulation]
10 Count 1 in Binary.java Easy Java [Bit Manipulation]
11 Counting Bits.java Medium Java [Bit Manipulation, Bitwise DP, DP]
12 Missing Number.java Easy Java [Array, Bit Manipulation, Math]
13 Subset.java Medium Java [Array, BFS, Backtracking, Bit Manipulation, DFS]
14 Binary Representation.java Hard Java [Bit Manipulation, String]

Quick Select (1)

Squence Problem Level Language Tags Video Tutorial
0 Median.java Easy Java [Array, Quick Select, Quick Sort]

Divide and Conquer (31)

Squence Problem Level Language Tags Video Tutorial
0 Kth Largest Element.java Review Java [Divide and Conquer, Heap, Quick Sort]
1 Majority Element.java Easy Java [Array, Bit Manipulation, Divide and Conquer]
2 Convert Sorted Array to Binary Search Tree.java Easy Java [DFS, Divide and Conquer, Tree]
3 Construct Binary Tree from Inorder and Preorder Traversal.java Medium Java [Array, DFS, Divide and Conquer, Hash Table, Tree]
4 Populating Next Right Pointers in Each Node.java Medium Java [DFS, Divide and Conquer, Tree]
5 Validate Binary Search Tree.java Medium Java [BST, DFS, Divide and Conquer, Tree]
6 Convert Sorted List to Binary Search Tree.java Medium Java [BST, DFS, Divide and Conquer, Linked List]
7 Decode String.java Medium Java [DFS, Divide and Conquer, Stack]
8 Find Peak Element II.java Hard Java [Binary Search, DFS, Divide and Conquer]
9 Building Outline.java Review Java [Binary Indexed Tree, Divide and Conquer, Heap, Segment Tree, Sweep Line]
10 Burst Balloons.java Hard Java [DP, Divide and Conquer, Interval DP, Memoization]
11 Maximum Subarray.java Easy Java [Array, DFS, DP, Divide and Conquer, PreSum, Sequence DP]
12 Binary Tree Longest Consecutive Sequence II.java Medium Java [DFS, Divide and Conquer, Double Recursive, Tree]
13 Binary Tree Longest Consecutive Sequence.java Medium Java [DFS, Divide and Conquer, Tree]
14 Serilization and Deserialization Of Binary Tree.java Hard Java [BFS, DFS, Design, Divide and Conquer, Tree]
15 Unique Binary Search Tree II.java Medium Java [BST, DP, Divide and Conquer, Tree]
16 Segment Tree Build.java Medium Java [Binary Tree, Divide and Conquer, Segment Tree]
17 Segment Tree Build II.java Medium Java [Binary Tree, Divide and Conquer, Segment Tree]
18 Segment Tree Query.java Medium Java [Binary Tree, DFS, Divide and Conquer, Segment Tree]
19 Segment Tree Modify.java Medium Java [Binary Tree, DFS, Divide and Conquer, Segment Tree]
20 Segment Tree Query II.java Medium Java [Binary Tree, DFS, Divide and Conquer, Segment Tree]
21 Count of Smaller Numbers After Self.java Review Java [BST, Binary Indexed Tree, Binary Search, Divide and Conquer, Segment Tree]
22 Fast Power.java Medium Java [DFS, Divide and Conquer]
23 Interval Minimum Number.java Medium Java [Binary Search, Divide and Conquer, Segment Tree]
24 Merge k Sorted Lists.java Medium Java [Divide and Conquer, Heap, Linked List, PriorityQueue]
25 Search a 2D Matrix II.java Medium Java [Binary Search, Divide and Conquer]
26 Sort List.java Medium Java [Divide and Conquer, Linked List, Merge Sort, Sort]
27 Median of two Sorted Arrays.java Hard Java [Array, Binary Search, DFS, Divide and Conquer]
28 Expression Add Operators.java Hard Java [Backtracking, DFS, Divide and Conquer, String]
29 Count of Range Sum.java Hard Java [BST, Divide and Conquer, Merge Sort, PreSum]
30 Construct Binary Tree from Inorder and Postorder Traversal.java Medium Java [Array, DFS, Divide and Conquer, Tree]

Status DP (1)

Squence Problem Level Language Tags Video Tutorial
0 House Robber III.java Medium Java [DFS, DP, Status DP, Tree]

Topological Sort (5)

Squence Problem Level Language Tags Video Tutorial
0 Longest Increasing Path in a Matrix.java Hard Java [Coordinate DP, DFS, DP, Memoization, Topological Sort]
1 Course Schedule.java Medium Java [BFS, Backtracking, DFS, Graph, Topological Sort]
2 Course Schedule II.java Medium Java [BFS, DFS, Graph, Topological Sort]
3 Topological Sorting.java Medium Java [BFS, DFS, Topological Sort]
4 Alien Dictionary.java Hard Java [BFS, Backtracking, DFS, Graph, Topological Sort]

Quick Sort (3)

Squence Problem Level Language Tags Video Tutorial
0 Kth Largest Element.java Review Java [Divide and Conquer, Heap, Quick Sort]
1 Median.java Easy Java [Array, Quick Select, Quick Sort]
2 Partition Array.java Medium Java [Array, Quick Sort, Sort, Two Pointers]

Bucket Sort (1)

Squence Problem Level Language Tags Video Tutorial
0 H-Index.java Medium Java [Bucket Sort, Hash Table, Sort]

Greedy (12)

Squence Problem Level Language Tags Video Tutorial
0 Majority Number II.java Medium Java [Enumeration, Greedy]
1 Minimum Subarray.java Easy Java [Array, Greedy]
2 Queue Reconstruction by Height.java Medium Java [Greedy]
3 Wildcard Matching.java Hard Java [Backtracking, DP, Greedy, String]
4 Meeting Rooms II.java Medium Java [Greedy, Heap, Sort, Sweep Line]
5 Coins in a Line.java Medium Java [DP, Game Theory, Greedy]
6 Jump Game.java Medium Java [Array, DP, Greedy]
7 Best Time to Buy and Sell Stock II.java Easy Java [Array, DP, Greedy, Sequence DP]
8 Maximum Subarray II.java Medium Java [Array, DP, Greedy, PreSum, Sequence DP]
9 Remove Duplicate Letters.java Hard Java [Greedy, Hash Table, Stack]
10 Jump Game II.java Hard Java [Array, Coordinate DP, DP, Greedy]
11 Gas Station.java Medium Java [Greedy]

Hash Map (3)

Squence Problem Level Language Tags Video Tutorial
0 Longest Words.java Easy Java [Hash Map, String]
1 Anagrams.java Medium Java [Array, Hash Map]
2 Path Sum IV.java Medium Java [DFS, Hash Map, Tree]

Queue (1)

Squence Problem Level Language Tags Video Tutorial
0 Max Sum of Rectangle No Larger Than K.java Hard Java [Array, BST, Binary Search, DP, Queue, TreeSet]

Coordinate DP (15)

Squence Problem Level Language Tags Video Tutorial
0 Longest Increasing Subsequence.java Medium Java [Binary Search, Coordinate DP, DP, Memoization, Sequence DP]
1 Unique Paths II.java Medium Java [Array, Coordinate DP, DP]
2 Bomb Enemy.java Medium Java [Coordinate DP, DP]
3 Unique Path.java Medium Java [Array, Coordinate DP, DP]
4 Maximal Square.java Medium Java [Coordinate DP, DP]
5 Longest Increasing Path in a Matrix.java Hard Java [Coordinate DP, DFS, DP, Memoization, Topological Sort]
6 Longest Continuous Increasing Subsequence.java Easy Java [Array, Coordinate DP, DP]
7 Minimum Path Sum.java Medium Java [Array, Coordinate DP, DP]
8 Continuous Subarray Sum.java Medium Java [Coordinate DP, DP, Math]
9 Russian Doll Envelopes.java Hard Java [Binary Search, Coordinate DP, DP]
10 Longest Increasing Continuous subsequence.java Easy Java [Array, Coordinate DP, DP]
11 Longest Increasing Continuous subsequence II.java Medium Java [Array, Coordinate DP, DP, Memoization]
12 Jump Game II.java Hard Java [Array, Coordinate DP, DP, Greedy]
13 Triangles.java Medium Java [Array, Coordinate DP, DFS, DP, Memoization]
14 Longest Valid Parentheses.java Hard Java [Coordinate DP, Stack, String]

Monotonous Stack (1)

Squence Problem Level Language Tags Video Tutorial
0 Largest Rectangle in Histogram.java Hard Java [Array, Monotonous Stack, Stack]

Partition (3)

Squence Problem Level Language Tags Video Tutorial
0 Sort Color.java Medium Java [Array, Partition, Sort, Two Pointers]
1 Sort Colors II.java Medium Java [Partition, Sort, Two Pointers]
2 Sort Letters by Case.java Medium Java [Partition, Sort, String, Two Pointers]

Enumeration (4)

Squence Problem Level Language Tags Video Tutorial
0 Majority Number II.java Medium Java [Enumeration, Greedy]
1 Rotate Image.java Medium Java [Array, Enumeration]
2 Next Closest Time.java Medium Java [Basic Implementation, Enumeration, String]
3 Spiral Matrix.java Medium Java [Array, Enumeration]

Binary Tree (13)

Squence Problem Level Language Tags Video Tutorial
0 Flatten Binary Tree to Linked List.java Medium Java [Binary Tree, DFS]
1 Binary Tree Paths.java Easy Java [Backtracking, Binary Tree, DFS]
2 Expression Tree Build.java Hard Java [Binary Tree, Expression Tree, Minimum Binary Tree, Stack]
3 Expression Evaluation.java Hard Java [Binary Tree, DFS, Expression Tree, Minimum Binary Tree, Stack]
4 Convert Expression to Polish Notation.java Hard Java [Binary Tree, DFS, Expression Tree, Stack]
5 Convert Expression to Reverse Polish Notation.java Hard Java [Binary Tree, DFS, Expression Tree, Stack]
6 Basic Calculator.java Hard Java [Binary Tree, Expression Tree, Math, Minimum Binary Tree, Stack]
7 Segment Tree Build.java Medium Java [Binary Tree, Divide and Conquer, Segment Tree]
8 Segment Tree Build II.java Medium Java [Binary Tree, Divide and Conquer, Segment Tree]
9 Segment Tree Query.java Medium Java [Binary Tree, DFS, Divide and Conquer, Segment Tree]
10 Segment Tree Modify.java Medium Java [Binary Tree, DFS, Divide and Conquer, Segment Tree]
11 Segment Tree Query II.java Medium Java [Binary Tree, DFS, Divide and Conquer, Segment Tree]
12 Search Range in Binary Search Tree .java Medium Java [BST, Binary Tree]

Expression Tree (5)

Squence Problem Level Language Tags Video Tutorial
0 Expression Tree Build.java Hard Java [Binary Tree, Expression Tree, Minimum Binary Tree, Stack]
1 Expression Evaluation.java Hard Java [Binary Tree, DFS, Expression Tree, Minimum Binary Tree, Stack]
2 Convert Expression to Polish Notation.java Hard Java [Binary Tree, DFS, Expression Tree, Stack]
3 Convert Expression to Reverse Polish Notation.java Hard Java [Binary Tree, DFS, Expression Tree, Stack]
4 Basic Calculator.java Hard Java [Binary Tree, Expression Tree, Math, Minimum Binary Tree, Stack]

Binary Search (37)

Squence Problem Level Language Tags Video Tutorial
0 Count of Smaller Number.java Review Java [Binary Search, Segment Tree]
1 Search Rotated in Sorted Array II.java Medium Java [Array, Binary Search]
2 Subarray Sum II.java Hard Java [Array, Binary Search, Two Pointers]
3 Guess Number Higher or Lower.java Easy Java [Binary Search]
4 2 Sum II - Input array is sorted.java Medium Java [Array, Binary Search, Two Pointers]
5 2 Sum II.java Medium Java [Array, Binary Search, Two Pointers]
6 Longest Increasing Subsequence.java Medium Java [Binary Search, Coordinate DP, DP, Memoization, Sequence DP]
7 Copy Books.java Hard Java [Binary Search, DP, Partition DP]
8 Valid Perfect Square.java Review Java [Binary Search, Math]
9 Intersection of Two Arrays II.java Easy Java [Binary Search, Hash Table, Sort, Two Pointers]
10 Find Peak Element.java Medium Java [Array, Binary Search]
11 Pow(x,n).java Medium Java [Binary Search, Math]
12 Minimum Size Subarray Sum.java Medium Java [Array, Binary Search, Two Pointers]
13 Kth Smallest Number in Sorted Matrix.java Medium Java [Binary Search, Heap]
14 Find Minimum in Rotated Sorted Array.java Medium Java [Array, Binary Search]
15 Find Minimum in Rotated Sorted Array II.java Hard Java [Array, Binary Search]
16 Find Peak Element II.java Hard Java [Binary Search, DFS, Divide and Conquer]
17 Sqrt(x).java Easy Java [Binary Search, Math]
18 First Bad Version.java Easy Java [Binary Search]
19 Wood Cut.java Medium Java [Binary Search]
20 Find the Duplicate Number.java Medium Java [Array, Binary Search, Two Pointers]
21 Maximum Average Subarray II.java Review Java [Array, Binary Search, PreSum]
22 Classical Binary Search.java Easy Java [Binary Search]
23 Closest Binary Search Tree Value.java Easy Java [BST, Binary Search, Tree]
24 Count Complete Tree Nodes.java Medium Java [Binary Search, Tree]
25 Closest Number in Sorted Array.java Easy Java [Binary Search]
26 Russian Doll Envelopes.java Hard Java [Binary Search, Coordinate DP, DP]
27 Last Position of Target.java Easy Java [Binary Search]
28 Count of Smaller Numbers After Self.java Review Java [BST, Binary Indexed Tree, Binary Search, Divide and Conquer, Segment Tree]
29 Interval Minimum Number.java Medium Java [Binary Search, Divide and Conquer, Segment Tree]
30 Interval Sum.java Medium Java [Binary Search, Segment Tree]
31 Search a 2D Matrix.java Medium Java [Array, Binary Search]
32 Search a 2D Matrix II.java Medium Java [Binary Search, Divide and Conquer]
33 Search for a Range.java Medium Java [Array, Binary Search]
34 Median of two Sorted Arrays.java Hard Java [Array, Binary Search, DFS, Divide and Conquer]
35 Max Sum of Rectangle No Larger Than K.java Hard Java [Array, BST, Binary Search, DP, Queue, TreeSet]
36 H-Index II.java Medium Java [Binary Search]

Array (94)

Squence Problem Level Language Tags Video Tutorial
0 Minimum Subarray.java Easy Java [Array, Greedy]
1 Missing Ranges.java Medium Java [Array]
2 Next Permutation.java Medium Java [Array]
3 Partition Array by Odd and Even.java Easy Java [Array, Two Pointers]
4 Product of Array Exclude Itself.java Medium Java [Array]
5 Recover Rotated Sorted Array.java Easy Java [Array]
6 Rotate Image.java Medium Java [Array, Enumeration]
7 Search Rotated in Sorted Array II.java Medium Java [Array, Binary Search]
8 Subarray Sum II.java Hard Java [Array, Binary Search, Two Pointers]
9 The Smallest Difference.java Medium Java [Array, Sort, Two Pointers]
10 Plus One.java Easy Java [Array, Math]
11 Wiggle Sort.java Medium Java [Array, Sort]
12 2 Sum II - Input array is sorted.java Medium Java [Array, Binary Search, Two Pointers]
13 2 Sum II.java Medium Java [Array, Binary Search, Two Pointers]
14 Maximum Product Subarray.java Medium Java [Array, DP]
15 3 Sum Closest.java Medium Java [Array, Two Pointers]
16 Triangle Count.java Medium Java [Array]
17 3 Sum.java Medium Java [Array, Two Pointers]
18 Unique Paths II.java Medium Java [Array, Coordinate DP, DP]
19 3 Sum Smaller.java Medium Java [Array, Two Pointers]
20 Array Partition I.java Easy Java [Array]
21 1-bit and 2-bit Characters.java Easy Java [Array]
22 Non-decreasing Array.java Easy Java [Array]
23 Max Consecutive Ones.java Easy Java [Array]
24 Find All Numbers Disappeared in an Array.java Easy Java [Array]
25 Maximum Average Subarray I.java Easy Java [Array]
26 Largest Number At Least Twice of Others.java Easy Java [Array]
27 Toeplitz Matrix.java Easy Java [Array]
28 Find Peak Element.java Medium Java [Array, Binary Search]
29 Majority Element.java Easy Java [Array, Bit Manipulation, Divide and Conquer]
30 Construct Binary Tree from Inorder and Preorder Traversal.java Medium Java [Array, DFS, Divide and Conquer, Hash Table, Tree]
31 Minimum Size Subarray Sum.java Medium Java [Array, Binary Search, Two Pointers]
32 Find Minimum in Rotated Sorted Array.java Medium Java [Array, Binary Search]
33 Find Minimum in Rotated Sorted Array II.java Hard Java [Array, Binary Search]
34 Word Search.java Medium Java [Array, Backtracking, DFS]
35 Trapping Rain Water.java Hard Java [Array, Stack, Two Pointers]
36 Largest Rectangle in Histogram.java Hard Java [Array, Monotonous Stack, Stack]
37 Find the Duplicate Number.java Medium Java [Array, Binary Search, Two Pointers]
38 Game of Life.java Medium Java [Array]
39 Maximum Average Subarray II.java Review Java [Array, Binary Search, PreSum]
40 Number of Airplane in the sky.java Medium Java [Array, Interval, Sort, Sweep Line]
41 Unique Path.java Medium Java [Array, Coordinate DP, DP]
42 Maximal Rectangle.java Hard Java [Array, DP, Hash Table, Stack]
43 Coins in a Line II.java Medium Java [Array, DP, Game Theory, Memoization, MiniMax]
44 Coins in a Line III.java Hard Java [Array, DP, Game Theory, Interval DP, Memoization]
45 Contains Duplicate.java Easy Java [Array, Hash Table]
46 Contains Duplicate II.java Easy Java [Array, Hash Table]
47 Jump Game.java Medium Java [Array, DP, Greedy]
48 Longest Continuous Increasing Subsequence.java Easy Java [Array, Coordinate DP, DP]
49 Minimum Path Sum.java Medium Java [Array, Coordinate DP, DP]
50 Best Time to Buy and Sell Stock I.java Easy Java [Array, DP, Sequence DP]
51 Best Time to Buy and Sell Stock II.java Easy Java [Array, DP, Greedy, Sequence DP]
52 Best Time to Buy and Sell Stock III .java Hard Java [Array, DP, Sequence DP]
53 First Missing Positive.java Hard Java [Array]
54 Longest Increasing Continuous subsequence.java Easy Java [Array, Coordinate DP, DP]
55 Longest Increasing Continuous subsequence II.java Medium Java [Array, Coordinate DP, DP, Memoization]
56 Maximum Subarray.java Easy Java [Array, DFS, DP, Divide and Conquer, PreSum, Sequence DP]
57 Maximum Subarray II.java Medium Java [Array, DP, Greedy, PreSum, Sequence DP]
58 Median.java Easy Java [Array, Quick Select, Quick Sort]
59 Merge Sorted Array.java Easy Java [Array, Two Pointers]
60 Missing Number.java Easy Java [Array, Bit Manipulation, Math]
61 Remove Duplicates from Sorted Array.java Easy Java [Array, Two Pointers]
62 Remove Duplicates from Sorted Array II.java Medium Java [Array, Two Pointers]
63 Anagrams.java Medium Java [Array, Hash Map]
64 Combination Sum.java Medium Java [Array, Backtracking, Combination, DFS]
65 Combination Sum II.java Medium Java [Array, Backtracking, Combination, DFS]
66 Combination Sum III.java Medium Java [Array, Backtracking, Combination, DFS]
67 Combination Sum IV.java Medium Java [Array, Backpack DP, DP]
68 Subset.java Medium Java [Array, BFS, Backtracking, Bit Manipulation, DFS]
69 Subsets II.java Medium Java [Array, BFS, Backtracking, DFS]
70 Longest Consecutive Sequence.java Hard Java [Array, Hash Table, Union Find]
71 Partition Array.java Medium Java [Array, Quick Sort, Sort, Two Pointers]
72 Container With Most Water.java Medium Java [Array, Two Pointers]
73 Majority Element II.java Medium Java [Array]
74 Search a 2D Matrix.java Medium Java [Array, Binary Search]
75 Search for a Range.java Medium Java [Array, Binary Search]
76 Merge Sorted Array II.java Easy Java [Array]
77 Unique Characters.java Easy Java [Array, String]
78 Summary Ranges.java Medium Java [Array]
79 Median of two Sorted Arrays.java Hard Java [Array, Binary Search, DFS, Divide and Conquer]
80 Spiral Matrix.java Medium Java [Array, Enumeration]
81 Insert Interval.java Hard Java [Array, PriorityQueue, Sort]
82 2 Sum.java Easy Java [Array, Hash Table]
83 K Empty Slots.java Hard Java [Array, BST, TreeSet]
84 Max Sum of Rectangle No Larger Than K.java Hard Java [Array, BST, Binary Search, DP, Queue, TreeSet]
85 Construct Binary Tree from Inorder and Postorder Traversal.java Medium Java [Array, DFS, Divide and Conquer, Tree]
86 Max Area of Island.java Easy Java [Array, DFS]
87 Max Points on a Line.java Hard Java [Array, Geometry, Hash Table, Math]
88 Subarray Sum.java Easy Java [Array, Hash Table]
89 Submatrix Sum.java Medium Java [Array, Hash Table, PreSum]
90 Jump Game II.java Hard Java [Array, Coordinate DP, DP, Greedy]
91 Triangles.java Medium Java [Array, Coordinate DP, DFS, DP, Memoization]
92 Merge Intervals.java Medium Java [Array, PriorityQueue, Sort, Sweep Line]
93 Sort Color.java Medium Java [Array, Partition, Sort, Two Pointers]

Geometry (2)

Squence Problem Level Language Tags Video Tutorial
0 Perfect Rectangle.java Hard Java [Design, Geometry, Hash Table]
1 Max Points on a Line.java Hard Java [Array, Geometry, Hash Table, Math]

Memoization (12)

Squence Problem Level Language Tags Video Tutorial
0 Coin Change.java Medium Java [DP, Memoization, Sequence DP]
1 Longest Increasing Subsequence.java Medium Java [Binary Search, Coordinate DP, DP, Memoization, Sequence DP]
2 Word Break II.java Hard Java [Backtracking, DFS, DP, Memoization]
3 Longest Increasing Path in a Matrix.java Hard Java [Coordinate DP, DFS, DP, Memoization, Topological Sort]
4 Coins in a Line II.java Medium Java [Array, DP, Game Theory, Memoization, MiniMax]
5 Climbing Stairs.java Easy Java [DP, Memoization, Sequence DP]
6 Coins in a Line III.java Hard Java [Array, DP, Game Theory, Interval DP, Memoization]
7 Burst Balloons.java Hard Java [DP, Divide and Conquer, Interval DP, Memoization]
8 Longest Increasing Continuous subsequence II.java Medium Java [Array, Coordinate DP, DP, Memoization]
9 Fibonacci.java Easy Java [DP, Math, Memoization]
10 Longest Palindromic Subsequence.java Medium Java [DFS, DP, Interval DP, Memoization]
11 Triangles.java Medium Java [Array, Coordinate DP, DFS, DP, Memoization]

Two Stacks (1)

Squence Problem Level Language Tags Video Tutorial
0 Binary Tree Postorder Traversal.java Medium Java [Stack, Tree, Two Stacks]

backtracking (1)

Squence Problem Level Language Tags Video Tutorial
0 Flip Game II.java Medium Java [DFS, DP, backtracking]

Tree DP (1)

Squence Problem Level Language Tags Video Tutorial
0 Binary Tree Maximum Path Sum.java Hard Java [DFS, DP, Tree, Tree DP]