Hi π, I'm Chee Hwa and welcome to LeetCode Solutions in Java.
As I'm new to LeetCode and programming in general, I'm practicing everyday and hope to share my solutions and learnings with you.
- Exclusively on Java
- Beginner problems
- Daily Challenge if within my ability
Date | Problem | Difficulty | Solution | Topics |
---|---|---|---|---|
May 17th | 1337. The K Weakest Rows in a Matrix | Binary Search | Array, Binary Search, Matrix | |
May 16th | 1337. The K Weakest Rows in a Matrix | Linear Search | Array, Matrix | |
May 15th | 1239. Maximum Length of a Concatenated String with Unique Characters | Bit Manipulation | Array, Bit Manipulation, String | |
May 14th | 1239. Maximum Length of a Concatenated String with Unique Characters | Backtracking | Array, Backtracking, String | |
May 13th | 929. Unique Email Addresses | Hash Table | Array, Hash Table, String |
The problem sets and solutions are grouped into Topics as stated in LeetCode.
- Array
- Backtracking
- Binary Search
- Binary Search Tree
- Binary Tree
- Bit Manipulation
- Brainteaser
- Breadth-First Search
- Bucket Sort
- Counting
- Data Stream
- Depth-First Search
- Design
- Dynamic Programming
- Enumeration
- Geometry
- Graph
- Greedy
- Hash Table
- Heap (Priority Queue)
- Interactive
- Linked List
- Math
- Matrix
- Memoization
- Monotonic Stack
- Number Theory
- Ordered Set
- Prefix Sum
- Queue
- Recursion
- Simulation
- Sliding Window
- Sorting
- Stack
- String
- Tree
- Two Pointers
- Union Find
Array
Backtracking
Binary Search
Binary Search Tree
# | Problem | Solution | Difficulty | Topics | Note |
---|---|---|---|---|---|
98 | Validate Binary Search Tree | Java with Depth-First Search (Iterative) or Depth-First Search (Recursive) | Binary Search Tree, Binary Tree, Depth-First Search, Tree | ||
653 | Two Sum IV - Input is a BST | Java with Breadth-First Search (with Hash Table), Breadth-First Search (without Hash Table), Depth-First Search (Iterative), Depth-First Search (Recursive), Two Pointers (with Iterative Inorder Traversal) or Two Pointers (with Recursive Inorder Traversal) | Binary Search Tree, Binary Tree, Breadth-First Search, Depth-First Search, Hash Table, Tree, Two Pointers | ||
783 | Minimum Distance Between BST Nodes | Java with Breadth-First Search, Depth-First Search (Iterative) or Depth-First Search (Recursive) | Binary Search Tree, Binary Tree, Breadth-First Search, Depth-First Search, Tree |
Binary Tree
Bit Manipulation
Brainteaser
# | Problem | Solution | Difficulty | Topics | Note |
---|---|---|---|---|---|
1033 | Moving Stones Until Consecutive | Java | Brainteaser, Math |
Breadth-First Search
Bucket Sort
# | Problem | Solution | Difficulty | Topics | Note |
---|---|---|---|---|---|
220 | Contains Duplicate III | Java with Sliding Window & Bucket Sort | Array, Bucket Sort, Ordered Set, Sliding Window, Sorting | Solution Using Sliding Window & Ordered Set or Sorting |
Counting
# | Problem | Solution | Difficulty | Topics | Note |
---|---|---|---|---|---|
383 | Ransom Note | Java | Counting, Hash Table, String | Solution Using Hash Table | |
1497 | Check If Array Pairs Are Divisible by k | Java | Array, Counting, Hash Table | Solution Using Hash Table | |
2131 | Longest Palindrome by Concatenating Two Letter Words | Java | Array, Counting, Greedy, Hash Table, String | Solution Using Hash Table | |
2244 | Minimum Rounds to Complete All Tasks | Java | Array, Counting, Greedy, Hash Table | ||
2351 | First Letter to Appear Twice | Java | Counting, Hash Table, String | Solution Using Hash Table | |
2453 | Destroy Sequential Targets | Java | Array, Counting, Hash Table |
Data Stream
# | Problem | Solution | Difficulty | Topics | Note |
---|---|---|---|---|---|
295 | Find Median from Data Stream | Java | Data Stream, Design, Heap (Priority Queue), Sorting, Two Pointers |
Depth-First Search
Design
# | Problem | Solution | Difficulty | Topics | Note |
---|---|---|---|---|---|
225 | Implement Stack using Queues | Java | Design, Queue, Stack | ||
232 | Implement Queue using Stacks | Java | Design, Queue, Stack | ||
295 | Find Median from Data Stream | Java | Data Stream, Design, Heap (Priority Queue), Sorting, Two Pointers | ||
707 | Design Linked List | Java with Singly Linked List or Doubly Linked List | Design, Linked List | ||
1865 | Finding Pairs With a Certain Sum | Java | Array, Design, Hash Table |
Dynamic Programming
# | Problem | Solution | Difficulty | Topics | Note |
---|---|---|---|---|---|
45 | Jump Game II | Java with Dynamic Programming - Memoization or Tabulation | Array, Dynamic Programming, Greedy | Solution Using Greedy | |
55 | Jump Game | Java | Array, Dynamic Programming, Greedy | Solution Using Greedy | |
70 | Climbing Stairs | Java with Dynamic Programming - Tabulation or Memoization | Dynamic Programming, Math, Memoization | ||
152 | Maximum Product Subarray | Java | Array, Dynamic Programming | Solution Using Array | |
264 | Ugly Number II | Java | Dynamic Programming, Hash Table, Heap (Priority Queue), Math | Solution Using Heap (Priority Queue) | |
368 | Largest Divisible Subset | Java | Array, Dynamic Programming, Math, Sorting | ||
509 | Fibonacci Number | Java with Dynamic Programming - Tabulation or Memoization | Dynamic Programming, Math, Memoization, Recursion | ||
746 | Min Cost Climbing Stairs | Java with Dynamic Programming - Tabulation or Memoization | Array, Dynamic Programming | ||
1578 | Minimum Time to Make Rope Colorful | Java | Array, Dynamic Programming, Greedy, String | Solution Using Greedy |
Enumeration
# | Problem | Solution | Difficulty | Topics | Note |
---|---|---|---|---|---|
1995 | Count Special Quadruplets | Java | Array, Enumeration | Solution Using Hash Table | |
2240 | Number of Ways to Buy Pens and Pencils | Java | Enumeration, Math | ||
2437 | Number of Valid Clock Times | Java | Enumeration, String |
Geometry
# | Problem | Solution | Difficulty | Topics | Note |
---|---|---|---|---|---|
223 | Rectangle Area | Java | Geometry, Math | ||
593 | Valid Square | Java | Geometry, Math | ||
812 | Largest Triangle Area | Java | Array, Geometry, Math | ||
836 | Rectangle Overlap | Java | Geometry, Math | ||
1037 | Valid Boomerang | Java | Array, Geometry, Math |
Graph
# | Problem | Solution | Difficulty | Topics | Note |
---|---|---|---|---|---|
797 | All Paths From Source to Target | Java with Breadth-First Search, Depth-First Search (Backtracking), Depth-First Search (Iterative) or Depth-First Search (Recursive) | Backtracking, Breadth-First Search, Depth-First Search, Graph | ||
1971 | Find if Path Exists in Graph | Java with Breadth-First Search, Depth-First Search (Iterative), Depth-First Search (Recursive) or Union Find | Breadth-First Search, Depth-First Search, Graph, Union Find | ||
2359 | Find Closest Node to Given Two Nodes | Java | Depth-First Search, Graph |
Greedy
Hash Table
Heap (Priority Queue)
# | Problem | Solution | Difficulty | Topics | Note |
---|---|---|---|---|---|
264 | Ugly Number II | Java | Dynamic Programming, Hash Table, Heap (Priority Queue), Math | Solution Using Dynamic Programming | |
295 | Find Median from Data Stream | Java | Data Stream, Design, Heap (Priority Queue), Sorting, Two Pointers | ||
1337 | The K Weakest Rows in a Matrix | Java with Heap (Priority Queue) & Binary Search | Array, Binary Search, Heap (Priority Queue), Matrix, Sorting | Solution Using Linear Search, Binary Search, Sorting & Binary Search | |
1834 | Single-Threaded CPU | Java | Array, Heap (Priority Queue), Sorting | ||
1962 | Remove Stones to Minimize the Total | Java | Array, Heap (Priority Queue) |
Interactive
# | Problem | Solution | Difficulty | Topics | Note |
---|---|---|---|---|---|
374 | Guess Number Higher or Lower | Java | Binary Search, Interactive |
Linked List
# | Problem | Solution | Difficulty | Topics | Note |
---|---|---|---|---|---|
19 | Remove Nth Node From End of List | Java with One Pass or Two Passes | Linked List, Two Pointers | ||
114 | Flatten Binary Tree to Linked List | Java with Depth-First Search (Iterative) or Depth-First Search (Recursive) | Binary Tree, Depth-First Search, Linked List, Stack, Tree | ||
707 | Design Linked List | Java with Singly Linked List or Doubly Linked List | Design, Linked List | ||
876 | Middle of the Linked List | Java | Linked List, Two Pointers | ||
1019 | Next Greater Node In Linked List | Java | Array, Linked List, Monotonic Stack, Stack | ||
2095 | Delete the Middle Node of a Linked List | Java | Linked List, Two Pointers |
Math
Matrix
Memoization
# | Problem | Solution | Difficulty | Topics | Note |
---|---|---|---|---|---|
70 | Climbing Stairs | Java with Dynamic Programming - Tabulation or Memoization | Dynamic Programming, Math, Memoization | ||
509 | Fibonacci Number | Java with Dynamic Programming - Tabulation or Memoization | Dynamic Programming, Math, Memoization, Recursion |
Monotonic Stack
# | Problem | Solution | Difficulty | Topics | Note |
---|---|---|---|---|---|
496 | Next Greater Element I | Java | Array, Hash Table, Monotonic Stack, Stack | ||
503 | Next Greater Element II | Java | Array, Monotonic Stack, Stack | ||
1019 | Next Greater Node In Linked List | Java | Array, Linked List, Monotonic Stack, Stack | ||
2454 | Next Greater Element IV | Java | Array, Monotonic Stack, Stack |
Number Theory
# | Problem | Solution | Difficulty | Topics | Note |
---|---|---|---|---|---|
1979 | Find Greatest Common Divisor of Array | Java | Array, Math, Number Theory | ||
2413 | Smallest Even Multiple | Java | Math, Number Theory |
Ordered Set
# | Problem | Solution | Difficulty | Topics | Note |
---|---|---|---|---|---|
220 | Contains Duplicate III | Java with Sliding Window & Ordered Set | Array, Bucket Sort, Ordered Set, Sliding Window, Sorting | Solution Using Sliding Window & Bucket Sort or Sorting |
Prefix Sum
# | Problem | Solution | Difficulty | Topics | Note |
---|---|---|---|---|---|
238 | Product of Array Except Self | Java | Array, Prefix Sum | ||
523 | Continuous Subarray Sum | Java | Array, Hash Table, Math, Prefix Sum | ||
560 | Subarray Sum Equals K | Java | Array, Hash Table, Prefix Sum | ||
974 | Subarray Sums Divisible by K | Java with Counting or Hash Table | Array, Hash Table, Prefix Sum | ||
1480 | Running Sum of 1D Array | Java | Array, Prefix Sum | ||
2389 | Longest Subsequence With Limited Sum | Java | Array, Binary Search, Greedy, Prefix Sum, Sorting | ||
2438 | Range Product Queries of Powers | Java | Array, Bit Manipulation, Prefix Sum |
Queue
# | Problem | Solution | Difficulty | Topics | Note |
---|---|---|---|---|---|
225 | Implement Stack using Queues | Java | Design, Queue, Stack | ||
232 | Implement Queue using Stacks | Java | Design, Queue, Stack |
Recursion
# | Problem | Solution | Difficulty | Topics | Note |
---|---|---|---|---|---|
509 | Fibonacci Number | Java with Dynamic Programming - Tabulation or Memoization | Dynamic Programming, Math, Memoization, Recursion |
Simulation
# | Problem | Solution | Difficulty | Topics | Note |
---|---|---|---|---|---|
412 | Fizz Buzz | Java | Math, Simulation, String | ||
985 | Sum of Even Numbers After Queries | Java | Array, Simulation | ||
1103 | Distribute Candies to People | Java | Math, Simulation | ||
1680 | Concatenation of Consecutive Binary Numbers | Java with Bit Manipulation or Math | Bit Manipulation, Math, Simulation | ||
2169 | Count Operations to Obtain Zero | Java | Math, Simulation |
Sliding Window
# | Problem | Solution | Difficulty | Topics | Note |
---|---|---|---|---|---|
219 | Contains Duplicate II | Java | Array, Hash Table, Sliding Window | Solution Using Hash Table | |
220 | Contains Duplicate III | Java with Sliding Window & Bucket Sort or Sliding Window & Ordered Set | Array, Bucket Sort, Ordered Set, Sliding Window, Sorting | Solution Using Sorting | |
438 | Find All Anagrams in a String | Java | Hash Table, Sliding Window, String | ||
567 | Permutation in String | Java | Hash Table, Sliding Window, String, Two Pointers | ||
713 | Subarray Product Less Than K | Java | Array, Sliding Window | ||
904 | Fruit Into Baskets | Java | Array, Hash Table, Sliding Window |
Sorting
Stack
String
Tree
Two Pointers
Union Find
# | Problem | Solution | Difficulty | Topics | Note |
---|---|---|---|---|---|
130 | Surrounded Regions | Java | Array, Breadth-First Search, Depth-First Search, Matrix, Union Find | Solution Using Breadth-First Search or Depth-First Search | |
200 | Number of Islands | Java | Array, Breadth-First Search, Depth-First Search, Matrix, Union Find | Solution Using Breadth-First Search or Depth-First Search | |
1061 | Lexicographically Smallest Equivalent String | Java | String, Union Find | ||
1971 | Find if Path Exists in Graph | Java | Breadth-First Search, Depth-First Search, Graph, Union Find | Solution Using Breadth-First Search, Depth-First Search (Iterative) or Depth-First Search (Recursive) |