/LintCode

Java Solutions to problems on LintCode/LeetCode

Primary LanguageJava

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