Practice Makes Perfect 🍭
| # | Title | Topic | Solution | Difficulty |
|---|---|---|---|---|
| 1268 | Search Suggestions System | String | Java | Medium |
| 1244 | Design A Leaderboard | Sort、Design、Hash Table | Java | Medium |
| 1143 | Longest Common Subsequence | Dynamic Programming | Java | Medium |
| 1122 | Relative Sort Array | Sort、Array | Java | Easy |
| 1091 | Shortest Path in Binary Matrix | Breadth-first Search | Java | Medium |
| 980 | Unique Paths III | Depth-first Search、Backtracking | Java | Hard |
| 917 | Reverse Only Letters | String | Java | Easy |
| 874 | Walking Robot Simulation | Greedy | Java | Easy |
| 860 | Lemonade Change | Greedy | Java | Easy |
| 818 | Race Car | Heap、Dynamic Programming | Java | Hard |
| 773 | Sliding Puzzle | Breadth-first Search | Java | Hard |
| 771 | Jewels and Stones | Hash Table | Java | Easy |
| 746 | Min Cost Climbing Stairs | Array、Dynamic Programming | Java | Easy |
| 739 | Daily Temperatures | Stack、Hash Table | Java | Medium |
| 714 | Best Time to Buy and Sell Stock with Transaction Fee | Greedy、Array、Dynamic Programming | Java | Medium |
| 709 | To Lower Case | String | Java | Easy |
| 680 | Valid Palindrome II | String | Java | Easy |
| 647 | Palindromic Substrings | String、Dynamic Programming | Java | Medium |
| 621 | Task Scheduler | Greedy、Queue、Array | Java | Medium |
| 617 | Merge Two Binary Trees | Tree | Java | Easy |
| 590 | N-ary Tree Postorder Traversal | Tree | Java | Easy |
| 589 | N-ary Tree Preorder Traversal | Tree | Java | Easy |
| 581 | Shortest Unsorted Continuous Subarray | Array | Java | Medium |
| 560 | Subarray Sum Equals K | Array、Hash Table | Java | Medium |
| 557 | Reverse Words in a String III | String | Java | Easy |
| 552 | Student Attendance Record II | Dynamic Programming | Java | Hard |
| 547 | Number of Provinces | Depth-first Search、Union Find | Java | Medium |
| 543 | Diameter of Binary Tree | Tree | Java | Easy |
| 541 | Reverse String II | String | Java | Easy |
| 538 | Convert BST to Greater Tree | Tree | Java | Medium |
| 529 | Minesweeper | Depth-first Search、Breadth-first Search | Java | Medium |
| 524 | Longest Word in Dictionary through Deleting | Sort、Two Pointers | Java | Medium |
| 523 | Continuous Subarray Sum | Math、Dynamic Programming | Java | Medium |
| 518 | Coin Change 2 | Dynamic Programming | Java | Medium |
| 515 | Find Largest Value in Each Tree Row | Tree、Depth-first Search、Breadth-first Search | Java | Medium |
| 494 | Target Sum | Depth-first Search、Dynamic Programming | Java | Medium |
| 493 | Reverse Pairs | Sort、Binary Indexed Tree、Segment Tree、Binary Search、Divide and Conquer | Java | Hard |
| 461 | Hamming Distance | Bit Manipulation | Java | Easy |
| 455 | Assign Cookies | Greedy | Java | Easy |
| 454 | 4Sum II | Hash Table、Binary Search | Java | Medium |
| 448 | Find All Numbers Disappeared in an Array | Array | Java | Easy |
| 438 | Find All Anagrams in a String | Hash Table | Java | Medium |
| 437 | Path Sum III | Tree | Java | Medium |
| 433 | Minimum Genetic Mutation | Backtracking、Breadth-first Search | Java | Medium |
| 429 | N-ary Tree Level Order Traversal | Tree、Breadth-first Search | Java | Medium |
| 416 | Partition Equal Subset Sum | Dynamic Programming | Java | Medium |
| 412 | Fizz Buzz | String | Java | Easy |
| 410 | Split Array Largest Sum | Binary Search、Dynamic Programming | Java | Hard |
| 406 | Queue Reconstruction by Height | Greedy | Java | Medium |
| 403 | Frog Jump | Dynamic Programming | Java | Hard |
| 399 | Evaluate Division | Union Find、Graph | Java | Medium |
| 395 | Longest Substring with At Least K Repeating Characters | Recursion、Divide and Conquer、Sliding Window | Java | Medium |
| 394 | Decode String | Stack、Depth-first Search | Java | Medium |
| 389 | Find the Difference | Bit Manipulation、Hash Table | Java | Easy |
| 387 | First Unique Character in a String | Hash Table、String | Java | Easy |
| 384 | Shuffle an Array | Array | Java | Medium |
| 380 | Insert Delete GetRandom O(1) | Design、Array、Hash Table | Java | Medium |
| 378 | Kth Smallest Element in a Sorted Matrix | Heap、Binary Search | Java | Medium |
| 371 | Sum of Two Integers | Bit Manipulation | Java | Easy |
| 367 | Valid Perfect Square | Math、Binary Search | Java | Easy |
| 363 | Max Sum of Rectangle No Larger Than K | Queue、Binary Search、Dynamic Programming | Java | Hard |
| 350 | Intersection of Two Arrays II | Sort、Hash Table、Two Pointers、Binary Search | Java | Easy |
| 349 | Intersection of Two Arrays | Sort、Hash Table、Two Pointers、Binary Search | Java | Easy |
| 348 | Design Tic-Tac-Toe | Design | Java | Medium |
| 347 | Top K Frequent Elements | Heap、Hash Table | Java | Medium |
| 344 | Reverse String | Two Pointers、String | Java | Easy |
| 341 | Flatten Nested List Iterator | Stack、Design | Java | Medium |
| 340 | Longest Substring with At Most K Distinct Characters | Hash Table、Two Pointers、String、Sliding Window | Java | Medium |
| 338 | Counting Bits | Bit Manipulation、Dynamic Programming | Java | Medium |
| 337 | House Robber III | Tree、Depth-first Search | Java | Medium |
| 334 | Increasing Triplet Subsequence | Array | Java | Medium |
| 329 | Longest Increasing Path in a Matrix | Depth-first Search、Topological Sort、Memoization | Java | Hard |
| 328 | Odd Even Linked List | Linked List | Java | Medium |
| 326 | Power of Three | Math | Java | Easy |
| 324 | Wiggle Sort II | Sort | Java | Medium |
| 322 | Coin Change | Dynamic Programming | Java | Medium |
| 315 | Count of Smaller Numbers After Self | Sort、Binary Indexed Tree、Segment Tree、Binary Search、Divide and Conquer | Java | Hard |
| 312 | Burst Balloons | Divide and Conquer、Dynamic Programming | Java | Hard |
| 309 | Best Time to Buy and Sell Stock with Cooldown | Dynamic Programming | Java | Medium |
| 308 | Range Sum Query 2D - Mutable | Binary Indexed Tree、Segment Tree | Java | Hard |
| 301 | Remove Invalid Parentheses | Depth-first Search、Breadth-first Search | Java | Hard |
| 300 | Longest Increasing Subsequence | Binary Search、Dynamic Programming | Java | Medium |
| 297 | Serialize and Deserialize Binary Tree | Tree、Design | Java | Hard |
| 295 | Find Median from Data Stream | Heap、Design | Java | Hard |
| 289 | Game of Life | Array | Java | Medium |
| 287 | Find the Duplicate Number | Array、Two Pointers、Binary Search | Java | Medium |
| 285 | Inorder Successor in BST | Tree | Java | Medium |
| 283 | Move Zeroes | Array、Two Pointers | Java | Easy |
| 279 | Perfect Squares | Breadth-first Search、Math、Dynamic Programming | Java | Medium |
| 277 | Find the Celebrity | Array | Java | Medium |
| 269 | Alien Dictionary | Graph、Topological Sort | Java | Hard |
| 268 | Missing Number | Bit Manipulation、Array、Math | Java | Easy |
| 253 | Meeting Rooms II | Heap、Greedy、Sort | Java | Medium |
| 251 | Flatten 2D Vector | Design | Java | Medium |
| 242 | Valid Anagram | Sort、Hash Table | Java | Easy |
| 240 | Search a 2D Matrix II | Binary Search、Divide and Conquer | Java | Medium |
| 239 | Sliding Window Maximum | Heap、Sliding Window | Java | Hard |
| 238 | Product of Array Except Self | Array | Java | Medium |
| 237 | Delete Node in a Linked List | Linked List | Java | Easy |
| 236 | Lowest Common Ancestor of a Binary Tree | Tree | Java | Medium |
| 234 | Palindrome Linked List | Linked List、Two Pointers | Java | Easy |
| 231 | Power of Two | Bit Manipulation、Math | Java | Easy |
| 230 | Kth Smallest Element in a BST | Tree、Binary Search | Java | Medium |
| 227 | Basic Calculator II | Stack、String | Java | Medium |
| 226 | Invert Binary Tree | Tree | Java | Easy |
| 221 | Maximal Square | Dynamic Programming | Java | Medium |
| 218 | The Skyline Problem | Heap、Binary Indexed Tree、Segment Tree、Divide and Conquer、Line Sweep | Java | Hard |
| 217 | Contains Duplicate | Array、Hash Table | Java | Easy |
| 215 | Kth Largest Element in an Array | Heap、Divide and Conquer | Java | Medium |
| 213 | House Robber II | Dynamic Programming | Java | Medium |
| 212 | Word Search II | Trie、Backtracking | Java | Hard |
| 210 | Course Schedule II | Depth-first Search、Breadth-first Search、Graph、Topological Sort | Java | Medium |
| 208 | Implement Trie (Prefix Tree) | Design、Trie | Java | Medium |
| 207 | Course Schedule | Depth-first Search、Breadth-first Search、Graph、Topological Sort | Java | Medium |
| 206 | Reverse Linked List | Linked List | Java | Easy |
| 205 | Isomorphic Strings | Hash Table | Java | Easy |
| 204 | Count Primes | Hash Table、Math | Java | Easy |
| 202 | Happy Number | Hash Table、Math | Java | Easy |
| 200 | Number of Islands | Depth-first Search、Breadth-first Search、Union Find | Java | Medium |
| 198 | House Robber | Dynamic Programming | Java | Easy |
| 191 | Number of 1 Bits | Bit Manipulation | Java | Easy |
| 190 | Reverse Bits | Bit Manipulation | Java | Easy |
| 189 | Rotate Array | Array | Java | Medium |
| 188 | Best Time to Buy and Sell Stock IV | Dynamic Programming | Java | Hard |
| 179 | Largest Number | Sort | Java | Medium |
| 172 | Factorial Trailing Zeroes | Math | Java | Easy |
| 171 | Excel Sheet Column Number | Math | Java | Easy |
| 169 | Majority Element | Bit Manipulation、Array、Divide and Conquer | Java | Easy |
| 166 | Fraction to Recurring Decimal | Hash Table、Math | Java | Medium |
| 163 | Missing Ranges | Array | Java | Easy |
| 162 | Find Peak Element | Array、Binary Search | Java | Medium |
| 160 | Intersection of Two Linked Lists | Linked List | Java | Easy |
| 155 | Min Stack | Stack、Design | Java | Easy |
| 153 | Find Minimum in Rotated Sorted Array | Array、Binary Search | Java | Medium |
| 152 | Maximum Product Subarray | Array、Dynamic Programming | Java | Medium |
| 151 | Reverse Words in a String | String | Java | Medium |
| 150 | Evaluate Reverse Polish Notation | Stack | Java | Medium |
| 149 | Max Points on a Line | Hash Table、Math | Java | Hard |
| 148 | Sort List | Sort、Linked List | Java | Medium |
| 146 | LRU Cache | Design | Java | Medium |
| 144 | Binary Tree Preorder Traversal | Stack、Tree | Java | Medium |
| 142 | Linked List Cycle II | Linked List、Two Pointers | Java | Medium |
| 141 | Linked List Cycle | Linked List、Two Pointers | Java | Easy |
| 140 | Word Break II | Dynamic Programming、Backtracking | Java | Hard |
| 139 | Word Break | Dynamic Programming | Java | Medium |
| 138 | Copy List with Random Pointer | Hash Table、Linked List | Java | Medium |
| 136 | Single Number | Bit Manipulation、Hash Table | Java | Easy |
| 134 | Gas Station | Greedy | Java | Medium |
| 131 | Palindrome Partitioning | Depth-first Search、Dynamic Programming、Backtracking | Java | Medium |
| 130 | Surrounded Regions | Depth-first Search、Breadth-first Search、Union Find | Java | Medium |
| 128 | Longest Consecutive Sequence | Union Find、Array | Java | Hard |
| 127 | Word Ladder | Breadth-first Search | Java | Medium |
| 126 | Word Ladder II | Breadth-first Search、Array、String、Backtracking | Java | Hard |
| 125 | Valid Palindrome | Two Pointers、String | Java | Easy |
| 124 | Binary Tree Maximum Path Sum | Tree、Depth-first Search、Recursion | Java | Hard |
| 123 | Best Time to Buy and Sell Stock III | Array、Dynamic Programming | Java | Hard |
| 122 | Best Time to Buy and Sell Stock II | Greedy、Array | Java | Easy |
| 121 | Best Time to Buy and Sell Stock | Array、Dynamic Programming | Java | Easy |
| 120 | Triangle | Array、Dynamic Programming | Java | Medium |
| 118 | Pascal's Triangle | Array | Java | Easy |
| 116 | Populating Next Right Pointers in Each Node | Tree、Depth-first Search、Breadth-first Search | Java | Medium |
| 115 | Distinct Subsequences | String、Dynamic Programming | Java | Hard |
| 114 | Flatten Binary Tree to Linked List | Tree、Depth-first Search | Java | Medium |
| 111 | Minimum Depth of Binary Tree | Tree、Depth-first Search、Breadth-first Search | Java | Easy |
| 108 | Convert Sorted Array to Binary Search Tree | Tree、Depth-first Search | Java | Easy |
| 105 | Construct Binary Tree from Preorder and Inorder Traversal | Tree、Depth-first Search、Array | Java | Medium |
| 104 | Maximum Depth of Binary Tree | Tree、Depth-first Search | Java | Easy |
| 103 | Binary Tree Zigzag Level Order Traversal | Stack、Tree、Breadth-first Search | Java | Medium |
| 102 | Binary Tree Level Order Traversal | Tree、Breadth-first Search | Java | Medium |
| 101 | Symmetric Tree | Tree、Depth-first Search、Breadth-first Search | Java | Easy |
| 98 | Validate Binary Search Tree | Tree、Depth-first Search | Java | Medium |
| 96 | Unique Binary Search Trees | Tree、Dynamic Programming | Java | Medium |
| 94 | Binary Tree Inorder Traversal | Stack、Tree、Hash Table | Java | Medium |
| 91 | Decode Ways | String、Dynamic Programming | Java | Medium |
| 88 | Merge Sorted Array | Array、Two Pointers | Java | Easy |
| 85 | Maximal Rectangle | Stack、Array、Hash Table、Dynamic Programming | Java | Hard |
| 84 | Largest Rectangle in Histogram | Stack、Array | Java | Hard |
| 79 | Word Search | Array、Backtracking | Java | Medium |
| 78 | Subsets | Bit Manipulation、Array、Backtracking | Java | Medium |
| 77 | Combinations | Backtracking | Java | Medium |
| 76 | Minimum Window Substring | Hash Table、Two Pointers、String、Sliding Window | Java | Hard |
| 75 | Sort Colors | Sort、Array、Two Pointers | Java | Medium |
| 74 | Search a 2D Matrix | Array、Binary Search | Java | Medium |
| 73 | Set Matrix Zeroes | Array | Java | Medium |
| 72 | Edit Distance | String、Dynamic Programming | Java | Hard |
| 70 | Climbing Stairs | Dynamic Programming | Java | Easy |
| 69 | Sqrt(x) | Math、Binary Search | Java | Easy |
| 66 | Plus One | Array | Java | Easy |
| 64 | Minimum Path Sum | Array、Dynamic Programming | Java | Medium |
| 63 | Unique Paths II | Array、Dynamic Programming | Java | Medium |
| 62 | Unique Paths | Array、Dynamic Programming | Java | Medium |
| 58 | Length of Last Word | String | Java | Easy |
| 56 | Merge Intervals | Sort、Array | Java | Medium |
| 55 | Jump Game | Greedy、Array | Java | Medium |
| 54 | Spiral Matrix | Array | Java | Medium |
| 53 | Maximum Subarray | Array、Divide and Conquer、Dynamic Programming | Java | Easy |
| 52 | N-Queens II | Backtracking | Java | Hard |
| 51 | N-Queens | Backtracking | Java | Hard |
| 50 | Pow(x, n) | Math、Binary Search | Java | Medium |
| 49 | Group Anagrams | Hash Table、String | Java | Medium |
| 48 | Rotate Image | Array | Java | Medium |
| 47 | Permutations II | Backtracking | Java | Medium |
| 46 | Permutations | Backtracking | Java | Medium |
| 45 | Jump Game II | Greedy、Array | Java | Hard |
| 44 | Wildcard Matching | Greedy、String、Dynamic Programming、Backtracking | Java | Hard |
| 42 | Trapping Rain Water | Stack、Array、Two Pointers | Java | Hard |
| 41 | First Missing Positive | Array | Java | Hard |
| 39 | Combination Sum | Array、Backtracking | Java | Medium |
| 38 | Count and Say | String | Java | Easy |
| 37 | Sudoku Solver | Hash Table、Backtracking | Java | Hard |
| 36 | Valid Sudoku | Hash Table | Java | Medium |
| 34 | Find First and Last Position of Element in Sorted Array | Array、Binary Search | Java | Medium |
| 33 | Search in Rotated Sorted Array | Array、Binary Search | Java | Medium |
| 32 | Longest Valid Parentheses | String、Dynamic Programming | Java | Hard |
| 31 | Next Permutation | Array | Java | Medium |
| 29 | Divide Two Integers | Math、Binary Search | Java | Medium |
| 28 | Implement strStr() | Two Pointers、String | Java | Easy |
| 26 | Remove Duplicates from Sorted Array | Array、Two Pointers | Java | Easy |
| 25 | Reverse Nodes in k-Group | Linked List | Java | Hard |
| 24 | Swap Nodes in Pairs | Linked List | Java | Medium |
| 23 | Merge k Sorted Lists | Heap、Linked List、Divide and Conquer | Java | Hard |
| 22 | Generate Parentheses | String、Backtracking | Java | Medium |
| 21 | Merge Two Sorted Lists | Linked List | Java | Easy |
| 20 | Valid Parentheses | Stack、String | Java | Easy |
| 19 | Remove Nth Node From End of List | Linked List、Two Pointers | Java | Medium |
| 17 | Letter Combinations of a Phone Number | String、Backtracking | Java | Medium |
| 15 | 3Sum | Array、Two Pointers | Java | Medium |
| 14 | Longest Common Prefix | String | Java | Easy |
| 13 | Roman to Integer | Math、String | Java | Easy |
| 11 | Container With Most Water | Array、Two Pointers | Java | Medium |
| 10 | Regular Expression Matching | String、Dynamic Programming、Backtracking | Java | Hard |
| 8 | String to Integer (atoi) | Math、String | Java | Medium |
| 7 | Reverse Integer | Math | Java | Easy |
| 5 | Longest Palindromic Substring | String、Dynamic Programming | Java | Medium |
| 4 | Median of Two Sorted Arrays | Array、Binary Search、Divide and Conquer | Java | Hard |
| 3 | Longest Substring Without Repeating Characters | Hash Table、Two Pointers、String、Sliding Window | Java | Medium |
| 2 | Add Two Numbers | Recursion、Linked List、Math | Java | Medium |
| 1 | Two Sum | Array、HashTable | Java | Easy |