Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
64 changes: 63 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1 +1,63 @@
LeetCode solutions using Java
# LeetCode Java Solutions

A collection of LeetCode problem solutions implemented in Java with detailed complexity analysis and test coverage.

## Migration Status

🔄 **Currently migrating from old structure to new directory structure**

This project is being reorganized. The following problems have been migrated to the new structure:

- ✅ Migrated problems in `src/main/java/com/leetcode/` directory (51 problems listed below)
- ⏳ Legacy problems still being migrated

## Project Structure

```
leetcode-java/
├── src/
│ ├── main/
│ │ └── java/
│ │ └── com/
│ │ └── leetcode/
│ │ ├── easy/ # Easy difficulty problems
│ │ ├── medium/ # Medium difficulty problems
│ │ ├── hard/ # Hard difficulty problems
│ │ └── datastructure/ # Data structure implementations
│ └── test/
│ └── java/
│ └── com/
│ └── leetcode/
│ ├── easy/ # Test cases for easy problems
│ ├── medium/ # Test cases for medium problems
│ └── hard/ # Test cases for hard problems
├── docs/ # Detailed problem lists by difficulty
├── pom.xml # Maven configuration
└── README.md # This file
```

Each problem follows this structure:
```
{difficulty}/{ProblemName}{Number}.java # Solution implementation
{difficulty}/{ProblemName}{Number}Test.java # Test cases
```

## Solutions

📊 **Statistics**: 51 problems solved (migrated to new structure)

| Difficulty | Count |
|------------|-------|
| Easy | 35 |
| Medium | 15 |
| Hard | 1 |

### Browse by Difficulty

- 📗 [Easy Problems](docs/EASY.md)
- 📘 [Medium Problems](docs/MEDIUM.md)
- 📕 [Hard Problems](docs/HARD.md)

## Author

[Peter Chen](https://github.com/kobukuro)
47 changes: 47 additions & 0 deletions docs/EASY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# Easy Problems

Total: 35 problems solved

## Solutions

| # | Title | Solution | Tests |
|---|-------|----------|-------|
| 1 | [Two Sum](https://leetcode.com/problems/two-sum/) | [TwoSum1.java](../src/main/java/com/leetcode/easy/TwoSum1.java) | [TwoSum1Test.java](../src/test/java/com/leetcode/easy/TwoSum1Test.java) |
| 20 | [Valid Parentheses](https://leetcode.com/problems/valid-parentheses/) | [ValidParentheses20.java](../src/main/java/com/leetcode/easy/ValidParentheses20.java) | [ValidParentheses20Test.java](../src/test/java/com/leetcode/easy/ValidParentheses20Test.java) |
| 70 | [Climbing Stairs](https://leetcode.com/problems/climbing-stairs/) | [ClimbingStairs70.java](../src/main/java/com/leetcode/easy/ClimbingStairs70.java) | [ClimbingStairs70Test.java](../src/test/java/com/leetcode/easy/ClimbingStairs70Test.java) |
| 88 | [Merge Sorted Array](https://leetcode.com/problems/merge-sorted-array/) | [MergeSortedArray88.java](../src/main/java/com/leetcode/easy/MergeSortedArray88.java) | [MergeSortedArray88Test.java](../src/test/java/com/leetcode/easy/MergeSortedArray88Test.java) |
| 100 | [Same Tree](https://leetcode.com/problems/same-tree/) | [SameTree100.java](../src/main/java/com/leetcode/easy/SameTree100.java) | [SameTree100Test.java](../src/test/java/com/leetcode/easy/SameTree100Test.java) |
| 141 | [Linked List Cycle](https://leetcode.com/problems/linked-list-cycle/) | [LinkedListCycle141.java](../src/main/java/com/leetcode/easy/LinkedListCycle141.java) | [LinkedListCycle141Test.java](../src/test/java/com/leetcode/easy/LinkedListCycle141Test.java) |
| 191 | [Number of 1 Bits](https://leetcode.com/problems/number-of-1-bits/) | [NumberOf1Bits191.java](../src/main/java/com/leetcode/easy/NumberOf1Bits191.java) | [NumberOf1Bits191Test.java](../src/test/java/com/leetcode/easy/NumberOf1Bits191Test.java) |
| 217 | [Contains Duplicate](https://leetcode.com/problems/contains-duplicate/) | [ContainsDuplicate217.java](../src/main/java/com/leetcode/easy/ContainsDuplicate217.java) | [ContainsDuplicate217Test.java](../src/test/java/com/leetcode/easy/ContainsDuplicate217Test.java) |
| 226 | [Invert Binary Tree](https://leetcode.com/problems/invert-binary-tree/) | [InvertBinaryTree226.java](../src/main/java/com/leetcode/easy/InvertBinaryTree226.java) | [InvertBinaryTree226Test.java](../src/test/java/com/leetcode/easy/InvertBinaryTree226Test.java) |
| 235 | [Lowest Common Ancestor of a Binary Search Tree](https://leetcode.com/problems/lowest-common-ancestor-of-a-binary-search-tree/) | [LowestCommonAncestorOfABinarySearchTree235.java](../src/main/java/com/leetcode/easy/LowestCommonAncestorOfABinarySearchTree235.java) | [LowestCommonAncestorOfABinarySearchTree235Test.java](../src/test/java/com/leetcode/easy/LowestCommonAncestorOfABinarySearchTree235Test.java) |
| 344 | [Reverse String](https://leetcode.com/problems/reverse-string/) | [ReverseString344.java](../src/main/java/com/leetcode/easy/ReverseString344.java) | [ReverseString344Test.java](../src/test/java/com/leetcode/easy/ReverseString344Test.java) |
| 383 | [Ransom Note](https://leetcode.com/problems/ransom-note/) | [RansomNote383.java](../src/main/java/com/leetcode/easy/RansomNote383.java) | [RansomNote383Test.java](../src/test/java/com/leetcode/easy/RansomNote383Test.java) |
| 412 | [Fizz Buzz](https://leetcode.com/problems/fizz-buzz/) | [FizzBuzz412.java](../src/main/java/com/leetcode/easy/FizzBuzz412.java) | [FizzBuzz412Test.java](../src/test/java/com/leetcode/easy/FizzBuzz412Test.java) |
| 509 | [Fibonacci Number](https://leetcode.com/problems/fibonacci-number/) | [FibonacciNumber509.java](../src/main/java/com/leetcode/easy/FibonacciNumber509.java) | [FibonacciNumber509Test.java](../src/test/java/com/leetcode/easy/FibonacciNumber509Test.java) |
| 572 | [Subtree of Another Tree](https://leetcode.com/problems/subtree-of-another-tree/) | [SubtreeOfAnotherTree572.java](../src/main/java/com/leetcode/easy/SubtreeOfAnotherTree572.java) | [SubtreeOfAnotherTree572Test.java](../src/test/java/com/leetcode/easy/SubtreeOfAnotherTree572Test.java) |
| 700 | [Search in a Binary Search Tree](https://leetcode.com/problems/search-in-a-binary-search-tree/) | [SearchInABinarySearchTree700.java](../src/main/java/com/leetcode/easy/SearchInABinarySearchTree700.java) | [SearchInABinarySearchTree700Test.java](../src/test/java/com/leetcode/easy/SearchInABinarySearchTree700Test.java) |
| 704 | [Binary Search](https://leetcode.com/problems/binary-search/) | [BinarySearch704.java](../src/main/java/com/leetcode/easy/BinarySearch704.java) | [BinarySearch704Test.java](../src/test/java/com/leetcode/easy/BinarySearch704Test.java) |
| 771 | [Jewels and Stones](https://leetcode.com/problems/jewels-and-stones/) | [JewelsAndStones771.java](../src/main/java/com/leetcode/easy/JewelsAndStones771.java) | [JewelsAndStones771Test.java](../src/test/java/com/leetcode/easy/JewelsAndStones771Test.java) |
| 929 | [Unique Email Addresses](https://leetcode.com/problems/unique-email-addresses/) | [UniqueEmailAddresses929.java](../src/main/java/com/leetcode/easy/UniqueEmailAddresses929.java) | [UniqueEmailAddresses929Test.java](../src/test/java/com/leetcode/easy/UniqueEmailAddresses929Test.java) |
| 977 | [Squares of a Sorted Array](https://leetcode.com/problems/squares-of-a-sorted-array/) | [SquaresOfASortedArray977.java](../src/main/java/com/leetcode/easy/SquaresOfASortedArray977.java) | [SquaresOfASortedArray977Test.java](../src/test/java/com/leetcode/easy/SquaresOfASortedArray977Test.java) |
| 112 | [Path Sum](https://leetcode.com/problems/path-sum/) | [PathSum112.java](../src/main/java/com/leetcode/easy/PathSum112.java) | [PathSum112Test.java](../src/test/java/com/leetcode/easy/PathSum112Test.java) |
| 1365 | [How Many Numbers Are Smaller Than the Current Number](https://leetcode.com/problems/how-many-numbers-are-smaller-than-the-current-number/) | [HowManyNumbersAreSmallerThanTheCurrentNumber1365.java](../src/main/java/com/leetcode/easy/HowManyNumbersAreSmallerThanTheCurrentNumber1365.java) | [HowManyNumbersAreSmallerThanTheCurrentNumber1365Test.java](../src/test/java/com/leetcode/easy/HowManyNumbersAreSmallerThanTheCurrentNumber1365Test.java) |
| 1436 | [Destination City](https://leetcode.com/problems/destination-city/) | [DestinationCity1436.java](../src/main/java/com/leetcode/easy/DestinationCity1436.java) | [DestinationCity1436Test.java](../src/test/java/com/leetcode/easy/DestinationCity1436Test.java) |
| 1603 | [Design Parking System](https://leetcode.com/problems/design-parking-system/) | [DesignParkingSystem1603.java](../src/main/java/com/leetcode/easy/DesignParkingSystem1603.java) | [DesignParkingSystem1603Test.java](../src/test/java/com/leetcode/easy/DesignParkingSystem1603Test.java) |
| 1662 | [Check If Two String Arrays are Equivalent](https://leetcode.com/problems/check-if-two-string-arrays-are-equivalent/) | [CheckIfTwoStringArraysAreEquivalent1662.java](../src/main/java/com/leetcode/easy/CheckIfTwoStringArraysAreEquivalent1662.java) | [CheckIfTwoStringArraysAreEquivalent1662Test.java](../src/test/java/com/leetcode/easy/CheckIfTwoStringArraysAreEquivalent1662Test.java) |
| 1672 | [Richest Customer Wealth](https://leetcode.com/problems/richest-customer-wealth/) | [RichestCustomerWealth1672.java](../src/main/java/com/leetcode/easy/RichestCustomerWealth1672.java) | [RichestCustomerWealth1672Test.java](../src/test/java/com/leetcode/easy/RichestCustomerWealth1672Test.java) |
| 1773 | [Count Items Matching a Rule](https://leetcode.com/problems/count-items-matching-a-rule/) | [CountItemsMatchingARule1773.java](../src/main/java/com/leetcode/easy/CountItemsMatchingARule1773.java) | [CountItemsMatchingARule1773Test.java](../src/test/java/com/leetcode/easy/CountItemsMatchingARule1773Test.java) |
| 1816 | [Truncate Sentence](https://leetcode.com/problems/truncate-sentence/) | [TruncateSentence1816.java](../src/main/java/com/leetcode/easy/TruncateSentence1816.java) | [TruncateSentence1816Test.java](../src/test/java/com/leetcode/easy/TruncateSentence1816Test.java) |
| 2011 | [Final Value of Variable After Performing Operations](https://leetcode.com/problems/final-value-of-variable-after-performing-operations/) | [FinalValueOfVariableAfterPerformingOperations2011.java](../src/main/java/com/leetcode/easy/FinalValueOfVariableAfterPerformingOperations2011.java) | [FinalValueOfVariableAfterPerformingOperations2011Test.java](../src/test/java/com/leetcode/easy/FinalValueOfVariableAfterPerformingOperations2011Test.java) |
| 2032 | [Two Out of Three](https://leetcode.com/problems/two-out-of-three/) | [TwoOutOfThree2032.java](../src/main/java/com/leetcode/easy/TwoOutOfThree2032.java) | [TwoOutOfThree2032Test.java](../src/test/java/com/leetcode/easy/TwoOutOfThree2032Test.java) |
| 2124 | [Check if All A's Appears Before All B's](https://leetcode.com/problems/check-if-all-as-appears-before-all-bs/) | [CheckIfAllAsAppearsBeforeAllBs2124.java](../src/main/java/com/leetcode/easy/CheckIfAllAsAppearsBeforeAllBs2124.java) | [CheckIfAllAsAppearsBeforeAllBs2124Test.java](../src/test/java/com/leetcode/easy/CheckIfAllAsAppearsBeforeAllBs2124Test.java) |
| 2315 | [Count Asterisks](https://leetcode.com/problems/count-asterisks/) | [CountAsterisks2315.java](../src/main/java/com/leetcode/easy/CountAsterisks2315.java) | [CountAsterisks2315Test.java](../src/test/java/com/leetcode/easy/CountAsterisks2315Test.java) |
| 2469 | [Convert the Temperature](https://leetcode.com/problems/convert-the-temperature/) | [ConvertTheTemperature2469.java](../src/main/java/com/leetcode/easy/ConvertTheTemperature2469.java) | [ConvertTheTemperature2469Test.java](../src/test/java/com/leetcode/easy/ConvertTheTemperature2469Test.java) |
| 2798 | [Number of Employees Who Met the Target](https://leetcode.com/problems/number-of-employees-who-met-the-target/) | [NumberOfEmployeesWhoMetTheTarget2798.java](../src/main/java/com/leetcode/easy/NumberOfEmployeesWhoMetTheTarget2798.java) | [NumberOfEmployeesWhoMetTheTarget2798Test.java](../src/test/java/com/leetcode/easy/NumberOfEmployeesWhoMetTheTarget2798Test.java) |
| 3289 | [The Two Sneaky Numbers of Digitville](https://leetcode.com/problems/the-two-sneaky-numbers-of-digitville/) | [TheTwoSneakyNumbersOfDigitville3289.java](../src/main/java/com/leetcode/easy/TheTwoSneakyNumbersOfDigitville3289.java) | [TheTwoSneakyNumbersOfDigitville3289Test.java](../src/test/java/com/leetcode/easy/TheTwoSneakyNumbersOfDigitville3289Test.java) |

---

[← Back to Main README](../README.md)
13 changes: 13 additions & 0 deletions docs/HARD.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Hard Problems

Total: 1 problem solved

## Solutions

| # | Title | Solution | Tests |
|---|-------|----------|-------|
| 329 | [Longest Increasing Path in a Matrix](https://leetcode.com/problems/longest-increasing-path-in-a-matrix/) | [LongestIncreasingPathInAMatrix329.java](../src/main/java/com/leetcode/hard/LongestIncreasingPathInAMatrix329.java) | [LongestIncreasingPathInAMatrix329Test.java](../src/test/java/com/leetcode/hard/LongestIncreasingPathInAMatrix329Test.java) |

---

[← Back to Main README](../README.md)
27 changes: 27 additions & 0 deletions docs/MEDIUM.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Medium Problems

Total: 15 problems solved

## Solutions

| # | Title | Solution | Tests |
|---|-------|----------|-------|
| 3 | [Longest Substring Without Repeating Characters](https://leetcode.com/problems/longest-substring-without-repeating-characters/) | [LongestSubstringWithoutRepeatingCharacters3.java](../src/main/java/com/leetcode/medium/LongestSubstringWithoutRepeatingCharacters3.java) | [LongestSubstringWithoutRepeatingCharacters3Test.java](../src/test/java/com/leetcode/medium/LongestSubstringWithoutRepeatingCharacters3Test.java) |
| 11 | [Container With Most Water](https://leetcode.com/problems/container-with-most-water/) | [ContainerWithMostWater11.java](../src/main/java/com/leetcode/medium/ContainerWithMostWater11.java) | [ContainerWithMostWater11Test.java](../src/test/java/com/leetcode/medium/ContainerWithMostWater11Test.java) |
| 56 | [Merge Intervals](https://leetcode.com/problems/merge-intervals/) | [MergeIntervals56.java](../src/main/java/com/leetcode/medium/MergeIntervals56.java) | [MergeIntervals56Test.java](../src/test/java/com/leetcode/medium/MergeIntervals56Test.java) |
| 62 | [Unique Paths](https://leetcode.com/problems/unique-paths/) | [UniquePaths62.java](../src/main/java/com/leetcode/medium/UniquePaths62.java) | [UniquePaths62Test.java](../src/test/java/com/leetcode/medium/UniquePaths62Test.java) |
| 79 | [Word Search](https://leetcode.com/problems/word-search/) | [WordSearch79.java](../src/main/java/com/leetcode/medium/WordSearch79.java) | [WordSearch79Test.java](../src/test/java/com/leetcode/medium/WordSearch79Test.java) |
| 102 | [Binary Tree Level Order Traversal](https://leetcode.com/problems/binary-tree-level-order-traversal/) | [BinaryTreeLevelOrderTraversal102.java](../src/main/java/com/leetcode/medium/BinaryTreeLevelOrderTraversal102.java) | [BinaryTreeLevelOrderTraversal102Test.java](../src/test/java/com/leetcode/medium/BinaryTreeLevelOrderTraversal102Test.java) |
| 113 | [Path Sum II](https://leetcode.com/problems/path-sum-ii/) | [PathSumII113.java](../src/main/java/com/leetcode/medium/PathSumII113.java) | [PathSumII113Test.java](../src/test/java/com/leetcode/medium/PathSumII113Test.java) |
| 198 | [House Robber](https://leetcode.com/problems/house-robber/) | [HouseRobber198.java](../src/main/java/com/leetcode/medium/HouseRobber198.java) | [HouseRobber198Test.java](../src/test/java/com/leetcode/medium/HouseRobber198Test.java) |
| 200 | [Number of Islands](https://leetcode.com/problems/number-of-islands/) | [NumberOfIslands200.java](../src/main/java/com/leetcode/medium/NumberOfIslands200.java) | [NumberOfIslands200Test.java](../src/test/java/com/leetcode/medium/NumberOfIslands200Test.java) |
| 207 | [Course Schedule](https://leetcode.com/problems/course-schedule/) | [CourseSchedule207.java](../src/main/java/com/leetcode/medium/CourseSchedule207.java) | [CourseSchedule207Test.java](../src/test/java/com/leetcode/medium/CourseSchedule207Test.java) |
| 230 | [Kth Smallest Element in a BST](https://leetcode.com/problems/kth-smallest-element-in-a-bst/) | [KthSmallestElementInABST230.java](../src/main/java/com/leetcode/medium/KthSmallestElementInABST230.java) | [KthSmallestElementInABST230Test.java](../src/test/java/com/leetcode/medium/KthSmallestElementInABST230Test.java) |
| 236 | [Lowest Common Ancestor of a Binary Tree](https://leetcode.com/problems/lowest-common-ancestor-of-a-binary-tree/) | [LowestCommonAncestorOfABinaryTree236.java](../src/main/java/com/leetcode/medium/LowestCommonAncestorOfABinaryTree236.java) | [LowestCommonAncestorOfABinaryTree236Test.java](../src/test/java/com/leetcode/medium/LowestCommonAncestorOfABinaryTree236Test.java) |
| 322 | [Coin Change](https://leetcode.com/problems/coin-change/) | [CoinChange322.java](../src/main/java/com/leetcode/medium/CoinChange322.java) | [CoinChange322Test.java](../src/test/java/com/leetcode/medium/CoinChange322Test.java) |
| 695 | [Max Area of Island](https://leetcode.com/problems/max-area-of-island/) | [MaxAreaOfIsland695.java](../src/main/java/com/leetcode/medium/MaxAreaOfIsland695.java) | [MaxAreaOfIsland695Test.java](../src/test/java/com/leetcode/medium/MaxAreaOfIsland695Test.java) |
| 2043 | [Bank System Summary](https://leetcode.com/problems/bank-system-summary/) | [Bank2043.java](../src/main/java/com/leetcode/medium/Bank2043.java) | [Bank2043Test.java](../src/test/java/com/leetcode/medium/Bank2043Test.java) |

---

[← Back to Main README](../README.md)
Loading