GitHub - Ooleum/LintCode: Java Solutions to problems on LintCode/LeetCode

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]