GitHub - pxu/LintCode-2: Java Solutions to problems on LintCode/LeetCode
0
Binary Tree Zigzag Level Order Traversal.java
Medium
Java
[BFS, Stack, Tree]
1
Count of Smaller Number before itself.java
Hard
Java
[]
2
Count of Smaller Number.java
Review
Java
[Binary Search, Segment Tree]
3
Delete Digits.java
Medium
Java
[]
4
Find the Weak Connected Component in the Directed Graph.java
Medium
Java
[Union Find]
5
Flatten 2D Vector.java
Medium
Java
[Design]
6
Fraction to Recurring Decimal.java
Medium
Java
[Hash Table, Math]
7
Gray Code.java
Medium
Java
[Backtracking]
8
Group Shifted Strings.java
Easy
Java
[]
9
Hamming Distance.java
Easy
Java
[]
10
Happy Number.java
Easy
Java
[]
11
HashHeap.java
Hard
Java
[]
12
HashWithArray.java
Easy
Java
[]
13
Heapify.java
Review
Java
[Heap]
14
Heaters.java
Easy
Java
[]
15
IndexMatch.java
Easy
Java
[]
16
Inorder Successor in Binary Search Tree.java
Medium
Java
[BST, Tree]
17
Insert Node in a Binary Search Tree .java
Easy
Java
[BST]
18
Intersection of Two Arrays.java
Easy
Java
[]
19
Intersection of Two Linked Lists.java
Easy
Java
[Linked List]
20
Interval Sum II.java
Hard
Java
[]
21
Isomorphic Strings.java
Easy
Java
[]
22
Jewels and Stones.java
Easy
Java
[Hash Table]
23
Kth Largest Element.java
Review
Java
[Divide and Conquer, Heap, Quick Sort]
24
Kth Smallest Sum In Two Sorted Arrays.java
Hard
Java
[]
25
LFU Cache.java
Hard
Java
[Design, Hash Table]
26
Longest Univalue Path.java
Easy
Java
[]
27
Majority Number II.java
Medium
Java
[Enumeration, Greedy]
28
Majority Number III.java
Medium
Java
[Hash Table, Linked List]
29
Matrix Zigzag Traversal.java
Easy
Java
[]
30
Maximum Subarray III.java
Review
Java
[]
31
Minimum Absolute Difference in BST.java
Easy
Java
[BST]
32
Minimum Height Trees.java
Medium
Java
[BFS, Graph]
33
Minimum Subarray.java
Easy
Java
[Array, Greedy]
34
Missing Ranges.java
Medium
Java
[Array]
35
Multiply Strings.java
Medium
Java
[Math, String]
36
Next Permutation.java
Medium
Java
[Array]
37
O(1) Check Power of 2.java
Easy
Java
[Bit Manipulation]
38
Palindrome Permutation II.java
Medium
Java
[Backtracking, Permutation]
39
Partition Array by Odd and Even.java
Easy
Java
[Array, Two Pointers]
40
Pascal's Triangle II.java
Easy
Java
[]
41
Permutation Index.java
Easy
Java
[]
42
Permutation Sequence.java
Medium
Java
[Backtracking, Math]
43
Populating Next Right Pointers in Each Node II.java
Hard
Java
[]
44
Product of Array Exclude Itself.java
Medium
Java
[Array]
45
Recover Rotated Sorted Array.java
Easy
Java
[Array]
46
Remove Duplicates from Unsorted List.java
Medium
Java
[Linked List]
47
Remove Node in Binary Search Tree.java
Hard
Java
[BST]
48
Reshape the Matrix.java
Easy
Java
[]
49
Reverse String.java
Easy
Java
[]
50
Roman to Integer.java
Easy
Java
[]
51
Rotate Image.java
Medium
Java
[Array, Enumeration]
52
Search Insert Position.java
Easy
Java
[]
53
Search Rotated in Sorted Array II.java
Medium
Java
[Array, Binary Search]
54
Search Rotated in Sorted Array.java
Hard
Java
[]
55
Shortest Word Distance.java
Easy
Java
[]
56
Single Number II.java
Medium
Java
[Bit Manipulation]
57
Single Number III.java
Medium
Java
[Bit Manipulation]
58
Single Number.java
Easy
Java
[]
59
Sliding Window Maximum.java
Hard
Java
[]
60
Space Replacement.java
Medium
Java
[String]
61
Stone Game.java
Medium
Java
[DP]
62
String Permutation.java
Easy
Java
[]
63
String to Integer(atoi).java
Easy
Java
[]
64
Strobogrammatic Number.java
Easy
Java
[]
65
Subarray Sum II.java
Hard
Java
[Array, Binary Search, Two Pointers]
66
The Smallest Difference.java
Medium
Java
[Array, Sort, Two Pointers]
67
Total Occurrence of Target.java
Medium
Java
[]
68
Trailing Zeros.java
Easy
Java
[Math]
69
Two Lists Sum.java
Medium
Java
[Linked List]
70
Two Strings Are Anagrams.java
Easy
Java
[]
71
Ugly Number II.java
Medium
Java
[DP, Heap, Math]
72
Valid Parentheses.java
Easy
Java
[]
73
Valid Sudoku.java
Easy
Java
[]
74
Word Ladder II.java
Hard
Java
[]
75
Word Pattern.java
Easy
Java
[]
76
Zigzag Iterator.java
Medium
Java
[BST]
77
Find Anagram Mappings.java
Easy
Java
[Hash Table]
78
Judge Route Circle.java
Easy
Java
[String]
79
Island Perimeter.java
Easy
Java
[Hash Table]
80
First Unique Character in a String.java
Easy
Java
[Hash Table, String]
81
Power of Three.java
Easy
Java
[Math]
82
Plus One.java
Easy
Java
[Array, Math]
83
Power of Two.java
Easy
Java
[Bit Manipulation, Math]
84
Reverse Vowels of a String.java
Easy
Java
[String, Two Pointers]
85
Guess Number Higher or Lower.java
Easy
Java
[Binary Search]
86
Encode and Decode TinyURL.java
Medium
Java
[Hash Table, Math]
87
Wiggle Sort.java
Medium
Java
[Array, Sort]
88
Queue Reconstruction by Height.java
Medium
Java
[Greedy]
89
2 Sum II - Input array is sorted.java
Medium
Java
[Array, Binary Search, Two Pointers]
90
2 Sum II.java
Medium
Java
[Array, Binary Search, Two Pointers]
91
Coin Change.java
Medium
Java
[DP, Memoization, Sequence DP]
92
Maximum Product Subarray.java
Medium
Java
[Array, DP]
93
3 Sum Closest.java
Medium
Java
[Array, Two Pointers]
94
Triangle Count.java
Medium
Java
[Array]
95
3 Sum.java
Medium
Java
[Array, Two Pointers]
96
4 Sum.java
Medium
Java
[Hash Table]
97
k Sum.java
Hard
Java
[DP]
98
Longest Increasing Subsequence.java
Medium
Java
[Binary Search, Coordinate DP, DP, Memoization, Sequence DP]
99
Unique Binary Search Tree.java
Medium
Java
[BST, DP, Tree]
100
Trim a Binary Search Tree.java
Easy
Java
[BST, Tree]
101
Unique Paths II.java
Medium
Java
[Array, Coordinate DP, DP]
102
Bomb Enemy.java
Medium
Java
[Coordinate DP, DP]
103
3 Sum Smaller.java
Medium
Java
[Array, Two Pointers]
104
Array Partition I.java
Easy
Java
[Array]
105
1-bit and 2-bit Characters.java
Easy
Java
[Array]
106
Non-decreasing Array.java
Easy
Java
[Array]
107
Max Consecutive Ones.java
Easy
Java
[Array]
108
Find All Numbers Disappeared in an Array.java
Easy
Java
[Array]
109
Maximum Average Subarray I.java
Easy
Java
[Array]
110
Largest Number At Least Twice of Others.java
Easy
Java
[Array]
111
Toeplitz Matrix.java
Easy
Java
[Array]
112
Sum of Two Integers.java
Easy
Java
[Bit Manipulation]
113
Swap Bits.java
Easy
Java
[Bit Manipulation]
114
Update Bits.java
Medium
Java
[Bit Manipulation]
115
Maximum XOR of Two Numbers in an Array.java
Medium
Java
[Bit Manipulation, Trie]
116
Perfect Squares.java
Medium
Java
[BFS, DP, Math, Partition DP]
117
Backpack VI.java
Medium
Java
[Backpack DP, DP]
118
Copy Books.java
Hard
Java
[Binary Search, DP, Partition DP]
119
Valid Perfect Square.java
Review
Java
[Binary Search, Math]
120
Intersection of Two Arrays II.java
Easy
Java
[Binary Search, Hash Table, Sort, Two Pointers]
121
Scramble String.java
Hard
Java
[DP, Interval DP, String]
122
Binary Search Tree Iterator.java
Medium
Java
[BST, Design, Stack, Tree]
123
Flatten Nested List Iterator.java
Medium
Java
[Design, Stack]
124
Best Time to Buy and Sell Stock with Cooldown.java
Medium
Java
[DP]
125
Find Peak Element.java
Medium
Java
[Array, Binary Search]
126
Longest Common Subsequence.java
Medium
Java
[DP, Double Sequence DP]
127
Interleaving String.java
Hard
Java
[DP, String]
128
Letter Combinations of a Phone Number.java
Medium
Java
[Backtracking, String]
129
Edit Distance.java
Hard
Java
[DP, Double Sequence DP, String]
130
Distinct Subsequences.java
Hard
Java
[DP, String]
131
Regular Expression Matching.java
Review
Java
[Backtracking, DP, String]
132
Majority Element.java
Easy
Java
[Array, Bit Manipulation, Divide and Conquer]
133
Wildcard Matching.java
Hard
Java
[Backtracking, DP, Greedy, String]
134
Ones and Zeroes.java
Hard
Java
[DP]
135
Pow(x,n).java
Medium
Java
[Binary Search, Math]
136
Word Break II.java
Hard
Java
[Backtracking, DFS, DP, Memoization]
137
Nested List Weight Sum.java
Easy
Java
[BFS, DFS]
138
Same Tree.java
Easy
Java
[DFS, Tree]
139
Convert Sorted Array to Binary Search Tree.java
Easy
Java
[DFS, Divide and Conquer, Tree]
140
Construct Binary Tree from Inorder and Preorder Traversal.java
Medium
Java
[Array, DFS, Divide and Conquer, Hash Table, Tree]
141
Add Binary.java
Easy
Java
[Math, String]
142
Add Digits.java
Easy
Java
[Math]
143
Add Two Numbers.java
Medium
Java
[Linked List, Math]
144
Add Two Numbers II.java
Medium
Java
[Linked List]
145
Balanced Binary Tree.java
Medium
Java
[DFS, Tree]
146
Valid Anagram.java
Easy
Java
[Hash Table, Sort]
147
Populating Next Right Pointers in Each Node.java
Medium
Java
[DFS, Divide and Conquer, Tree]
148
Validate Binary Search Tree.java
Medium
Java
[BST, DFS, Divide and Conquer, Tree]
149
Convert Sorted List to Binary Search Tree.java
Medium
Java
[BST, DFS, Divide and Conquer, Linked List]
150
Flatten Binary Tree to Linked List.java
Medium
Java
[Binary Tree, DFS]
151
Binary Tree Paths.java
Easy
Java
[Backtracking, Binary Tree, DFS]
152
Minimum Size Subarray Sum.java
Medium
Java
[Array, Binary Search, Two Pointers]
153
Clone Graph.java
Medium
Java
[BFS, DFS, Graph]
154
Longest Substring Without Repeating Characters.java
Medium
Java
[Hash Table, String, Two Pointers]
155
Minimum Window Substring.java
Hard
Java
[Hash Table, String, Two Pointers]
156
Linked List Cycle.java
Easy
Java
[Linked List, Two Pointers]
157
Remove Nth Node From End of List.java
Medium
Java
[Linked List, Two Pointers]
158
Longest Substring with At Most K Distinct Characters.java
Medium
Java
[Hash Table, String]
159
Linked List Cycle II.java
Medium
Java
[Linked List, Two Pointers]
160
Kth Smallest Number in Sorted Matrix.java
Medium
Java
[Binary Search, Heap]
161
Find Minimum in Rotated Sorted Array.java
Medium
Java
[Array, Binary Search]
162
Find Minimum in Rotated Sorted Array II.java
Hard
Java
[Array, Binary Search]
163
Connecting Graph.java
Medium
Java
[Union Find]
164
Connecting Graph II.java
Medium
Java
[Union Find]
165
Connecting Graph III.java
Medium
Java
[Union Find]
166
Number of Islands.java
Medium
Java
[BFS, DFS, Matrix DFS, Union Find]
167
Number of Islands II.java
Hard
Java
[Union Find]
168
Surrounded Regions.java
Medium
Java
[BFS, DFS, Matrix DFS, Union Find]
169
Implement Trie.java
Medium
Java
[Design, Trie]
170
Add and Search Word.java
Medium
Java
[Backtracking, Design, Trie]
171
Word Search II.java
Hard
Java
[Backtracking, DFS, Trie]
172
Word Search.java
Medium
Java
[Array, Backtracking, DFS]
173
Word Squares.java
Hard
Java
[Backtracking, Trie]
174
Trapping Rain Water.java
Hard
Java
[Array, Stack, Two Pointers]
175
Trapping Rain Water II.java
Hard
Java
[BFS, Heap]
176
Data Stream Median.java
Hard
Java
[Design, Heap]
177
Sliding Window Median.java
Hard
Java
[Design, Heap]
178
Min Stack.java
Easy
Java
[Design, Stack]
179
Implement Queue using Stacks.java
Easy
Java
[Design, Stack]
180
Decode String.java
Medium
Java
[DFS, Divide and Conquer, Stack]
181
Largest Rectangle in Histogram.java
Hard
Java
[Array, Monotonous Stack, Stack]
182
Maximum Binary Tree.java
Medium
Java
[Stack, Tree]
183
Reverse Integer.java
Easy
Java
[Math]
184
Swap Nodes in Pairs.java
Medium
Java
[Linked List]
185
Find Peak Element II.java
Hard
Java
[Binary Search, DFS, Divide and Conquer]
186
Sqrt(x).java
Easy
Java
[Binary Search, Math]
187
First Bad Version.java
Easy
Java
[Binary Search]
188
Wood Cut.java
Medium
Java
[Binary Search]
189
Find the Duplicate Number.java
Medium
Java
[Array, Binary Search, Two Pointers]
190
Palindrome Pairs.java
Hard
Java
[Hash Table, String, Trie]
191
Game of Life.java
Medium
Java
[Array]
192
Maximum Average Subarray II.java
Review
Java
[Array, Binary Search, PreSum]
193
Meeting Rooms.java
Easy
Java
[Sort, Sweep Line]
194
Number of Airplane in the sky.java
Medium
Java
[Array, Interval, Sort, Sweep Line]
195
Meeting Rooms II.java
Medium
Java
[Greedy, Heap, Sort, Sweep Line]
196
Building Outline.java
Review
Java
[Binary Indexed Tree, Divide and Conquer, Heap, Segment Tree, Sweep Line]
197
Unique Path.java
Medium
Java
[Array, Coordinate DP, DP]
198
Maximal Rectangle.java
Hard
Java
[Array, DP, Hash Table, Stack]
199
Maximal Square.java
Medium
Java
[Coordinate DP, DP]
200
Longest Increasing Path in a Matrix.java
Hard
Java
[Coordinate DP, DFS, DP, Memoization, Topological Sort]
201
Coins in a Line.java
Medium
Java
[DP, Game Theory, Greedy]
202
Coins in a Line II.java
Medium
Java
[Array, DP, Game Theory, Memoization, MiniMax]
203
Binary Tree Inorder Traversal.java
Easy
Java
[Hash Table, Stack, Tree]
204
Binary Tree Postorder Traversal.java
Medium
Java
[Stack, Tree, Two Stacks]
205
Change to Anagram.java
Easy
Java
[String]
206
Classical Binary Search.java
Easy
Java
[Binary Search]
207
Climbing Stairs.java
Easy
Java
[DP, Memoization, Sequence DP]
208
Coins in a Line III.java
Hard
Java
[Array, DP, Game Theory, Interval DP, Memoization]
209
Closest Binary Search Tree Value.java
Easy
Java
[BST, Binary Search, Tree]
210
Compare Version Numbers.java
Medium
Java
[String]
211
Count Complete Tree Nodes.java
Medium
Java
[Binary Search, Tree]
212
Course Schedule.java
Medium
Java
[BFS, Backtracking, DFS, Graph, Topological Sort]
213
Course Schedule II.java
Medium
Java
[BFS, DFS, Graph, Topological Sort]
214
Binary Tree Preorder Traversal.java
Easy
Java
[BFS, DFS, Stack, Tree]
215
Closest Number in Sorted Array.java
Easy
Java
[Binary Search]
216
Complete Binary Tree.java
Easy
Java
[BFS, Tree]
217
Compare Strings.java
Easy
Java
[String]
218
Contains Duplicate.java
Easy
Java
[Array, Hash Table]
219
Contains Duplicate II.java
Easy
Java
[Array, Hash Table]
220
Contains Duplicate III.java
Medium
Java
[BST]
221
Burst Balloons.java
Hard
Java
[DP, Divide and Conquer, Interval DP, Memoization]
222
Nim Game.java
Easy
Java
[Brainteaser, DP, Game Theory]
223
Convert Integer A to Integer B.java
Easy
Java
[Bit Manipulation]
224
Cosine Similarity.java
Easy
Java
[Basic Implementation]
225
Count 1 in Binary.java
Easy
Java
[Bit Manipulation]
226
Count and Say.java
Easy
Java
[Basic Implementation, String]
227
One Edit Distance.java
Medium
Java
[String]
228
K Edit Distance.java
Hard
Java
[DP, Double Sequence DP, Trie]
229
Jump Game.java
Medium
Java
[Array, DP, Greedy]
230
Coin Change 2.java
Medium
Java
[Backpack DP, DP, Sequence DP]
231
Paint House.java
Easy
Java
[DP, Sequence DP]
232
Decode Ways.java
Medium
Java
[DP, Partition DP, String]
233
Longest Continuous Increasing Subsequence.java
Easy
Java
[Array, Coordinate DP, DP]
234
Minimum Path Sum.java
Medium
Java
[Array, Coordinate DP, DP]
235
Counting Bits.java
Medium
Java
[Bit Manipulation, Bitwise DP, DP]
236
Continuous Subarray Sum.java
Medium
Java
[Coordinate DP, DP, Math]
237
House Robber.java
Easy
Java
[DP, Sequence DP]
238
House Robber II.java
Medium
Java
[DP, Sequence DP]
239
House Robber III.java
Medium
Java
[DFS, DP, Status DP, Tree]
240
Paint House II.java
Hard
Java
[DP, Sequence DP]
241
Best Time to Buy and Sell Stock I.java
Easy
Java
[Array, DP, Sequence DP]
242
Best Time to Buy and Sell Stock II.java
Easy
Java
[Array, DP, Greedy, Sequence DP]
243
Best Time to Buy and Sell Stock III .java
Hard
Java
[Array, DP, Sequence DP]
244
Best Time to Buy and Sell Stock IV.java
Hard
Java
[DP, Sequence DP]
245
Russian Doll Envelopes.java
Hard
Java
[Binary Search, Coordinate DP, DP]
246
Permutation in String.java
Medium
Java
[Two Pointers]
247
Permutations II.java
Medium
Java
[Backtracking]
248
Shuffle an Array.java
Medium
Java
[Permutation]
249
Find All Anagrams in a String.java
Easy
Java
[Hash Table]
250
Group Anagrams.java
Medium
Java
[Hash Table, String]
251
Backpack.java
Medium
Java
[Backpack DP, DP]
252
Backpack II.java
Medium
Java
[Backpack DP, DP]
253
Backpack V.java
Medium
Java
[Backpack DP, DP]
254
Count Primes.java
Easy
Java
[Hash Table, Math]
255
Delete Node in a Linked List.java
Easy
Java
[Linked List]
256
Excel Sheet Column Number.java
Easy
Java
[Math]
257
Excel Sheet Column Title.java
Easy
Java
[Math]
258
Flip Game.java
Easy
Java
[String]
259
Expression Tree Build.java
Hard
Java
[Binary Tree, Expression Tree, Minimum Binary Tree, Stack]
260
Expression Evaluation.java
Hard
Java
[Binary Tree, DFS, Expression Tree, Minimum Binary Tree, Stack]
261
Convert Expression to Polish Notation.java
Hard
Java
[Binary Tree, DFS, Expression Tree, Stack]
262
Convert Expression to Reverse Polish Notation.java
Hard
Java
[Binary Tree, DFS, Expression Tree, Stack]
263
Evaluate Reverse Polish Notation.java
Medium
Java
[Stack]
264
Decode Ways II.java
Hard
Java
[DP, Partition DP]
265
Palindrome Partitioning II.java
Hard
Java
[DP, Partition DP]
266
Backpack III.java
Hard
Java
[Backpack DP, DP]
267
First Missing Positive.java
Hard
Java
[Array]
268
Implement strStr().java
Easy
Java
[String, Two Pointers]
269
Insertion Sort List.java
Medium
Java
[Linked List, Sort]
270
Integer to English Words.java
Hard
Java
[Math, String]
271
Interleaving Positive and Negative Numbers.java
Medium
Java
[Two Pointers]
272
Largest Number.java
Medium
Java
[Sort]
273
Last Position of Target.java
Easy
Java
[Binary Search]
274
Length of Last Word.java
Easy
Java
[String]
275
Longest Common Substring.java
Medium
Java
[DP, Double Sequence DP, String]
276
Longest Increasing Continuous subsequence.java
Easy
Java
[Array, Coordinate DP, DP]
277
Longest Increasing Continuous subsequence II.java
Medium
Java
[Array, Coordinate DP, DP, Memoization]
278
N-Queens.java
Hard
Java
[Backtracking]
279
N-Queens II.java
Hard
Java
[Backtracking]
280
Longest Words.java
Easy
Java
[Hash Map, String]
281
Maximum Subarray.java
Easy
Java
[Array, DFS, DP, Divide and Conquer, PreSum, Sequence DP]
282
Maximum Subarray II.java
Medium
Java
[Array, DP, Greedy, PreSum, Sequence DP]
283
Median.java
Easy
Java
[Array, Quick Select, Quick Sort]
284
Merge Sorted Array.java
Easy
Java
[Array, Two Pointers]
285
Middle of Linked List.java
Easy
Java
[Linked List]
286
Singleton.java
Easy
Java
[Design]
287
Remove Linked List Elements.java
Easy
Java
[Linked List]
288
Fibonacci.java
Easy
Java
[DP, Math, Memoization]
289
Palindrome Linked List.java
Easy
Java
[Linked List, Two Pointers]
290
Reverse Linked List.java
Easy
Java
[Linked List]
291
Reverse Linked List II .java
Medium
Java
[Linked List]
292
Palindrome Permutation.java
Easy
Java
[Hash Table]
293
Valid Palindrome.java
Easy
Java
[String, Two Pointers]
294
Implement Stack using Queues.java
Easy
Java
[Design, Stack]
295
Implement Stack.java
Easy
Java
[Stack]
296
Invert Binary Tree.java
Easy
Java
[BFS, DFS, Tree]
297
Maximum Depth of Binary Tree.java
Easy
Java
[DFS, Tree]
298
Minimum Depth of Binary Tree.java
Easy
Java
[BFS, DFS, Tree]
299
Symmetric Tree.java
Easy
Java
[BFS, DFS, Tree]
300
Tweaked Identical Binary Tree.java
Easy
Java
[DFS, Tree]
301
Merge Two Binary Trees.java
Easy
Java
[DFS, Tree]
302
Subtree.java
Easy
Java
[DFS, Tree]
303
Lowest Common Ancestor of a Binary Tree.java
Medium
Java
[DFS, Tree]
304
Lowest Common Ancestor II.java
Easy
Java
[Hash Table, Tree]
305
Lowest Common Ancestor of a Binary Search Tree.java
Medium
Java
[BST, DFS, Tree]
306
Hash Function.java
Easy
Java
[Hash Table]
307
Merge Two Sorted Lists.java
Easy
Java
[Linked List]
308
Missing Number.java
Easy
Java
[Array, Bit Manipulation, Math]
309
LRU Cache.java
Hard
Java
[Design, Hash Table, Linked List]
310
Remove Duplicates from Sorted Array.java
Easy
Java
[Array, Two Pointers]
311
Remove Duplicates from Sorted Array II.java
Medium
Java
[Array, Two Pointers]
312
Remove Duplicates from Sorted List.java
Easy
Java
[Linked List]
313
Remove Duplicates from Sorted List II.java
Medium
Java
[Linked List]
314
QuickSort.java
Medium
Java
[Sort]
315
MergeSort.java
Medium
Java
[Merge Sort, Sort]
316
Longest Word in Dictionary.java
Easy
Java
[Hash Table, Trie]
317
Anagrams.java
Medium
Java
[Array, Hash Map]
318
Binary Tree Level Order Traversal.java
Medium
Java
[BFS, DFS, Tree]
319
Binary Tree Level Order Traversal II.java
Medium
Java
[BFS, Tree]
320
Binary Tree Longest Consecutive Sequence II.java
Medium
Java
[DFS, Divide and Conquer, Double Recursive, Tree]
321
Binary Tree Maximum Path Sum.java
Hard
Java
[DFS, DP, Tree, Tree DP]
322
Path Sum.java
Easy
Java
[DFS, Tree]
323
Path Sum II.java
Easy
Java
[Backtracking, DFS, Tree]
324
Path Sum III.java
Easy
Java
[DFS, Double Recursive, Tree]
325
Rotate String.java
Easy
Java
[String]
326
Path Sum IV.java
Medium
Java
[DFS, Hash Map, Tree]
327
Combinations.java
Medium
Java
[Backtracking, Combination, DFS]
328
Combination Sum.java
Medium
Java
[Array, Backtracking, Combination, DFS]
329
Combination Sum II.java
Medium
Java
[Array, Backtracking, Combination, DFS]
330
Combination Sum III.java
Medium
Java
[Array, Backtracking, Combination, DFS]
331
Combination Sum IV.java
Medium
Java
[Array, Backpack DP, DP]
332
Subset.java
Medium
Java
[Array, BFS, Backtracking, Bit Manipulation, DFS]
333
Subsets II.java
Medium
Java
[Array, BFS, Backtracking, DFS]
334
Binary Tree Right Side View.java
Medium
Java
[BFS, DFS, Tree]
335
Binary Tree Maximum Path Sum II.java
Medium
Java
[DFS, Tree]
336
Rotate List.java
Medium
Java
[Linked List, Two Pointers]
337
Basic Calculator.java
Hard
Java
[Binary Tree, Expression Tree, Math, Minimum Binary Tree, Stack]
338
Longest Consecutive Sequence.java
Hard
Java
[Array, Hash Table, Union Find]
339
Binary Tree Longest Consecutive Sequence.java
Medium
Java
[DFS, Divide and Conquer, Tree]
340
Number of Connected Components in an Undirected Graph.java
Medium
Java
[BFS, DFS, Graph, Union Find]
341
Next Closest Time.java
Medium
Java
[Basic Implementation, Enumeration, String]
342
Serilization and Deserialization Of Binary Tree.java
Hard
Java
[BFS, DFS, Design, Divide and Conquer, Tree]
343
Partition Array.java
Medium
Java
[Array, Quick Sort, Sort, Two Pointers]
344
Word Ladder.java
Medium
Java
[BFS]
345
Word Break.java
Medium
Java
[DP, Sequence DP]
346
Unique Word Abbreviation.java
Medium
Java
[Design, Hash Table]
347
Unique Binary Search Tree II.java
Medium
Java
[BST, DP, Divide and Conquer, Tree]
348
Ugly Number.java
Medium
Java
[Math]
349
Top K Frequent Words.java
Medium
Java
[Hash Table, Heap, PriorityQueue, Trie]
350
Segment Tree Build.java
Medium
Java
[Binary Tree, Divide and Conquer, Segment Tree]
351
Segment Tree Build II.java
Medium
Java
[Binary Tree, Divide and Conquer, Segment Tree]
352
Segment Tree Query.java
Medium
Java
[Binary Tree, DFS, Divide and Conquer, Segment Tree]
353
Segment Tree Modify.java
Medium
Java
[Binary Tree, DFS, Divide and Conquer, Segment Tree]
354
Segment Tree Query II.java
Medium
Java
[Binary Tree, DFS, Divide and Conquer, Segment Tree]
355
Count of Smaller Numbers After Self.java
Review
Java
[BST, Binary Indexed Tree, Binary Search, Divide and Conquer, Segment Tree]
356
ColorGrid.java
Medium
Java
[Design, Hash Table]
357
Container With Most Water.java
Medium
Java
[Array, Two Pointers]
358
Convert Binary Search Tree to Doubly Linked List.java
Medium
Java
[Linked List, Tree]
359
Copy List with Random Pointer.java
Medium
Java
[Hash Table, Linked List]
360
Encode and Decode Strings.java
Medium
Java
[String]
361
Fast Power.java
Medium
Java
[DFS, Divide and Conquer]
362
Find the Connected Component in the Undirected Graph.java
Medium
Java
[BFS, DFS]
363
HashWithCustomizedClass(LinkedList).java
Medium
Java
[Hash Table]
364
Interval Minimum Number.java
Medium
Java
[Binary Search, Divide and Conquer, Segment Tree]
365
Interval Sum.java
Medium
Java
[Binary Search, Segment Tree]
366
Kth Smallest Element in a BST.java
Medium
Java
[BST, DFS, Stack, Tree]
367
Longest Common Prefix.java
Easy
Java
[String]
368
Majority Element II.java
Medium
Java
[Array]
369
Merge k Sorted Lists.java
Medium
Java
[Divide and Conquer, Heap, Linked List, PriorityQueue]
370
Merge k Sorted Arrays.java
Medium
Java
[Heap, PriorityQueue]
371
Permutations.java
Medium
Java
[Backtracking, DFS, Permutation]
372
Partition List.java
Medium
Java
[Linked List, Two Pointers]
373
Peeking Iterator.java
Medium
Java
[Design]
374
Rehashing.java
Medium
Java
[Hash Table]
375
Reorder List.java
Medium
Java
[Linked List]
376
Restore IP Addresses.java
Medium
Java
[Backtracking, DFS, String]
377
Reverse Words in a String.java
Medium
Java
[String]
378
Reverse Words in a String II.java
Medium
Java
[String]
379
Reverse Words in a String III.java
Easy
Java
[String]
380
Search a 2D Matrix.java
Medium
Java
[Array, Binary Search]
381
Search a 2D Matrix II.java
Medium
Java
[Binary Search, Divide and Conquer]
382
Search for a Range.java
Medium
Java
[Array, Binary Search]
383
Search Range in Binary Search Tree .java
Medium
Java
[BST, Binary Tree]
384
Merge Sorted Array II.java
Easy
Java
[Array]
385
Nth to Last Node in List.java
Easy
Java
[Linked List]
386
Unique Characters.java
Easy
Java
[Array, String]
387
Sort List.java
Medium
Java
[Divide and Conquer, Linked List, Merge Sort, Sort]
388
Summary Ranges.java
Medium
Java
[Array]
389
Top K Frequent Elements.java
Medium
Java
[Hash Table, Heap, PriorityQueue]
390
Topological Sorting.java
Medium
Java
[BFS, DFS, Topological Sort]
391
Median of two Sorted Arrays.java
Hard
Java
[Array, Binary Search, DFS, Divide and Conquer]
392
Remove Duplicate Letters.java
Hard
Java
[Greedy, Hash Table, Stack]
393
Spiral Matrix.java
Medium
Java
[Array, Enumeration]
394
Expression Add Operators.java
Hard
Java
[Backtracking, DFS, Divide and Conquer, String]
395
Insert Interval.java
Hard
Java
[Array, PriorityQueue, Sort]
396
Shortest Palindrome.java
Hard
Java
[KMP, String]
397
2 Sum.java
Easy
Java
[Array, Hash Table]
398
K Empty Slots.java
Hard
Java
[Array, BST, TreeSet]
399
Count of Range Sum.java
Hard
Java
[BST, Divide and Conquer, Merge Sort, PreSum]
400
Max Sum of Rectangle No Larger Than K.java
Hard
Java
[Array, BST, Binary Search, DP, Queue, TreeSet]
401
Perfect Rectangle.java
Hard
Java
[Design, Geometry, Hash Table]
402
Construct Binary Tree from Inorder and Postorder Traversal.java
Medium
Java
[Array, DFS, Divide and Conquer, Tree]
403
Generate Parentheses.java
Medium
Java
[Backtracking, DFS, Sequence DFS, String]
404
Strobogrammatic Number II.java
Medium
Java
[DFS, Math, Sequence DFS]
405
Alien Dictionary.java
Hard
Java
[BFS, Backtracking, DFS, Graph, Topological Sort]
406
Flip Game II.java
Medium
Java
[DFS, DP, backtracking]
407
Max Area of Island.java
Easy
Java
[Array, DFS]
408
Max Points on a Line.java
Hard
Java
[Array, Geometry, Hash Table, Math]
409
Number of Digit One.java
Hard
Java
[Math]
410
Binary Representation.java
Hard
Java
[Bit Manipulation, String]
411
Palindrome Partitioning.java
Medium
Java
[Backtracking, DFS]
412
Graph Valid Tree.java
Medium
Java
[BFS, DFS, Graph, Union Find]
413
Recover Binary Search Tree.java
Hard
Java
[BST, DFS, Tree]
414
Subarray Sum.java
Easy
Java
[Array, Hash Table]
415
Submatrix Sum.java
Medium
Java
[Array, Hash Table, PreSum]
416
Longest Palindromic Substring.java
Medium
Java
[DP, String]
417
Longest Palindromic Subsequence.java
Medium
Java
[DFS, DP, Interval DP, Memoization]
418
Jump Game II.java
Hard
Java
[Array, Coordinate DP, DP, Greedy]
419
Gas Station.java
Medium
Java
[Greedy]
420
Triangles.java
Medium
Java
[Array, Coordinate DP, DFS, DP, Memoization]
421
Range Sum Query - Immutable.java
Easy
Java
[DP, PreSum]
422
Longest Valid Parentheses.java
Hard
Java
[Coordinate DP, Stack, String]
423
Remove Invalid Parentheses.java
Review
Java
[BFS, DFS, DP]
424
Paint Fence.java
Easy
Java
[DP, Sequence DP]
425
Merge Intervals.java
Medium
Java
[Array, PriorityQueue, Sort, Sweep Line]
426
H-Index.java
Medium
Java
[Bucket Sort, Hash Table, Sort]
427
H-Index II.java
Medium
Java
[Binary Search]
428
Sort Color.java
Medium
Java
[Array, Partition, Sort, Two Pointers]
429
Sort Colors II.java
Medium
Java
[Partition, Sort, Two Pointers]
430
Sort Letters by Case.java
Medium
Java
[Partition, Sort, String, Two Pointers]
431
Subarray Sum Closest.java
Medium
Java
[PreSum, Sort]