A comprehensive collection of Java implementations covering Data Structures, Algorithms, Design Patterns, Concurrency, and LeetCode problems.
- Concurrency
- Cracking the Coding Interview (CTC)
- Design Patterns
- Data Structures & Algorithms (DSA)
- Java Examples
- LeetCode Solutions
- Low-Level Design (LLD)
- MyRunnable.java - Runnable implementation example
- MyThread.java - Thread extension example
- MyThreadDriver.java - Thread driver
- RunnableDriver.java - Runnable driver
- P01_CalculateNthPrimeWithNoConcurrency.java - Sequential approach
- P02_CalculateNthPrimeWithConcurrency.java - Concurrent approach
- P03_CalculateNthPrimeWithConcurrencyDaemon.java - Daemon threads
- PrimeNumberUtil.java - Prime utilities
- CheckPermutation.java - Check if strings are permutations
- IsUnique.java - Check if string has unique characters
- OneAway.java - One edit distance check
- StringCompression.java - String compression
- URLify.java - Replace spaces in URL
- BasicDress.java
- CasualDress.java
- Client.java
- Dress.java
- DressDecorator.java
- FancyDress.java
- SportyDress.java
- SingletonBlockSynchronized.java
- SingletonDriver.java
- SingletonEager.java
- SingletonLazy.java
- SingletonSynchronized.java
- FindAllAnagramsInAString.java
- FirstNegativeIntegerInSubArray.java
- LargestSubarrayOfSumK.java
- LongestSubstringWithKUniqueCharacters.java
- LongestSubstringWithoutRepeatingCharacters.java
- MaximumSubArraySum.java
- MinimumWindowSubstring.java
- SlidingWindowMaximum.java
- DesignTicTacToe.java
- InsertDeleteGetRandom.java
- LRUCache.java
- MinStack.java
- SerializeAndDeserializeBinaryTree.java
- CountOfSubsetSum.java
- EqualSumPartition.java
- Knapsack.java
- LongestCommonSubsequence.java
- SubsetSum.java
- BinaryTreeMaximumPathSum.java
- BinaryTreeMaximumPathSumFromAnyNode.java
- DiameterOfBinaryTree.java
- DiameterOfNAryTree.java
- CoinChange.java
- CountSubsetsWithDifference.java
- CountSubsetsWithSumK.java
- EqualSumPartition.java
- Knapsack.java
- MinimumSubsetSumDifference.java
- SubsetSum.java
- CourseSchedule.java
- CourseScheduleII.java
- DetectCycleInDirectedGraph.java
- DetectCycleInUndirectedGraph.java
- ConnectRopes.java
- FrequencySort.java
- KClosestNumbers.java
- KClosestPoints.java
- KLargestElements.java
- KthSmallestElement.java
- SortKSortedArray.java
- SumOfElements.java
- TopKFrequentNumbers.java
- AddTwoNumbers.java
- CopyListWithRandomPointer.java
- DeleteMiddleNodeOfALinkedList.java
- DeleteNodeInALinkedList.java
- InsertIntoASortedLinkedList.java
- IntersectionOfTwoLinkedLists.java
- LinkedList.java
- LinkedListCycle.java
- LinkedListCycleII.java
- LinkedListDriver.java
- ListNode.java
- MergeKSortedLists.java
- MergeTwoSortedLists.java
- OddEvenLinkedList.java
- PalindromeLinkedList.java
- RemoveDuplicatesFromSortedList.java
- RemoveLinkedListElements.java
- RemoveNthFromEndOfList.java
- RemoveNthNodeFromEndOfList.java
- ReverseLinkedList.java
- SwapNodesInLinkedList.java
- Factorial.java
- Fibonacci.java
- Palindrome.java
- Print1ToN.java
- PrintNameNTimes.java
- PrintNTo1.java
- ReverseArray.java
- SumOfNNumbers.java
- CountAllSubsequenceWithSumK.java
- PrintAllSubsequences.java
- PrintAllSubsequencesWithSumK.java
- PrintAnySubsequenceWithSumK.java
- CombinationSum.java
- CombinationSumII.java
- NQueens.java
- Permutations.java
- Subsets.java
- SubsetsII.java
- SubsetSum.java
- DeleteMiddleElementInAStack.java
- GenerateAllBalancedParentheses.java
- HeightOfBinaryTree.java
- KthSymbolInGrammar.java
- Print1ToN.java
- PrintNTo1.java
- ReverseStack.java
- SortAList.java
- SortAStack.java
- ArrayRotationCount.java
- BinarySearch.java
- BitonicArrayMaximumElement.java
- BitonicArraySearch.java
- CeilOfAnElement.java
- ElementCount.java
- FirstOccurrenceOfAnElement.java
- FloorOfAnElement.java
- LastOccurrenceOfAnElement.java
- LowerBound.java
- MinimumDifferenceElement.java
- MinimumNumberOfPages.java
- NearlySortedArraySearch.java
- NextAlphabeticalElement.java
- OrderAgnosticSearch.java
- PeakElement.java
- ReverseBinarySearch.java
- RotatedArraySearch.java
- SearchInASortedArrayOfUnknownSize.java
- SearchInRowWiseColumnWiseSortedArray.java
- SingleElementInSortedArray.java
- UpperBound.java
- CheckForBalancedParentheses.java
- EvaluatePostfixExpression.java
- EvaluatePrefixExpression.java
- ImplementQueueUsingStack.java
- ImplementStackUsingQueue.java
- ImplementStackUsingSingleQueue.java
- InfixToPostfixExpression.java
- MaximumAreaHistogram.java
- MaximumAreaRectangleInBinaryMatrix.java
- MinStack.java
- MinStackWithoutExtraSpace.java
- NearestGreaterToLeft.java
- NearestGreaterToRight.java
- NearestSmallerToLeft.java
- NearestSmallerToRight.java
- StockSpan.java
- TrappingRainWater.java
- BalancedBinaryTree.java
- BinaryTreeMaximumPathSum.java
- BinaryTreeMaximumPathSumFromAnyNode.java
- BottomView.java
- BoundaryTraversal.java
- Diameter.java
- FlattenBinaryTreeToLinkedList.java
- LeftSideView.java
- LowestCommonAncestor.java
- MaximumWidthOfBinaryTree.java
- RightSideView.java
- RootToNodePath.java
- SerializeAndDeserializeBinaryTree.java
- SymmetricTree.java
- TopView.java
- VerticalOrderTraversal.java
- ZigzagLevelOrderTraversal.java
- BinarySearchTreeIterator.java
- ConstructBSTFromPreorderTraversal.java
- Delete.java
- FindCeil.java
- FindFloor.java
- InorderSuccessor.java
- Insert.java
- isValidBST.java
- KthSmallestElementInABST.java
- LargestBSTSubtree.java
- LowestCommonAncestor.java
- RecoverBST.java
- Search.java
- TwoSum.java
- BinarySearchTree.java
- BinarySearchTreeDriver.java
- BinaryTree.java
- GraphValidTree.java
- Node.java
- Tree.java
- TreeNode.java
- LC0001_TwoSum.java
- LC0002_AddTwoNumbers.java
- LC0003_LongestSubstringWithoutRepeatingCharacters.java
- LC0012_IntegerToRoman.java
- LC0013_RomanToInteger.java
- LC0019_RemoveNthNodeFromEndOfList.java
- LC0020_ValidParentheses.java
- LC0021_MergeTwoSortedLists.java
- LC0022_GenerateParentheses.java
- LC0023_MergeKSortedLists.java
- LC0024_SwapNodesInPairs.java
- LC0033_SearchInARotatedSortedArray.java
- LC0034_FindFirstAndLastPositionOfElementInSortedArray.java
- LC0039_CombinationSum.java
- LC0042_TrappingRainWater.java
- LC0054_SpiralMatrix.java
- LC0056_MergeIntervals.java
- LC0057_InsertInterval.java
- LC0058_LengthOfTheLastWord.java
- LC0059_SpiralMatrixII.java
- LC0070_ClimbingStairs.java
- LC0072_SearchA2DMatrix.java
- LC0078_Subsets.java
- LC0081_SearchInRotatedSortedArrayII.java
- LC0083_RemoveDuplicatesFromSortedList.java
- LC0084_LargestRectangleInHistogram.java
- LC0085_MaximalRectangle.java
- LC0090_SubsetsII.java
- LC0098_ValidateBinarySearchTree.java
- LC0103_BinaryTreeZigZagLevelOrderTraversal.java
- LC0111_MinimumDepthOfBinaryTree.java
- LC0112_PathSum.java
- LC0113_PathSumII.java
- LC0114_FlattenBinaryTreeToLinkedList.java
- LC0116_PopulateNextRightPointerInEachNode.java
- LC0121_BestTimeToBuyAndSellStocks.java
- LC0124_BinaryTreeMaximumPathSum.java
- LC0136_SingleNumber.java
- LC0138_CopyListWithRandomPointer.java
- LC0141_LinkedListCycle.java
- LC0142_LinkedListCycleII.java
- LC0146_LRUCache.java
- LC0150_EvaluateReversePolishNotation.java
- LC0153_FindMinimumInRotatedSortedArray.java
- LC0154_FindMinimumInRotatedSortedArrayII.java
- LC0155_MinStack.java
- LC0160_IntersectionOfTwoLinkedLists.java
- LC0162_FindPeakElement.java
- LC0173_BinarySearchTreeIterator.java
- LC0198_HouseRobber.java
- LC0200_NumberOfIslands.java
- LC0203_RemoveLinkedListElements.java
- LC0206_ReverseLinkedList.java
- LC0207_CourseSchedule.java
- LC0208_ImplementTrie.java
- LC0210_CourseScheduleII.java
- LC0213_HouseRobberII.java
- LC0215_KthLargestElementInAnArray.java
- LC0230_KthSmallestElementInABST.java
- LC0230_KthSmallestElementInBST.java
- LC0234_PalindromeLinkedList.java
- LC0235_LowestCommonAncestorOfABinarySearchTree.java
- LC0236_LowestCommonAncestorOfABinaryTree.java
- LC0237_DeleteNodeInALinkedList.java
- LC0239_SlidingWindowMaximum.java
- LC0240_SearchA2DMatrixII.java
- LC0261_GraphValidTree.java
- LC0285_InorderSuccessorInBST.java
- LC0295_FindMedianFromDataStream.java
- LC0297_SerializeAndDeserializeBinaryTree.java
- LC0314_BinaryTreeVerticalOrderTraversal.java
- LC0322_CoinChange.java
- LC0323_NumberOfConnectedComponentsInUndirectedGraph.java
- LC0328_OddEvenLinkedList.java
- LC0336_FindLeavesOfBinaryTree.java
- LC0373_FindKPairsWithSmallestSum.java
- LC0404_SumOfLeftLeaves.java
- LC0416_PartitionEqualSubsetSum.java
- LC0450_DeleteNodeInABST.java
- LC0451_SortCharacterByFrequency.java
- LC0540_SingleElementInSortedArray.java
- LC0543_DiameterOfBinaryTree.java
- LC0545_BoundaryOfBinaryTree.java
- LC0547_NumberOfProvinces.java
- LC0662_MaximumWidthOfBinaryTree.java
- LC0692_TopKFrequentWords.java
- LC0700_SearchInABinarySearchTree.java
- LC0701_InsertIntoABinarySearchTree.java
- LC0702_SearchInASortedArrayOfUnknownSize.java
- LC0703_KthLargestElementInAStream.java
- LC0704_BinarySearch.java
- LC0707_DesignLinkedList.java
- LC0708_InsertIntoASortedLinkedList.java
- LC0724_FindPivotIndex.java
- LC0739_DailyTemperatures.java
- LC0744_FindSmallestLetterGreaterThanTarget.java
- LC0746_MinCostClimbingStairs.java
- LC0779_KthSymbolInGrammar.java
- LC0785_IsGraphBipartite.java
- LC0811_SubdomainVisitCount.java
- LC0852_PeakIndexInAMountainArray.java
- LC0876_MiddleOfTheLinkedList.java
- LC0901_OnlineStockSpan.java
- LC0973_KClosestPoints.java
- LC0994_RottingOranges.java
- LC1095_FindInMountainArray.java
- LC1143_LongestCommonSubsequence.java
- LC1167_MinimumCostToConnectSticks.java
- LC1351_CountNegativeNumberInASortedMatrix.java
- LC1522_DiameterOfNAryTree.java
- LC1721_SwapNodesInLinkedList.java
- LC1822_SignOfProductOfAnArray.java
- LC2095_DeleteMiddleNodeOfALinkedList.java
- LC2096_StepByStepDirectionFromOneBinaryTreeNodeToAnother.java
- ArrayReader.java
- Atoi.java
- BinaryTreeMaxDepth.java
- BreakPalindrome.java
- ClimbingStairs.java
- ContainsDuplicates.java
- ContainsDuplicatesII.java
- FindKClosestElements.java
- FindPivotIndex.java
- FirstUniqueCharacter.java
- GroupAnagrams.java
- KthFactor.java
- LeastUniqueIntegersKRemovals.java
- MapSum.java
- MedianFinder.java
- MeetingRoomsII.java
- MountainArray.java
- NextGreaterElement.java
- NumberOfIslands.java
- OddEvenLinkedList.java
- RandomPickWithWeight.java
- ReArrangeWordsInASentence.java
- ReformatDate.java
- RemoveNthFromEndOfList.java
- ReorganizeString.java
- SearchCircularSortedArray.java
- SortCharactersByFrequency.java
- SortColors.java
- SpiralMatrix.java
- StringCompression.java
- TrappingRainWater.java
- WordSearch.java
- Total Java Files: 400+
- Design Patterns: 5 main patterns with multiple implementations
- Data Structures: Arrays, LinkedList, Stack, Queue, Heap, Tree, Graph, Trie
- Algorithms: Sorting, Searching, DP, Recursion, Backtracking, DFS, BFS
- LeetCode Problems: 200+ solved
- Java 8 or higher
- Maven (optional, for dependency management)
- Clone the repository:
git clone https://github.com/mohanakrishnavh/practice.git
cd practice- Compile a specific file:
javac src/path/to/YourFile.java- Run the compiled class:
java -cp src path.to.YourFileThis repository is for educational purposes.
Mohanakrishna VH
This is a personal practice repository. Feel free to fork and use for your own learning!
Give a βοΈ if this project helped you!