Java
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
Java H Jun 8, 2018
Others minor updates and simpler solution for Binary Tree Level Order Traver… Jan 16, 2018
review H Jun 8, 2018
.gitignore Trie Mar 9, 2018
GenerateCodeTable.java add tags May 31, 2018
KnowledgeHash.md H Jun 8, 2018
LevelReviewPage.md H Jun 8, 2018
README.md H Jun 8, 2018
ReviewPage.md H Jun 8, 2018
Solution.java 3.2.2016 Mar 3, 2016
SystemDesign.md played with group anagram and optimizations Apr 22, 2016
TagREADME.md H Jun 8, 2018
TagReviewPage.md H Jun 8, 2018
WordPress.txt dfs Feb 26, 2018
fails.md string Jun 7, 2018
knowledgeHash.json merge Jul 27, 2017

README.md

Java Algorithm Problems

程序员的一天

从开始这个Github已经有将近两年时间, 很高兴这个repo可以帮到有需要的人. 我一直认为, 知识本身是无价的, 因此每逢闲暇, 我就会来维护这个repo, 给刷题的朋友们一些我的想法和见解. 下面来简单介绍一下这个repo:

README.md: 所有所做过的题目

ReviewPage.md: 所有题目的总结和归纳(不断完善中)

KnowledgeHash2.md: 对所做过的知识点的一些笔记

SystemDesign.md: 对系统设计的一些笔记

Future Milestone: 我准备将一些有意思的题目,做成视频的形式给大家参考

希望大家学习顺利, 对未来充满希望(程序员也是找到好老板的!) 有问题可以给我写邮件(wangdeve@gmail.com), 或者在GitHub上发issue给我.

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