LeetCode solutions in Java ☺!
★ indicates critical problems in my opinion.
☆ indicates LeetCode subscribers only.
# | Difficulty | Problem | Solution | Tag | 1st Run | 2nd Run | |
---|---|---|---|---|---|---|---|
★ | 1 | Easy | Two Sum | Java | Hash | ✔️ | |
2 | Medium | Add Two Numbers | Java | Linked List | ✔️ | ||
★ | 4 | Hard | Median of Two Sorted Arrays | Java | Array | ✔️ | |
5 | Medium | Longest Palindromic Substring | Java | Dynamic Programming | ✔️ | ||
★ | 15 | Medium | 3Sum | Java | Two Pointers | ✔️ | |
20 | Easy | Valid Parentheses | Java | Stack | ✔️ | ||
21 | Easy | Merge Two Sorted Lists | Java | Linked List | ✔️ | ||
23 | Hard | Merge k Sorted Lists | Java | Divide and Conquer, Heap | ✔️ | ||
★ | 25 | Hard | Reverse Nodes in k-Group | Java | Linked List | ✔️ | |
26 | Easy | Remove Duplicates from Sorted Array | Java | Two Pointers | ✔️ | ||
★ | 28 | Easy | Implement strStr() | Java | String, Hash | ✔️ | ✔️ |
★ | 33 | Medium | Search in Rotated Sorted Array | Java | Binary Search | ✔️ | ✔️ |
34 | Medium | Search for a Range | Java | Binary Search, Divide and Conquer | ✔️ | ||
35 | Easy | Search Insert Position | Java | Binary Search | ✔️ | ✔️ | |
39 | Medium | Combination Sum | Java | DFS | ✔️ | ||
★ | 40 | Medium | Combination Sum II | Java | DFS | ✔️ | |
★ | 45 | Hard | Jump Game II | Java | Dynamic Programming, Greedy | ✔️ | |
46 | Medium | Permutations | Java | BFS, DFS | ✔️ | ||
47 | Medium | Permutations II | Java | DFS | ✔️ | ||
★ | 51 | Hard | N-Queens | Java | DFS | ✔️ | |
★ | 53 | Easy | Maximum Subarray | Java | Array | ✔️ | |
55 | Medium | Jump Game | Java | Dynamic Programming, Greedy | ✔️ | ||
62 | Medium | Unique Paths | Java | Dynamic Programming | ✔️ | ||
63 | Medium | Unique Paths II | Java | Dynamic Programming | ✔️ | ||
64 | Medium | Minimum Path Sum | Java | Dynamic Programming | ✔️ | ||
69 | Easy | Sqrt(x) | Java | Binary Search | ✔️ | ✔️ | |
70 | Easy | Climbing Stairs | Java | Dynamic Programming | ✔️ | ||
74 | Medium | Search a 2D Matrix | Java | Binary Search | ✔️ | ✔️ | |
★ | 75 | Medium | Sort Colors | Java | Array, Two Pointers | ✔️ | |
★ | 78 | Medium | Subsets | Java | Bit Manipulation, DFS | ✔️ | ✔️ |
90 | Medium | Subsets II | Java | DFS | ✔️ | ✔️ | |
★ | 81 | Medium | Search in Rotated Sorted Array II | Java | Binary Search | ✔️ | ✔️ |
★ | 84 | Hard | Largest Rectangle in Histogram | Java | Array, Stack | ✔️ | |
88 | Easy | Merge Sorted Array | Java | Array | ✔️ | ✔️ | |
★ | 94 | Medium | Binary Tree Inorder Traversal | Java | Binary Tree, Divide and Conquer | ✔️ | |
98 | Medium | Validate Binary Search Tree | Java | Binary Tree, Divide and Conquer | ✔️ | ✔️ | |
102 | Medium | Binary Tree Level Order Traversal | Java | Binary Tree, BFS, DFS | ✔️ | ||
104 | Easy | Maximum Depth of Binary Tree | Java | Binary Tree, Divide and Conquer | ✔️ | ||
110 | Easy | Balanced Binary Tree | Java | Binary Tree, Divide and Conquer | ✔️ | ✔️ | |
★ | 114 | Medium | Flatten Binary Tree to Linked List | Java | Binary Tree, Divide and Conquer | ✔️ | |
116 | Medium | Populating Next Right Pointers in Each Node | Java | Binary Tree, Divide and Conquer | ✔️ | ||
★ | 117 | Medium | Populating Next Right Pointers in Each Node II | Java | Binary Tree, Divide and Conquer | ✔️ | |
120 | Medium | Triangle | Java | Dynamic Programming | ✔️ | ||
121 | Easy | Best Time to Buy and Sell Stock | Java | Array | ✔️ | ||
125 | Easy | Valid Palindrome | Java | Two Pointers | ✔️ | ||
★ | 126 | Hard | Word Ladder II | Java | BFS, DFS | ✔️ | |
127 | Medium | Word Ladder | Java | BFS | ✔️ | ||
128 | Hard | Longest Consecutive Sequence | Java | Hash | ✔️ | ||
★ | 131 | Medium | Palindrome Partitioning | Java | DFS | ✔️ | |
133 | Medium | Clone Graph | Java | BFS, DFS | ✔️ | ||
136 | Easy | Single Number | Java | Bit Manipulation | ✔️ | ||
★ | 137 | Medium | Single Number II | Java | Bit Manipulation | ✔️ | |
★ | 138 | Medium | Copy List with Random Pointer | Java | Linked List | ✔️ | |
141 | Easy | Linked List Cycle | Java | Linked List, Two Pointers | ✔️ | ||
142 | Medium | Linked List Cycle II | Java | Linked List, Two Pointers | ✔️ | ||
144 | Medium | Binary Tree Preorder Traversal | Java | Binary Tree, Divide and Conquer | ✔️ | ||
★ | 145 | Hard | Binary Tree Postorder Traversal | Java | Binary Tree, Divide and Conquer | ✔️ | |
★ | 146 | Hard | LRU Cache | Java | Hash, Linked List | ✔️ | |
★ | 148 | Medium | Sort List | Java | Divide and Conquer, Linked List | ✔️ | |
153 | Medium | Find Minimum in Rotated Sorted Array | Java | Binary Search | ✔️ | ✔️ | |
154 | Hard | Find Minimum in Rotated Sorted Array II | Java | Binary Search | ✔️ | ✔️ | |
155 | Easy | Min Stack | Java | Stack | ✔️ | ||
160 | Easy | Intersection of Two Linked Lists | Java | Linked List | ✔️ | ||
162 | Medium | Find Peak Element | Java | Binary Search | ✔️ | ✔️ | |
167 | Easy | Two Sum II - Input array is sorted | Java | Two Pointers | ✔️ | ||
168 | Easy | Excel Sheet Column Title | Java | Math | ✔️ | ||
☆ | 170 | Easy | Two Sum III - Data structure design | Java | Hash | ✔️ | |
171 | Easy | Excel Sheet Column Number | Java | Math | ✔️ | ||
172 | Easy | Factorial Trailing Zeroes | Java | Math | ✔️ | ||
★ | 189 | Easy | Rotate Array | Java | Array | ✔️ | |
200 | Medium | Number of Islands | Java | BFS, DFS, Union-Find | ✔️ | ||
204 | Easy | Count Primes | Java | Math | ✔️ | ||
206 | Easy | Reverse Linked List | Java | Linked List | ✔️ | ||
207 | Medium | Course Schedule | Java | BFS | ✔️ | ||
209 | Medium | Minimum Size Subarray Sum | Java | Array | ✔️ | ||
210 | Medium | Course Schedule II | Java | BFS | ✔️ | ||
215 | Medium | Kth Largest Element in an Array | Java | Array, Divide and Conquer | ✔️ | ||
221 | Medium | Maximal Square | Java | Dynamic Programming | ✔️ | ||
235 | Easy | Lowest Common Ancestor of a Binary Search Tree | Java | Binary Tree | ✔️ | ||
★ | 236 | Medium | Lowest Common Ancestor of a Binary Tree | Java | Binary Tree, Divide and Conquer | ✔️ | |
★ | 239 | Hard | Sliding Window Maximum | Java | Array, Deque | ✔️ | |
242 | Easy | Valid Anagram | Java | Hash | ✔️ | ||
257 | Easy | Binary Tree Paths | Java | Binary Tree, Divide and Conquer | ✔️ | ✔️ | |
★ | 260 | Medium | Single Number III | Java | Bit Manipulation | ✔️ | |
★☆ | 261 | Medium | Graph Valid Tree | Java | BFS, DFS, Union-Find | ✔️ | |
263 | Easy | Ugly Number | Java | Math | ✔️ | ||
264 | Medium | Ugly Number II | Java | Heap, Math | ✔️ | ||
278 | Easy | First Bad Version | Java | Binary Search | ✔️ | ✔️ | |
★ | 279 | Medium | Perfect Squares | Java | Dynamic Programming | ✔️ | |
283 | Easy | Move Zeroes | Java | Two Pointers | ✔️ | ||
★ | 297 | Hard | Serialize and Deserialize Binary Tree | Java | Binary Tree, BFS, DFS | ✔️ | |
★ | 300 | Medium | Longest Increasing Subsequence | Java | Dynamic Programming | ✔️ | |
☆ | 317 | Hard | Shortest Distance from All Buildings | Java | BFS | ✔️ | |
344 | Easy | Reverse String | Java | String | ✔️ | ||
349 | Easy | Intersection of Two Arrays | Java | Array, Binary Search, Two Pointers | ✔️ | ||
350 | Easy | Intersection of Two Arrays II | Java | Two Pointers, Hash | ✔️ | ||
★ | 354 | Hard | Russian Doll Envelopes | Java | Dynamic Programming | ✔️ | |
368 | Medium | Largest Divisible Subset | Java | Dynamic Programming | ✔️ | ||
387 | Easy | First Unique Character in a String | Java | Hash | ✔️ | ||
409 | Easy | Longest Palindrome | Java | Hash | ✔️ | ||
★ | 438 | Easy | Find All Anagrams in a String | Java | Hash | ✔️ | |
★☆ | 444 | Medium | Sequence Reconstruction | Java | BFS | ✔️ | |
560 | Medium | Subarray Sum Equals K | Java | Array, Hash | ✔️ | ||
611 | Medium | Valid Triangle Number | Java | Two Pointers | ✔️ | ||
658 | Medium | Find K Closest Elements | Java | Binary Search, Heap | ✔️ | ||
675 | Hard | Cut Off Trees for Golf Event | Java | BFS, Heap | ✔️ | ||
★ | 678 | Medium | Valid Parenthesis String | Java | Dynamic Programming, Greedy | ✔️ | |
682 | Easy | Baseball Game | Java | Stack | ✔️ | ||
★ | 712 | Medium | Minimum ASCII Delete Sum for Two Strings | Java | Dynamic Programming | ✔️ | |
724 | Easy | Find Pivot Index | Java | Array | ✔️ | ||
747 | Easy | Largest Number Greater Than Twice of Others | Java | Array | ✔️ | ||
752 | Medium | Open the Lock | Java | BFS | ✔️ | ||
763 | Medium | Partition Labels | Java | Greedy | ✔️ | ||
766 | Easy | Toeplitz Matrix | Java | Array | ✔️ | ||
★☆ | 776 | Medium | Split BST | Java | Binary Tree | ✔️ | |
778 | Hard | Swim in Rising Water | Java | Heap | ✔️ | ||
781 | Medium | Rabbits in Forest | Java | Math | ✔️ | ||
783 | Easy | Minimum Distance Between BST Nodes | Java | Binary Tree | ✔️ | ||
784 | Easy | Letter Case Permutation | Java | DFS | ✔️ | ||
785 | Medium | Is Graph Bipartite? | Java | BFS, DFS | ✔️ | ||
786 | Hard | K-th Smallest Prime Fraction | Java | Heap | ✔️ | ||
787 | Medium | Cheapest Flights Within K Stops | Java | BFS | ✔️ | ||
788 | Easy | Rotated Digits | Java | Math | ✔️ | ||
789 | Medium | Escape The Ghosts | Java | Array | ✔️ | ||
793 | Hard | Preimage Size of Factorial Zeroes Function | Java | Binary Search, Math | ✔️ | ||
797 | Medium | All Paths From Source to Target | Java | DFS | ✔️ | ||
799 | Medium | Champagne Tower | Java | Dynamic Programming | ✔️ | ||
804 | Easy | Unique Morse Code Words | Java | Hash | ✔️ | ||
806 | Easy | Number of Lines To Write String | Java | ✔️ | |||
807 | Medium | Max Increase to Keep City Skyline | Java | Array | ✔️ | ||
836 | Easy | Rectangle Overlap | Java | Math | ✔️ | ||
839 | Hard | Similar String Groups | Java | BFS | ✔️ |