LeetCode LintCode 干货全集 2018

Java Algorithm Problems

序言

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

希望大家学习顺利, 对未来充满希望. 有问题可以给我写邮件(wangdeve@gmail.com), 或者在GitHub上发issue给我.

转眼已经2018年, 我过去写过的两版文章已经算是过期, 因为过去的题目总共只有大约300多道, 而现在LeetCode有了800多, 而LintCode竟然出现了超一千. 我自己所涵盖的总结, 将近500道题目, 全部在下面的这张表格里 (题号与leetcode不对应, 只是表格编号而已)

可想而知, 刷爆所有题目已经是不可能, 而大家也更应该对自己有更清楚地认识, 有侧重点, 分知识点地去刷题. 在这篇文章之后, 我会陆续把我自己的其他总结分类, 用文章的方式, 一份份地贴出来, 供大家参考.

如果有什么不同的见解, 欢迎在文章下面留言, 或者邮件与我交流. 能够帮到你的地方, 一定尽力而为. 中国人在国外, 一定要互相拉一把.

下面进入干货索引.

Squence Problem Level Language Tags Video Tutorial
0 Count of Smaller Number before itself.java Hard Java []
1 Evaluate Division.java Medium Java [BFS, DFS, Graph, Union Find]
2 Fraction to Recurring Decimal.java Medium Java [Hash Table, Math]
3 Gray Code.java Medium Java [Backtracking]
4 Hamming Distance.java Easy Java []
5 Happy Number.java Easy Java []
6 HashWithArray.java Easy Java []
7 Heaters.java Easy Java []
8 IndexMatch.java Easy Java []
9 Insert Node in a Binary Search Tree .java Easy Java [BST]
10 Jewels and Stones.java Easy Java [Hash Table]
11 Kth Smallest Sum In Two Sorted Arrays.java Hard Java []
12 LFU Cache.java Hard Java [Design, Hash Table]
13 Longest Univalue Path.java Easy Java []
14 Majority Number II.java Medium Java [Enumeration, Greedy]
15 Majority Number III.java Medium Java [Hash Table, Linked List]
16 Matrix Zigzag Traversal.java Easy Java []
17 Maximum Subarray III.java Review Java []
18 Minimum Absolute Difference in BST.java Easy Java [BST]
19 Minimum Height Trees.java Medium Java [BFS, Graph]
20 Missing Ranges.java Medium Java [Array]
21 Next Permutation.java Medium Java [Array]
22 O(1) Check Power of 2.java Easy Java [Bit Manipulation]
23 Palindrome Permutation II.java Medium Java [Backtracking, Permutation]
24 Partition Array by Odd and Even.java Easy Java [Array, Two Pointers]
25 Pascal's Triangle II.java Easy Java []
26 Permutation Index.java Easy Java []
27 Permutation Sequence.java Medium Java [Backtracking, Math]
28 Prefix and Suffix Search.java Hard Java [Trie]
29 Product of Array Exclude Itself.java Medium Java [Array]
30 Recover Rotated Sorted Array.java Easy Java [Array]
31 Remove Duplicates from Unsorted List.java Medium Java [Linked List]
32 Remove Node in Binary Search Tree.java Hard Java [BST]
33 Reshape the Matrix.java Easy Java []
34 Reverse String.java Easy Java []
35 Rotate Image.java Medium Java [Array, Enumeration]
36 Search in Rotated Sorted Array II.java Medium Java [Array, Binary Search]
37 Search Insert Position.java Easy Java []
38 Shortest Word Distance.java Easy Java []
39 Single Number II.java Medium Java [Bit Manipulation]
40 Single Number III.java Medium Java [Bit Manipulation]
41 Single Number.java Easy Java []
42 Space Replacement.java Medium Java [String]
43 Stone Game.java Medium Java [DP]
44 String Permutation.java Easy Java []
45 Subarray Sum II.java Hard Java [Array, Binary Search, Two Pointers]
46 The Smallest Difference.java Medium Java [Array, Sort, Two Pointers]
47 Total Occurrence of Target.java Medium Java []
48 Trailing Zeros.java Easy Java [Math]
49 Two Lists Sum.java Medium Java [Linked List]
50 Two Strings Are Anagrams.java Easy Java []
51 Valid Sudoku.java Easy Java [Enumeration, Hash Table]
52 Word Pattern.java Easy Java []
53 Zigzag Iterator.java Medium Java [BST]
54 Find Anagram Mappings.java Easy Java [Hash Table]
55 Judge Route Circle.java Easy Java [String]
56 Island Perimeter.java Easy Java [Hash Table]
57 Power of Three.java Easy Java [Math]
58 Plus One.java Easy Java [Array, Math]
59 Power of Two.java Easy Java [Bit Manipulation, Math]
60 Reverse Vowels of a String.java Easy Java [String, Two Pointers]
61 Guess Number Higher or Lower.java Easy Java [Binary Search]
62 Encode and Decode TinyURL.java Medium Java [Hash Table, Math]
63 Wiggle Sort.java Medium Java [Array, Sort]
64 Queue Reconstruction by Height.java Medium Java [Greedy]
65 Two Sum II - Input array is sorted.java Medium Java [Array, Binary Search, Two Pointers]
66 2 Sum II.java Medium Java [Array, Binary Search, Two Pointers]
67 Coin Change.java Medium Java [Backpack DP, DP, Memoization]
68 Maximum Product Subarray.java Medium Java [Array, DP, Subarray]
69 3 Sum Closest.java Medium Java [Array, Two Pointers]
70 Triangle Count.java Medium Java [Array]
71 3Sum.java Medium Java [Array, Two Pointers]
72 k Sum.java Hard Java [DP]
73 Unique Binary Search Tree.java Medium Java [BST, DP, Tree]
74 Trim a Binary Search Tree.java Easy Java [BST, Tree]
75 Unique Paths II.java Medium Java [Array, Coordinate DP, DP]
76 Bomb Enemy.java Medium Java [Coordinate DP, DP]
77 3Sum Smaller.java Medium Java [Array, Two Pointers]
78 Array Partition I.java Easy Java [Array]
79 1-bit and 2-bit Characters.java Easy Java [Array]
80 Non-decreasing Array.java Easy Java [Array]
81 Max Consecutive Ones.java Easy Java [Array]
82 Find All Numbers Disappeared in an Array.java Easy Java [Array]
83 Maximum Average Subarray I.java Easy Java [Array, Subarray]
84 Largest Number At Least Twice of Others.java Easy Java [Array]
85 Toeplitz Matrix.java Easy Java [Array]
86 Sum of Two Integers.java Easy Java [Bit Manipulation]
87 Swap Bits.java Easy Java [Bit Manipulation]
88 Update Bits.java Medium Java [Bit Manipulation]
89 Maximum XOR of Two Numbers in an Array.java Medium Java [Bit Manipulation, Trie]
90 Perfect Squares.java Medium Java [BFS, DP, Math, Partition DP]
91 Backpack VI.java Medium Java [Backpack DP, DP]
92 Copy Books.java Hard Java [Binary Search, DP, Partition DP]
93 Valid Perfect Square.java Review Java [Binary Search, Math]
94 Intersection of Two Arrays II.java Easy Java [Binary Search, Hash Table, Sort, Two Pointers]
95 Scramble String.java Hard Java [DP, Interval DP, String]
96 Binary Search Tree Iterator.java Medium Java [BST, Design, Stack, Tree]
97 Flatten Nested List Iterator.java Medium Java [Design, Stack]
98 Best Time to Buy and Sell Stock with Cooldown.java Medium Java [DP]
99 Find Peak Element.java Medium Java [Array, Binary Search]
100 Longest Common Subsequence.java Medium Java [DP, Double Sequence DP, Sequence DP]
101 Interleaving String.java Hard Java [DP, String]
102 Letter Combinations of a Phone Number.java Medium Java [Backtracking, String]
103 Edit Distance.java Hard Java [DP, Double Sequence DP, Sequence DP, String]
104 Distinct Subsequences.java Hard Java [DP, String]
105 Majority Element.java Easy Java [Array, Bit Manipulation, Divide and Conquer]
106 Ones and Zeroes.java Hard Java [DP]
107 Pow(x, n).java Medium Java [Binary Search, Math]
108 Word Break II.java Hard Java [Backtracking, DFS, DP, Hash Table, Memoization]
109 Nested List Weight Sum.java Easy Java [BFS, DFS]
110 Same Tree.java Easy Java [DFS, Tree]
111 Convert Sorted Array to Binary Search Tree.java Easy Java [DFS, Divide and Conquer, Tree]
112 Construct Binary Tree from Preorder and Inorder Traversal.java Medium Java [Array, DFS, Divide and Conquer, Hash Table, Tree]
113 Add Digits.java Easy Java [Math]
114 Add Two Numbers.java Medium Java [Linked List, Math]
115 Add Two Numbers II.java Medium Java [Linked List]
116 Balanced Binary Tree.java Medium Java [DFS, Tree]
117 Valid Anagram.java Easy Java [Hash Table, Sort]
118 Populating Next Right Pointers in Each Node.java Medium Java [DFS, Divide and Conquer, Tree]
119 Validate Binary Search Tree.java Medium Java [BST, DFS, Divide and Conquer, Tree]
120 Convert Sorted List to Binary Search Tree.java Medium Java [BST, DFS, Divide and Conquer, Linked List]
121 Flatten Binary Tree to Linked List.java Medium Java [Binary Tree, DFS]
122 Binary Tree Paths.java Easy Java [Backtracking, Binary Tree, DFS]
123 Minimum Size Subarray Sum.java Medium Java [Array, Binary Search, Subarray, Two Pointers]
124 Longest Substring Without Repeating Characters.java Medium Java [Hash Table, String, Two Pointers]
125 Minimum Window Substring.java Hard Java [Hash Table, String, Two Pointers]
126 Linked List Cycle.java Easy Java [Linked List, Two Pointers]
127 Remove Nth Node From End of List.java Medium Java [Linked List, Two Pointers]
128 Longest Substring with At Most K Distinct Characters.java Hard Java [Hash Table, Sliding Window, String]
129 Linked List Cycle II.java Medium Java [Linked List, Math, Two Pointers]
130 Kth Smallest Element in a Sorted Matrix.java Medium Java [Binary Search, Heap]
131 Find Minimum in Rotated Sorted Array.java Medium Java [Array, Binary Search]
132 Find Minimum in Rotated Sorted Array II.java Hard Java [Array, Binary Search]
133 Connecting Graph.java Medium Java [Union Find]
134 Connecting Graph II.java Medium Java [Union Find]
135 Connecting Graph III.java Medium Java [Union Find]
136 Number of Islands.java Medium Java [BFS, DFS, Matrix DFS, Union Find]
137 Number of Islands II.java Hard Java [Union Find]
138 Surrounded Regions.java Medium Java [BFS, DFS, Matrix DFS, Union Find]
139 Implement Trie (Prefix Tree).java Medium Java [Design, Trie]
140 Add and Search Word - Data structure design.java Medium Java [Backtracking, Design, Trie]
141 Word Search II.java Hard Java [Backtracking, DFS, Trie]
142 Word Search.java Medium Java [Array, Backtracking, DFS]
143 Word Squares.java Hard Java [Backtracking, Trie]
144 Trapping Rain Water.java Hard Java [Array, Stack, Two Pointers]
145 Min Stack.java Easy Java [Design, Stack]
146 Implement Queue using Stacks.java Easy Java [Design, Stack]
147 Decode String.java Medium Java [DFS, Divide and Conquer, Stack]
148 Largest Rectangle in Histogram.java Hard Java [Array, Monotonous Stack, Stack]
149 Maximum Binary Tree.java Medium Java [Stack, Tree]
150 Reverse Integer.java Easy Java [Math]
151 Swap Nodes in Pairs.java Medium Java [Linked List]
152 Find Peak Element II.java Hard Java [Binary Search, DFS, Divide and Conquer]
153 Sqrt(x).java Easy Java [Binary Search, Math]
154 First Bad Version.java Easy Java [Binary Search]
155 Wood Cut.java Medium Java [Binary Search]
156 Find the Duplicate Number.java Medium Java [Array, Binary Search, Two Pointers]
157 Palindrome Pairs.java Hard Java [Hash Table, String, Trie]
158 Game of Life.java Medium Java [Array]
159 Maximum Average Subarray II.java Review Java [Array, Binary Search, PreSum]
160 Meeting Rooms.java Easy Java [PriorityQueue, Sort, Sweep Line]
161 Number of Airplane in the sky.java Medium Java [Array, Interval, PriorityQueue, Sort, Sweep Line]
162 Meeting Rooms II.java Medium Java [Greedy, Heap, PriorityQueue, Sort, Sweep Line]
163 The Skyline Problem.java Review Java [Binary Indexed Tree, Divide and Conquer, Heap, PriorityQueue, Segment Tree, Sweep Line]
164 Unique Path.java Medium Java [Array, Coordinate DP, DP]
165 Maximal Rectangle.java Hard Java [Array, DP, Hash Table, Stack]
166 Maximal Square.java Medium Java [Coordinate DP, DP]
167 Longest Increasing Path in a Matrix.java Hard Java [Coordinate DP, DFS, DP, Memoization, Topological Sort]
168 Coins in a Line.java Medium Java [DP, Game Theory, Greedy]
169 Coins in a Line II.java Medium Java [Array, DP, Game Theory, Memoization, MiniMax]
170 Binary Tree Inorder Traversal.java Easy Java [Hash Table, Stack, Tree]
171 Binary Tree Postorder Traversal.java Medium Java [Stack, Tree, Two Stacks]
172 Change to Anagram.java Easy Java [String]
173 Classical Binary Search.java Easy Java [Binary Search]
174 Climbing Stairs.java Easy Java [DP, Memoization, Sequence DP]
175 Coins in a Line III.java Hard Java [Array, DP, Game Theory, Interval DP, Memoization]
176 Closest Binary Search Tree Value.java Easy Java [BST, Binary Search, Tree]
177 Compare Version Numbers.java Medium Java [String]
178 Count Complete Tree Nodes.java Medium Java [Binary Search, Tree]
179 Course Schedule.java Medium Java [BFS, Backtracking, DFS, Graph, Topological Sort]
180 Course Schedule II.java Medium Java [BFS, DFS, Graph, Topological Sort]
181 Binary Tree Preorder Traversal.java Easy Java [BFS, DFS, Stack, Tree]
182 Closest Number in Sorted Array.java Easy Java [Binary Search]
183 Complete Binary Tree.java Easy Java [BFS, Tree]
184 Compare Strings.java Easy Java [String]
185 Contains Duplicate.java Easy Java [Array, Hash Table]
186 Contains Duplicate II.java Easy Java [Array, Hash Table]
187 Contains Duplicate III.java Medium Java [BST]
188 Burst Balloons.java Hard Java [DP, Divide and Conquer, Interval DP, Memoization]
189 Nim Game.java Easy Java [Brainteaser, DP, Game Theory]
190 Convert Integer A to Integer B.java Easy Java [Bit Manipulation]
191 Cosine Similarity.java Easy Java [Basic Implementation]
192 Count 1 in Binary.java Easy Java [Bit Manipulation]
193 Count and Say.java Easy Java [Basic Implementation, String]
194 K Edit Distance.java Hard Java [DP, Double Sequence DP, Sequence DP, Trie]
195 Jump Game.java Medium Java [Array, DP, Greedy]
196 Coin Change 2.java Medium Java [Backpack DP, DP]
197 Paint House.java Easy Java [DP, Sequence DP, Status DP]
198 Decode Ways.java Medium Java [DP, Partition DP, String]
199 Longest Continuous Increasing Subsequence.java Easy Java [Array, Coordinate DP, DP]
200 Minimum Path Sum.java Medium Java [Array, Coordinate DP, DP]
201 Counting Bits.java Medium Java [Bit Manipulation, Bitwise DP, DP]
202 Continuous Subarray Sum.java Medium Java [Coordinate DP, DP, Math, Subarray]
203 House Robber.java Easy Java [DP, Sequence DP]
204 House Robber II.java Medium Java [DP, Sequence DP, Status DP]
205 House Robber III.java Medium Java [DFS, DP, Status DP, Tree]
206 Paint House II.java Hard Java [DP, Sequence DP, Status DP]
207 Best Time to Buy and Sell Stock III.java Hard Java [Array, DP, Sequence DP]
208 Best Time to Buy and Sell Stock IV.java Hard Java [DP, Sequence DP]
209 Russian Doll Envelopes.java Hard Java [Binary Search, Coordinate DP, DP]
210 Permutation in String.java Medium Java [Two Pointers]
211 Permutations II.java Medium Java [Backtracking]
212 Shuffle an Array.java Medium Java [Permutation]
213 Find All Anagrams in a String.java Easy Java [Hash Table, Sliding Window]
214 Group Anagrams.java Medium Java [Hash Table, String]
215 Backpack.java Medium Java [Backpack DP, DP]
216 Backpack II.java Medium Java [Backpack DP, DP]
217 Backpack V.java Medium Java [Backpack DP, DP]
218 Count Primes.java Easy Java [Hash Table, Math]
219 Delete Node in a Linked List.java Easy Java [Linked List]
220 Excel Sheet Column Number.java Easy Java [Math]
221 Excel Sheet Column Title.java Easy Java [Math]
222 Flip Game.java Easy Java [String]
223 Expression Tree Build.java Hard Java [Binary Tree, Expression Tree, Minimum Binary Tree, Stack]
224 Expression Evaluation.java Hard Java [Binary Tree, DFS, Expression Tree, Minimum Binary Tree, Stack]
225 Convert Expression to Polish Notation.java Hard Java [Binary Tree, DFS, Expression Tree, Stack]
226 Convert Expression to Reverse Polish Notation.java Hard Java [Binary Tree, DFS, Expression Tree, Stack]
227 Evaluate Reverse Polish Notation.java Medium Java [Stack]
228 Decode Ways II.java Hard Java [DP, Enumeration, Partition DP]
229 Palindrome Partitioning II.java Hard Java [DP, Partition DP]
230 Backpack III.java Hard Java [Backpack DP, DP]
231 First Missing Positive.java Hard Java [Array]
232 Implement strStr().java Easy Java [String, Two Pointers]
233 Insertion Sort List.java Medium Java [Linked List, Sort]
234 Interleaving Positive and Negative Numbers.java Medium Java [Two Pointers]
235 Largest Number.java Medium Java [Sort]
236 Last Position of Target.java Easy Java [Binary Search]
237 Length of Last Word.java Easy Java [String]
238 Longest Common Substring.java Medium Java [DP, Double Sequence DP, Sequence DP, String]
239 Longest Increasing Continuous subsequence.java Easy Java [Array, Coordinate DP, DP]
240 Longest Increasing Continuous subsequence II.java Medium Java [Array, Coordinate DP, DP, Memoization]
241 N-Queens.java Hard Java [Backtracking]
242 N-Queens II.java Hard Java [Backtracking]
243 Maximum Subarray.java Easy Java [Array, DFS, DP, Divide and Conquer, PreSum, Sequence DP, Subarray]
244 Maximum Subarray II.java Medium Java [Array, DP, Greedy, PreSum, Sequence DP, Subarray]
245 Median.java Easy Java [Array, Quick Select, Quick Sort]
246 Middle of Linked List.java Easy Java [Linked List]
247 Singleton.java Easy Java [Design]
248 Remove Linked List Elements.java Easy Java [Linked List]
249 Fibonacci.java Easy Java [DP, Math, Memoization]
250 Palindrome Linked List.java Easy Java [Linked List, Two Pointers]
251 Reverse Linked List.java Easy Java [Linked List]
252 Reverse Linked List II .java Medium Java [Linked List]
253 Intersection of Two Linked Lists.java Easy Java [Linked List]
254 Palindrome Permutation.java Easy Java [Hash Table]
255 Valid Palindrome.java Easy Java [String, Two Pointers]
256 Implement Stack using Queues.java Easy Java [Design, Stack]
257 Implement Stack.java Easy Java [Stack]
258 Invert Binary Tree.java Easy Java [BFS, DFS, Tree]
259 Maximum Depth of Binary Tree.java Easy Java [DFS, Tree]
260 Minimum Depth of Binary Tree.java Easy Java [BFS, DFS, Tree]
261 Symmetric Tree.java Easy Java [BFS, DFS, Tree]
262 Tweaked Identical Binary Tree.java Easy Java [DFS, Tree]
263 Merge Two Binary Trees.java Easy Java [DFS, Tree]
264 Subtree.java Easy Java [DFS, Tree]
265 Lowest Common Ancestor of a Binary Tree.java Medium Java [DFS, Tree]
266 Lowest Common Ancestor II.java Easy Java [Hash Table, Tree]
267 Lowest Common Ancestor of a Binary Search Tree.java Medium Java [BST, DFS, Tree]
268 Hash Function.java Easy Java [Hash Table]
269 Merge Two Sorted Lists.java Easy Java [Linked List]
270 Missing Number.java Easy Java [Array, Bit Manipulation, Math]
271 LRU Cache.java Hard Java [Design, Hash Table, Linked List]
272 Remove Duplicates from Sorted Array.java Easy Java [Array, Two Pointers]
273 Remove Duplicates from Sorted Array II.java Medium Java [Array, Two Pointers]
274 Remove Duplicates from Sorted List.java Easy Java [Linked List]
275 Remove Duplicates from Sorted List II.java Medium Java [Linked List]
276 QuickSort.java Medium Java [Quick Sort, Sort]
277 MergeSort.java Medium Java [Merge Sort, Sort]
278 Longest Word in Dictionary.java Easy Java [Hash Table, Trie]
279 Binary Tree Level Order Traversal.java Medium Java [BFS, DFS, Tree]
280 Binary Tree Level Order Traversal II.java Medium Java [BFS, Tree]
281 Binary Tree Longest Consecutive Sequence II.java Medium Java [DFS, Divide and Conquer, Double Recursive, Tree]
282 Binary Tree Maximum Path Sum.java Hard Java [DFS, DP, Tree, Tree DP]
283 Path Sum.java Easy Java [DFS, Tree]
284 Path Sum II.java Easy Java [Backtracking, DFS, Tree]
285 Path Sum III.java Easy Java [DFS, Double Recursive, Tree]
286 Rotate String.java Easy Java [String]
287 Combinations.java Medium Java [Backtracking, Combination, DFS]
288 Combination Sum IV.java Medium Java [Array, Backpack DP, DP]
289 Binary Tree Right Side View.java Medium Java [BFS, DFS, Tree]
290 Binary Tree Maximum Path Sum II.java Medium Java [DFS, Tree]
291 Rotate List.java Medium Java [Linked List, Two Pointers]
292 Basic Calculator.java Hard Java [Binary Tree, Expression Tree, Math, Minimum Binary Tree, Stack]
293 Longest Consecutive Sequence.java Hard Java [Array, Hash Table, Union Find]
294 Binary Tree Longest Consecutive Sequence.java Medium Java [DFS, Divide and Conquer, Tree]
295 Number of Connected Components in an Undirected Graph.java Medium Java [BFS, DFS, Graph, Union Find]
296 Next Closest Time.java Medium Java [Basic Implementation, Enumeration, String]
297 Serialize and Deserialize Binary Tree.java Hard Java [BFS, DFS, Deque, Design, Divide and Conquer, Tree]
298 Partition Array.java Medium Java [Array, Quick Sort, Sort, Two Pointers]
299 Word Ladder.java Medium Java [BFS]
300 Unique Word Abbreviation.java Medium Java [Design, Hash Table]
301 Unique Binary Search Tree II.java Medium Java [BST, DP, Divide and Conquer, Tree]
302 Ugly Number.java Medium Java [Math]
303 Top K Frequent Words.java Medium Java [Hash Table, Heap, MaxHeap, MinHeap, PriorityQueue, Trie]
304 Segment Tree Build.java Medium Java [Binary Tree, Divide and Conquer, Lint, Segment Tree]
305 Segment Tree Build II.java Medium Java [Binary Tree, Divide and Conquer, Lint, Segment Tree]
306 Segment Tree Query.java Medium Java [Binary Tree, DFS, Divide and Conquer, Lint, Segment Tree]
307 Segment Tree Modify.java Medium Java [Binary Tree, DFS, Divide and Conquer, Lint, Segment Tree]
308 Segment Tree Query II.java Medium Java [Binary Tree, DFS, Divide and Conquer, Lint, Segment Tree]
309 Count of Smaller Numbers After Self.java Hard Java [BST, Binary Indexed Tree, Binary Search, Divide and Conquer, Segment Tree]
310 ColorGrid.java Medium Java [Design, Hash Table]
311 Container With Most Water.java Medium Java [Array, Two Pointers]
312 Copy List with Random Pointer.java Medium Java [Hash Table, Linked List]
313 Encode and Decode Strings.java Medium Java [String]
314 Fast Power.java Medium Java [DFS, Divide and Conquer]
315 Find the Connected Component in the Undirected Graph.java Medium Java [BFS, DFS]
316 HashWithCustomizedClass(LinkedList).java Medium Java [Hash Table]
317 Interval Minimum Number.java Medium Java [Binary Search, Divide and Conquer, Lint, Segment Tree]
318 Interval Sum.java Medium Java [Binary Search, Lint, Segment Tree]
319 Kth Smallest Element in a BST.java Medium Java [BST, DFS, Stack, Tree]
320 Longest Common Prefix.java Easy Java [String]
321 Majority Element II.java Medium Java [Array]
322 Partition List.java Medium Java [Linked List, Two Pointers]
323 Peeking Iterator.java Medium Java [Design]
324 Rehashing.java Medium Java [Hash Table]
325 Reorder List.java Medium Java [Linked List]
326 Restore IP Addresses.java Medium Java [Backtracking, DFS, String]
327 Reverse Words in a String.java Medium Java [String]
328 Reverse Words in a String II.java Medium Java [String]
329 Reverse Words in a String III.java Easy Java [String]
330 Search a 2D Matrix.java Medium Java [Array, Binary Search]
331 Search a 2D Matrix II.java Medium Java [Binary Search, Divide and Conquer]
332 Search for a Range.java Medium Java [Array, Binary Search]
333 Search Range in Binary Search Tree .java Medium Java [BST, Binary Tree]
334 Merge Sorted Array II.java Easy Java [Array]
335 Nth to Last Node in List.java Easy Java [Linked List]
336 Sort List.java Medium Java [Divide and Conquer, Linked List, Merge Sort, Sort]
337 Summary Ranges.java Medium Java [Array]
338 Topological Sorting.java Medium Java [BFS, DFS, Topological Sort]
339 Remove Duplicate Letters.java Hard Java [Greedy, Hash Table, Stack]
340 Spiral Matrix.java Medium Java [Array, Enumeration]
341 Expression Add Operators.java Hard Java [Backtracking, DFS, Divide and Conquer, String]
342 Insert Interval.java Hard Java [Array, PriorityQueue, Sort]
343 Shortest Palindrome.java Hard Java [KMP, String]
344 Two Sum.java Easy Java [Array, Hash Table]
345 K Empty Slots.java Hard Java [Array, BST, TreeSet]
346 Count of Range Sum.java Hard Java [BST, Divide and Conquer, Merge Sort, PreSum]
347 Max Sum of Rectangle No Larger Than K.java Hard Java [Array, BST, Binary Search, DP, Queue, TreeSet]
348 Perfect Rectangle.java Hard Java [Design, Geometry, Hash Table]
349 Construct Binary Tree from Inorder and Postorder Traversal.java Medium Java [Array, DFS, Divide and Conquer, Tree]
350 Generate Parentheses.java Medium Java [Backtracking, DFS, Sequence DFS, String]
351 Strobogrammatic Number II.java Medium Java [DFS, Enumeration, Math, Sequence DFS]
352 Flip Game II.java Medium Java [Backtracking, DFS, DP]
353 Max Area of Island.java Easy Java [Array, DFS]
354 Max Points on a Line.java Hard Java [Array, Geometry, Hash Table, Math]
355 Number of Digit One.java Hard Java [Math]
356 Binary Representation.java Hard Java [Bit Manipulation, String]
357 Palindrome Partitioning.java Medium Java [Backtracking, DFS]
358 Recover Binary Search Tree.java Hard Java [BST, DFS, Tree]
359 Subarray Sum.java Easy Java [Array, Hash Table, PreSum, Subarray]
360 Submatrix Sum.java Medium Java [Array, Hash Table, PreSum]
361 Longest Palindromic Substring.java Medium Java [DP, String]
362 Longest Palindromic Subsequence.java Medium Java [DFS, DP, Interval DP, Memoization]
363 Jump Game II.java Hard Java [Array, Coordinate DP, DP, Greedy]
364 Gas Station.java Medium Java [Greedy]
365 Triangles.java Medium Java [Array, Coordinate DP, DFS, DP, Memoization]
366 Range Sum Query - Immutable.java Easy Java [DP, PreSum]
367 Longest Valid Parentheses.java Hard Java [Coordinate DP, Stack, String]
368 Remove Invalid Parentheses.java Review Java [BFS, DFS, DP]
369 Merge Intervals.java Medium Java [Array, PriorityQueue, Sort, Sweep Line]
370 H-Index.java Medium Java [Bucket Sort, Hash Table, Sort]
371 H-Index II.java Medium Java [Binary Search]
372 Sort Colors.java Medium Java [Array, Partition, Quick Sort, Sort, Two Pointers]
373 Sort Colors II.java Medium Java [Partition, Quick Sort, Sort, Two Pointers]
374 Sort Letters by Case.java Medium Java [Partition, Sort, String, Two Pointers]
375 Subarray Sum Closest.java Medium Java [PreSum, PriorityQueue, Sort, Subarray]
376 Task Scheduler.java Medium Java [Array, Enumeration, Greedy, PriorityQueue, Queue]
377 Rearrange String k Distance Apart.java Hard Java [Greedy, Hash Table, Heap]
378 Exam Room.java Medium Java [PriorityQueue, Sort]
379 Anagrams.java Medium Java [Array, Hash Table]
380 Path Sum IV.java Medium Java [DFS, Hash Table, Tree]
381 Longest Words.java Easy Java [Hash Table, String]
382 Unique Characters.java Easy Java [Array, String]
383 Number Of Corner Rectangles.java Medium Java [DP, Math]
384 Palindromic Substrings.java Medium Java [DP, String]
385 Multiply Strings.java Medium Java [Math, String]
386 Subsets.java Medium Java [Array, BFS, Backtracking, Bit Manipulation, DFS]
387 Subsets II.java Medium Java [Array, BFS, Backtracking, DFS]
388 Combination Sum.java Medium Java [Array, Backtracking, Combination, DFS]
389 Combination Sum II.java Medium Java [Array, Backtracking, Combination, DFS]
390 Combination Sum III.java Medium Java [Array, Backtracking, Combination, DFS]
391 Product of Array Except Self.java Medium Java [Array, PreProduct]
392 Total Hamming Distance.java Medium Java [Bit Manipulation]
393 Smallest Subtree with all the Deepest Nodes.java Medium Java [DFS, Divide and Conquer, Tree]
394 Binary Gap.java Easy Java [Bit Manipulation]
395 Subarray Sum Equals K.java Medium Java [Array, Hash Table, PreSum, Subarray]
396 Maximize Distance to Closest Person.java Easy Java [Array]
397 Simplify Path.java Medium Java [Stack, String]
398 Convert Binary Search Tree to Sorted Doubly Linked List (extra space).java Medium Java [Linked List, Stack, Tree]
399 Paint Fence.java Easy Java [DP, Sequence DP]
400 Binary Tree Zigzag Level Order Traversal.java Medium Java [BFS, Stack, Tree]
401 Word Break.java Medium Java [DP, Hash Table, Sequence DP]
402 Best Time to Buy and Sell Stock.java Easy Java [Array, DP, Sequence DP]
403 Best Time to Buy and Sell Stock II.java Easy Java [Array, DP, Greedy, Sequence DP, Status DP]
404 Longest Increasing Subsequence.java Medium Java [Binary Search, Coordinate DP, DP, Memoization]
405 Best Time to Buy and Sell Stock with Transaction Fee.java Medium Java [Array, DP, Greedy, Sequence DP, Status DP]
406 Random Pick Index.java Medium Java [Reservior Sampling]
407 Find the Celebrity.java Medium Java [Array, Greedy]
408 Sparse Matrix Multiplication.java Medium Java [Hash Table]
409 Brick Wall.java Medium Java [Hash Table]
410 Exclusive Time of Functions.java Medium Java [Stack]
411 Friends Of Appropriate Ages.java Medium Java [Array, Math]
412 Target Sum.java Medium Java [DFS, DP]
413 Maximum Size Subarray Sum Equals k.java Medium Java [Hash Table, PreSum, Subarray]
414 Contiguous Array.java Medium Java [Hash Table]
415 Line Reflection.java Medium Java [Hash Table, Math]
416 Insert Delete GetRandom O(1).java Medium Java [Array, Design, Hash Table]
417 Number of Longest Increasing Subsequence.java Medium Java [Coordinate DP, DP]
418 Minimum Swaps To Make Sequences Increasing.java Medium Java [Coordinate DP, DP, Status DP]
419 Binary Tree Vertical Order Traversal.java Medium Java [BFS, DFS, Hash Table, Tree]
420 Populating Next Right Pointers in Each Node II.java Medium Java [DFS, Tree]
421 Search in Rotated Sorted Array.java Medium Java [Array, Binary Search]
422 Minimum Subarray.java Easy Java [Array, DP, Greedy, Sequence DP, Subarray]
423 Valid Number.java Hard Java [Enumeration, Math, String]
424 Find the Weak Connected Component in the Directed Graph.java Medium Java [Union Find]
425 Accounts Merge.java Medium Java [DFS, Hash Table, Hash Table, Union Find]
426 Bricks Falling When Hit.java Hard Java [Union Find]
427 Interval Sum II.java Hard Java [Binary Search, Lint, Segment Tree]
428 Count of Smaller Number.java Medium Java [Binary Search, Lint, Segment Tree]
429 HashHeap.java Hard Java [HashHeap, Heap]
430 My Calendar I.java Medium Java [Array, TreeMap]
431 Reverse Pairs.java Medium Java [Binary Indexed Tree, Binary Search Tree, Divide and Conquer, Merge Sort, Segment Tree]
432 Trapping Rain Water II.java Hard Java [BFS, Heap, MinHeap, PriorityQueue]
433 Kth Largest Element in an Array.java Medium Java [Divide and Conquer, Heap, MinHeap, PriorityQueue, Quick Sort]
434 Merge k Sorted Lists.java Medium Java [Divide and Conquer, Heap, Linked List, PriorityQueue]
435 Merge k Sorted Arrays.java Medium Java [Heap, MinHeap, PriorityQueue]
436 Heapify.java Medium Java [Heap, MinHeap]
437 Top K Frequent Elements.java Medium Java [Hash Table, Heap, MaxHeap, MinHeap, PriorityQueue]
438 Ugly Number II.java Medium Java [DP, Enumeration, Heap, Math, PriorityQueue]
439 Find Median from Data Stream.java Hard Java [Design, Heap, MaxHeap, MinHeap]
440 Sliding Window Median.java Hard Java [Design, Heap, MaxHeap, MinHeap, Sliding Window]
441 Inorder Successor in BST.java Medium Java [BST, Tree]
442 Subtree of Another Tree.java Easy Java [DFS, Divide and Conquer, Tree]
443 Two Sum IV - Input is a BST.java Easy Java [Tree]
444 Read N Characters Given Read4.java Easy Java [Enumeration, String]
445 Design Search Autocomplete System.java Hard Java [Design, Hash Table, MinHeap, PriorityQueue, Trie]
446 Walls and Gates.java Medium Java [BFS, DFS]
447 Merge Sorted Array.java Easy Java [Array, Two Pointers]
448 Integer to English Words.java Hard Java [Enumeration, Math, String]
449 Alien Dictionary.java Hard Java [BFS, Backtracking, DFS, Graph, Topological Sort]
450 Valid Palindrome II.java Easy Java [String]
451 Convert Binary Search Tree to Sorted Doubly Linked List.java Medium Java [BST, DFS, Divide and Conquer, Linked List, Tree]
452 Word Ladder II.java Hard Java [Array, BFS, Backtracking, DFS, Hash Table, String]
453 Moving Average from Data Stream.java Easy Java [Design, Queue, Sliding Window]
454 Move Zeroes.java Easy Java [Array, Two Pointers]
455 Flood Fill.java Easy Java [DFS]
456 Diameter of Binary Tree.java Easy Java [Tree]
457 Backspace String Compare.java Easy Java [Stack, Two Pointers]
458 Text Justification.java Hard Java [Enumeration, String]
459 Read N Characters Given Read4 II - Call multiple times.java Hard Java [Enumeration, String]
460 Frog Jump.java Hard Java [DP, Hash Table]
461 Longest Substring with At Most Two Distinct Characters.java Hard Java [Hash Table, Sliding Window, String, Two Pointers]
462 Shortest Distance from All Buildings.java Hard Java [BFS]
463 String to Integer (atoi).java Medium Java [Math, String]
464 Roman to Integer.java Easy Java [Math, String]
465 Intersection of Two Arrays.java Easy Java [Binary Search, Hash Table, Sort, Two Pointers]
466 Strobogrammatic Number.java Easy Java [Enumeration, Hash Table, Math]
467 Valid Parentheses.java Easy Java [Stack, String]
468 First Unique Character in a String.java Easy Java [Hash Table, String]
469 Add Binary.java Easy Java [Math, String, Two Pointers]
470 Clone Graph.java Medium Java [BFS, DFS, Graph]
471 Sliding Window Maximum.java Hard Java [Deque, Heap, Sliding Window]
472 Median of Two Sorted Arrays.java Hard Java [Array, Binary Search, DFS, Divide and Conquer]
473 Permutations.java Medium Java [Backtracking, DFS, Permutation]
474 One Edit Distance.java Medium Java [String]
475 4Sum.java Medium Java [Hash Table]
476 Bus Routes.java Hard Java [BFS]
477 Sliding Puzzle.java Hard Java [BFS, Graph]
478 Isomorphic Strings.java Easy Java [Hash Table]
479 Cracking the Safe.java Hard Java [DFS, Greedy, Math]
480 Redundant Connection.java Medium Java [BFS, DFS, Graph, Tree, Union Find]
481 Graph Valid Tree.java Medium Java [BFS, DFS, Graph, Union Find]
482 Redundant Connection II.java Hard Java [DFS, Graph, Tree, Union Find]
483 The Maze.java Medium Java [BFS, DFS]
484 The Maze II.java Medium Java [BFS, DFS, PriorityQueue]
485 The Maze III.java Hard Java [BFS, DFS, PriorityQueue]
486 Predict the Winner.java Medium Java [DP, MiniMax]
487 Next Greater Element I.java Easy Java [Hash Table, Stack]
488 Group Shifted Strings.java Medium Java [Hash Table, String]
489 Delete Digits.java Medium Java [Greedy, Priority Queue]
490 Flatten 2D Vector.java Medium Java [Design]
491 The Spiral Matrix II.java Medium Java [Array]
492 Regular Expression Matching.java Hard Java [Backtracking, DP, Double Sequence DP, Sequence DP, String]
493 Wildcard Matching.java Hard Java [Backtracking, DP, Double Sequence DP, Greedy, Sequence DP, String]
494 Robot Room Cleaner.java Hard Java [Backtracking, DFS]
495 Maximum Vacation Days.java Hard Java [DP]
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,839评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,543评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,116评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,371评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,384评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,111评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,416评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,053评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,558评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,007评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,117评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,756评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,324评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,315评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,539评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,578评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,877评论 2 345

推荐阅读更多精彩内容