diff --git a/README.md b/README.md index 06b6d7b6..0dc84d16 100644 --- a/README.md +++ b/README.md @@ -8,31 +8,401 @@ You can also refer to my [Java Notes](http://blog.rampatra.com/category/java) fo ## Contents +
+ ↥ back to Interview +
+ 1. [Basic Practice](/src/main/java/com/rampatra/): 1. [Arrays](/src/main/java/com/rampatra/arrays) + - [ArrangeNosToFormBiggestNo](/src/main/java/com/rampatra/arrays/ArrangeNosToFormBiggestNo.java) + - [BooleanMatrix](/src/main/java/com/rampatra/arrays/BooleanMatrix.java) + - [CelebrityProblem](/src/main/java/com/rampatra/arrays/CelebrityProblem.java) + - [ConsecutiveElements](/src/main/java/com/rampatra/arrays/ConsecutiveElements.java) + - [CountDivisors](/src/main/java/com/rampatra/arrays/CountDivisors.java) + - [CountSmallerElementsOnRHS](/src/main/java/com/rampatra/arrays/CountSmallerElementsOnRHS.java) + - [DistinctPairs](/src/main/java/com/rampatra/arrays/DistinctPairs.java) + - [DuplicatesInArray](/src/main/java/com/rampatra/arrays/DuplicatesInArray.java) + - [DuplicatesInArrayWithinKDistance](/src/main/java/com/rampatra/arrays/DuplicatesInArrayWithinKDistance.java) + - [EqualProbabilityRandomNoGenerator](/src/main/java/com/rampatra/arrays/EqualProbabilityRandomNoGenerator.java) + - [EquilibriumIndex](/src/main/java/com/rampatra/arrays/EquilibriumIndex.java) + - [FixedPoint](/src/main/java/com/rampatra/arrays/FixedPoint.java) + - [FlattenArray](/src/main/java/com/rampatra/arrays/FlattenArray.java) + - [IntersectionAndUnionOf2SortedArrays](/src/main/java/com/rampatra/arrays/IntersectionAndUnionOf2SortedArrays.java) + - [InversionsInArray](/src/main/java/com/rampatra/arrays/InversionsInArray.java) + - [KLargestElements](/src/main/java/com/rampatra/arrays/KLargestElements.java) + - [KthLargestElement](/src/main/java/com/rampatra/arrays/KthLargestElement.java) + - [LargestProductContiguousSubArray](/src/main/java/com/rampatra/arrays/LargestProductContiguousSubArray.java) + - [LargestSumContiguousSubArray](/src/main/java/com/rampatra/arrays/LargestSumContiguousSubArray.java) + - [LeadersInArray](/src/main/java/com/rampatra/arrays/LeadersInArray.java) + - [LongestBitonicSubArray](/src/main/java/com/rampatra/arrays/LongestBitonicSubArray.java) + - [LongestConsecutiveSubsequence](/src/main/java/com/rampatra/arrays/LongestConsecutiveSubsequence.java) + - [MajorityElement](/src/main/java/com/rampatra/arrays/MajorityElement.java) + - [MajorityElementInSortedArray](/src/main/java/com/rampatra/arrays/MajorityElementInSortedArray.java) + - [MatrixInSpiral](/src/main/java/com/rampatra/arrays/MatrixInSpiral.java) + - [MaxDiffWithLargerElementAfterSmallerElement](/src/main/java/com/rampatra/arrays/MaxDiffWithLargerElementAfterSmallerElement.java) + - [MaxInAllSubArrays](/src/main/java/com/rampatra/arrays/MaxInAllSubArrays.java) + - [MaxIndexDiff](/src/main/java/com/rampatra/arrays/MaxIndexDiff.java) + - [MaxMinWithMinComparisons](/src/main/java/com/rampatra/arrays/MaxMinWithMinComparisons.java) + - [MaxSpan](/src/main/java/com/rampatra/arrays/MaxSpan.java) + - [MaximumSizeSquareSubMatrix](/src/main/java/com/rampatra/arrays/MaximumSizeSquareSubMatrix.java) + - [MaximumSumNonAdjacentSubSequence](/src/main/java/com/rampatra/arrays/MaximumSumNonAdjacentSubSequence.java) + - [MedianOfStream](/src/main/java/com/rampatra/arrays/MedianOfStream.java) + - [MedianOfTwoSortedArrays](/src/main/java/com/rampatra/arrays/MedianOfTwoSortedArrays.java) + - [MergeArrayOfNIntoArrayOfMPlusN](/src/main/java/com/rampatra/arrays/MergeArrayOfNIntoArrayOfMPlusN.java) + - [MinimumDistanceBetweenTwoNos](/src/main/java/com/rampatra/arrays/MinimumDistanceBetweenTwoNos.java) + - [MissingAndRepeatingElements](/src/main/java/com/rampatra/arrays/MissingAndRepeatingElements.java) + - [MissingNumber](/src/main/java/com/rampatra/arrays/MissingNumber.java) + - [NextGreaterElement](/src/main/java/com/rampatra/arrays/NextGreaterElement.java) + - [NextLargerNumber](/src/main/java/com/rampatra/arrays/NextLargerNumber.java) + - [NthSmallestNumber](/src/main/java/com/rampatra/arrays/NthSmallestNumber.java) + - [NumberOccurringOddTimes](/src/main/java/com/rampatra/arrays/NumberOccurringOddTimes.java) + - [OccurrencesInSortedArray](/src/main/java/com/rampatra/arrays/OccurrencesInSortedArray.java) + - [PairDiff](/src/main/java/com/rampatra/arrays/PairDiff.java) + - [PairSum](/src/main/java/com/rampatra/arrays/PairSum.java) + - [PivotedBinarySearch](/src/main/java/com/rampatra/arrays/PivotedBinarySearch.java) + - [ProductArrayPuzzle](/src/main/java/com/rampatra/arrays/ProductArrayPuzzle.java) + - [ReservoirSampling](/src/main/java/com/rampatra/arrays/ReservoirSampling.java) + - [ReverseArray](/src/main/java/com/rampatra/arrays/ReverseArray.java) + - [RotateArray](/src/main/java/com/rampatra/arrays/RotateArray.java) + - [RotateMatrixBy90Degrees](/src/main/java/com/rampatra/arrays/RotateMatrixBy90Degrees.java) + - [RotatedIndex](/src/main/java/com/rampatra/arrays/RotatedIndex.java) + - [SearchInSorted2DArray](/src/main/java/com/rampatra/arrays/SearchInSorted2DArray.java) + - [Segregate0s1sAnd2s](/src/main/java/com/rampatra/arrays/Segregate0s1sAnd2s.java) + - [Segregate0sAnd1s](/src/main/java/com/rampatra/arrays/Segregate0sAnd1s.java) + - [SegregateEvenAndOddNos](/src/main/java/com/rampatra/arrays/SegregateEvenAndOddNos.java) + - [SmallestAndSecondSmallest](/src/main/java/com/rampatra/arrays/SmallestAndSecondSmallest.java) + - [SmallestMissingNumber](/src/main/java/com/rampatra/arrays/SmallestMissingNumber.java) + - [SortedSubSequence](/src/main/java/com/rampatra/arrays/SortedSubSequence.java) + - [SubArrayOfSum](/src/main/java/com/rampatra/arrays/SubArrayOfSum.java) + - [SubsetOfArray](/src/main/java/com/rampatra/arrays/SubsetOfArray.java) + - [SymmetricDifference](/src/main/java/com/rampatra/arrays/SymmetricDifference.java) + - [TripletOfSum](/src/main/java/com/rampatra/arrays/TripletOfSum.java) + - [TwoElementsSumClosestToZero](/src/main/java/com/rampatra/arrays/TwoElementsSumClosestToZero.java) + - [TwoRepeatingElements](/src/main/java/com/rampatra/arrays/TwoRepeatingElements.java) + - [TwoStacksInOneArray](/src/main/java/com/rampatra/arrays/TwoStacksInOneArray.java) + - [UnsortedSubArray](/src/main/java/com/rampatra/arrays/UnsortedSubArray.java) 2. [Backtracking](/src/main/java/com/rampatra/backtracking) + - [KnightTour](/src/main/java/com/rampatra/backtracking/KnightTour.java) + - [RatInAMaze](/src/main/java/com/rampatra/backtracking/RatInAMaze.java) 3. [Bits](/src/main/java/com/rampatra/bits) + - [AbsWithoutBranching](/src/main/java/com/rampatra/bits/AbsWithoutBranching.java) + - [Addition](/src/main/java/com/rampatra/bits/Addition.java) + - [BinaryGap](/src/main/java/com/rampatra/bits/BinaryGap.java) + - [BinaryString](/src/main/java/com/rampatra/bits/BinaryString.java) + - [BooleanArrayPuzzle](/src/main/java/com/rampatra/bits/BooleanArrayPuzzle.java) + - [ConvertAToB](/src/main/java/com/rampatra/bits/ConvertAToB.java) + - [CountSetBits](/src/main/java/com/rampatra/bits/CountSetBits.java) + - [CountSetBitsFromMinusNtoN](/src/main/java/com/rampatra/bits/CountSetBitsFromMinusNtoN.java) + - [ElementOccurringOnce](/src/main/java/com/rampatra/bits/ElementOccurringOnce.java) + - [FlippingBits](/src/main/java/com/rampatra/bits/FlippingBits.java) + - [IntegerOverflow](/src/main/java/com/rampatra/bits/IntegerOverflow.java) + - [LittleAndBigEndian](/src/main/java/com/rampatra/bits/LittleAndBigEndian.java) + - [MaxWithoutBranching](/src/main/java/com/rampatra/bits/MaxWithoutBranching.java) + - [Modulo](/src/main/java/com/rampatra/bits/Modulo.java) + - [MultipleOf3](/src/main/java/com/rampatra/bits/MultipleOf3.java) + - [Multiply](/src/main/java/com/rampatra/bits/Multiply.java) + - [NextHigherNumber](/src/main/java/com/rampatra/bits/NextHigherNumber.java) + - [NextPowerOf2](/src/main/java/com/rampatra/bits/NextPowerOf2.java) + - [OppositeSign](/src/main/java/com/rampatra/bits/OppositeSign.java) + - [Parity](/src/main/java/com/rampatra/bits/Parity.java) + - [PowerOf2](/src/main/java/com/rampatra/bits/PowerOf2.java) + - [PowerOf4](/src/main/java/com/rampatra/bits/PowerOf4.java) + - [README.md](/src/main/java/com/rampatra/bits/README.md) + - [ReverseBits](/src/main/java/com/rampatra/bits/ReverseBits.java) + - [RightShiftOperator](/src/main/java/com/rampatra/bits/RightShiftOperator.java) + - [RightmostSetBit](/src/main/java/com/rampatra/bits/RightmostSetBit.java) + - [RotateBits](/src/main/java/com/rampatra/bits/RotateBits.java) + - [ShiftByNegativeNumber](/src/main/java/com/rampatra/bits/ShiftByNegativeNumber.java) + - [SmallestOf3Integers](/src/main/java/com/rampatra/bits/SmallestOf3Integers.java) + - [StrCmp](/src/main/java/com/rampatra/bits/StrCmp.java) + - [SubBit](/src/main/java/com/rampatra/bits/SubBit.java) + - [SwapBits](/src/main/java/com/rampatra/bits/SwapBits.java) + - [TwoNonRepeatingElements](/src/main/java/com/rampatra/bits/TwoNonRepeatingElements.java) 4. [Blockchain Demo](/src/main/java/com/rampatra/blockchain) + - [Block](/src/main/java/com/rampatra/blockchain/Block.java) + - [Blockchain](/src/main/java/com/rampatra/blockchain/Blockchain.java) + - [Message](/src/main/java/com/rampatra/blockchain/Message.java) + - [MessageHandler](/src/main/java/com/rampatra/blockchain/MessageHandler.java) + - [P2P](/src/main/java/com/rampatra/blockchain/P2P.java) + - [Peer](/src/main/java/com/rampatra/blockchain/Peer.java) 5. [Dynamic Programming](/src/main/java/com/rampatra/dynamicprogramming) + - [FibonacciNumbers](/src/main/java/com/rampatra/dynamicprogramming/FibonacciNumbers.java) + - [LongestIncreasingSubSequence](/src/main/java/com/rampatra/dynamicprogramming/LongestIncreasingSubSequence.java) + - [MaximumRectangleOf1sInMatrix](/src/main/java/com/rampatra/dynamicprogramming/MaximumRectangleOf1sInMatrix.java) + - [MinimumJumpsToReachEnd](/src/main/java/com/rampatra/dynamicprogramming/MinimumJumpsToReachEnd.java) 6. [Graphs](/src/main/java/com/rampatra/graphs) - 7. [Java 8](/src/main/java/com/rampatra/java8) + 7. [Java 8](/src/main/java/com/rampatra/java8) + - [DateTime](/src/main/java/com/rampatra/java8/DateTime.java) + - [FlatMapInStreams](/src/main/java/com/rampatra/java8/FlatMapInStreams.java) + - [Lambdas](/src/main/java/com/rampatra/java8/Lambdas.java) + - [Streams](/src/main/java/com/rampatra/java8/Streams.java) 8. [Linked Lists](/src/main/java/com/rampatra/linkedlists) + - [AddNumbersInTwoLists](/src/main/java/com/rampatra/linkedlists/AddNumbersInTwoLists.java) + - [CloneWithRandPointers](/src/main/java/com/rampatra/linkedlists/CloneWithRandPointers.java) + - [DeleteAlternateNodes](/src/main/java/com/rampatra/linkedlists/DeleteAlternateNodes.java) + - [DeleteLesserNodes](/src/main/java/com/rampatra/linkedlists/DeleteLesserNodes.java) + - [DeleteMnodesAfterNnodes](/src/main/java/com/rampatra/linkedlists/DeleteMnodesAfterNnodes.java) + - [DeleteNode](/src/main/java/com/rampatra/linkedlists/DeleteNode.java) + - [DetectAndRemoveLoop](/src/main/java/com/rampatra/linkedlists/DetectAndRemoveLoop.java) + - [DetectLoop](/src/main/java/com/rampatra/linkedlists/DetectLoop.java) + - [DivideCircularListIntoTwo](/src/main/java/com/rampatra/linkedlists/DivideCircularListIntoTwo.java) + - [FlattenMultiLevelLinkedList](/src/main/java/com/rampatra/linkedlists/FlattenMultiLevelLinkedList.java) + - [Identical](/src/main/java/com/rampatra/linkedlists/Identical.java) + - [InsertInSortedCircularLinkedList](/src/main/java/com/rampatra/linkedlists/InsertInSortedCircularLinkedList.java) + - [InsertInSortedList](/src/main/java/com/rampatra/linkedlists/InsertInSortedList.java) + - [IntersectionAndUnionOf2Lists](/src/main/java/com/rampatra/linkedlists/IntersectionAndUnionOf2Lists.java) + - [IntersectionOf2SortedLists](/src/main/java/com/rampatra/linkedlists/IntersectionOf2SortedLists.java) + - [IntersectionPointOfTwoLists](/src/main/java/com/rampatra/linkedlists/IntersectionPointOfTwoLists.java) + - [LRUCache](/src/main/java/com/rampatra/linkedlists/LRUCache.java) + - [MaximumSumLinkedList](/src/main/java/com/rampatra/linkedlists/MaximumSumLinkedList.java) + - [MergeSort](/src/main/java/com/rampatra/linkedlists/MergeSort.java) + - [MergeSortDoubleLinkedList](/src/main/java/com/rampatra/linkedlists/MergeSortDoubleLinkedList.java) + - [MergeTwoLinkedListAlternatively](/src/main/java/com/rampatra/linkedlists/MergeTwoLinkedListAlternatively.java) + - [MergeTwoSortedLists](/src/main/java/com/rampatra/linkedlists/MergeTwoSortedLists.java) + - [MiddleNode](/src/main/java/com/rampatra/linkedlists/MiddleNode.java) + - [MoveLastNodeToFirst](/src/main/java/com/rampatra/linkedlists/MoveLastNodeToFirst.java) + - [NthNodeFromLast](/src/main/java/com/rampatra/linkedlists/NthNodeFromLast.java) + - [PairWiseSwap](/src/main/java/com/rampatra/linkedlists/PairWiseSwap.java) + - [Palindrome](/src/main/java/com/rampatra/linkedlists/Palindrome.java) + - [QuickSort](/src/main/java/com/rampatra/linkedlists/QuickSort.java) + - [RandomNode](/src/main/java/com/rampatra/linkedlists/RandomNode.java) + - [RemoveDuplicates](/src/main/java/com/rampatra/linkedlists/RemoveDuplicates.java) + - [RemoveMiddlePointsFromLineSegments](/src/main/java/com/rampatra/linkedlists/RemoveMiddlePointsFromLineSegments.java) + - [ReverseAlternateNodesAndAppendAtEnd](/src/main/java/com/rampatra/linkedlists/ReverseAlternateNodesAndAppendAtEnd.java) + - [ReverseDoubleLinkedList](/src/main/java/com/rampatra/linkedlists/ReverseDoubleLinkedList.java) + - [ReverseLinkedListInAlternateGroups](/src/main/java/com/rampatra/linkedlists/ReverseLinkedListInAlternateGroups.java) + - [ReverseLinkedListInGroups](/src/main/java/com/rampatra/linkedlists/ReverseLinkedListInGroups.java) + - [ReverseSingleLinkedList](/src/main/java/com/rampatra/linkedlists/ReverseSingleLinkedList.java) + - [RotateLinkedList](/src/main/java/com/rampatra/linkedlists/RotateLinkedList.java) + - [SegregateEvenOddNumbers](/src/main/java/com/rampatra/linkedlists/SegregateEvenOddNumbers.java) + - [SortAlternativelySortedLinkedList](/src/main/java/com/rampatra/linkedlists/SortAlternativelySortedLinkedList.java) + - [SortLinkedListOf0s1s2s](/src/main/java/com/rampatra/linkedlists/SortLinkedListOf0s1s2s.java) + - [SortedDLLToBBST](/src/main/java/com/rampatra/linkedlists/SortedDLLToBBST.java) + - [StackWithOperationOnMiddleElement](/src/main/java/com/rampatra/linkedlists/StackWithOperationOnMiddleElement.java) + - [SwapKthNode](/src/main/java/com/rampatra/linkedlists/SwapKthNode.java) + - [SwapNodes](/src/main/java/com/rampatra/linkedlists/SwapNodes.java) + - [TripletFromThreeLinkedLists](/src/main/java/com/rampatra/linkedlists/TripletFromThreeLinkedLists.java) 9. [Miscellaneous](/src/main/java/com/rampatra/misc) + - [BotTesting](/src/main/java/com/rampatra/misc/BotTesting.java) + - [BreakParagraph](/src/main/java/com/rampatra/misc/BreakParagraph.java) + - [CollectionIteration](/src/main/java/com/rampatra/misc/CollectionIteration.java) + - [DivideByZero](/src/main/java/com/rampatra/misc/DivideByZero.java) + - [Equals](/src/main/java/com/rampatra/misc/Equals.java) + - [GarbageCollection](/src/main/java/com/rampatra/misc/GarbageCollection.java) + - [GenericNonGenericMix](/src/main/java/com/rampatra/misc/GenericNonGenericMix.java) + - [HitCount](/src/main/java/com/rampatra/misc/HitCount.java) + - [MapReduce](/src/main/java/com/rampatra/misc/MapReduce.java) + - [MapWithTimestamp](/src/main/java/com/rampatra/misc/MapWithTimestamp.java) + - [MethodLocalVSInner](/src/main/java/com/rampatra/misc/MethodLocalVSInner.java) + - [MethodOverloading](/src/main/java/com/rampatra/misc/MethodOverloading.java) + - [Outer](/src/main/java/com/rampatra/misc/Outer.java) + - [OuterClassAccess](/src/main/java/com/rampatra/misc/OuterClassAccess.java) + - [RandomTest](/src/main/java/com/rampatra/misc/RandomTest.java) + - [ReadFile](/src/main/java/com/rampatra/misc/ReadFile.java) + - [RecursiveWarmup](/src/main/java/com/rampatra/misc/RecursiveWarmup.java) + - [RegexReplaceAllSpaces](/src/main/java/com/rampatra/misc/RegexReplaceAllSpaces.java) + - [RegexValidateLatLong](/src/main/java/com/rampatra/misc/RegexValidateLatLong.java) + - [ReverseAndAdd](/src/main/java/com/rampatra/misc/ReverseAndAdd.java) + - [TreeList](/src/main/java/com/rampatra/misc/TreeList.java) + - [parenthesis](/src/main/java/com/rampatra/misc/parenthesis.txt) + - [reverseandadd](/src/main/java/com/rampatra/misc/reverseandadd.txt) 10. [Permutations](/src/main/java/com/rampatra/permutations) + - [StringPermutations](/src/main/java/com/rampatra/permutations/StringPermutations.java) + - [StringPermutationsCount](/src/main/java/com/rampatra/permutations/StringPermutationsCount.java) + - [StringPermutationsWithDuplicates](/src/main/java/com/rampatra/permutations/StringPermutationsWithDuplicates.java) + - [UppercaseLowercasePermutations](/src/main/java/com/rampatra/permutations/UppercaseLowercasePermutations.java) 11. [Searching](/src/main/java/com/rampatra/searching) + - [BinarySearch](/src/main/java/com/rampatra/searching/BinarySearch.java) + - [InterpolationSearch](/src/main/java/com/rampatra/searching/InterpolationSearch.java) 12. [Sorting](/src/main/java/com/rampatra/sorting) + - [BubbleSort](/src/main/java/com/rampatra/sorting/BubbleSort.java) + - [CheckSorted](/src/main/java/com/rampatra/sorting/CheckSorted.java) + - [HeapSort](/src/main/java/com/rampatra/sorting/HeapSort.java) + - [MergeSort](/src/main/java/com/rampatra/sorting/MergeSort.java) + - [MergeSortSpaceOptimized](/src/main/java/com/rampatra/sorting/MergeSortSpaceOptimized.java) + - [PancakeSort](/src/main/java/com/rampatra/sorting/PancakeSort.java) + - [QuickSort](/src/main/java/com/rampatra/sorting/QuickSort.java) + - [SelectionSort](/src/main/java/com/rampatra/sorting/SelectionSort.java) + - [WiggleSort](/src/main/java/com/rampatra/sorting/WiggleSort.java) 13. [Stacks](/src/main/java/com/rampatra/stacks) + - [BalancingParenthesis](/src/main/java/com/rampatra/stacks/BalancingParenthesis.java) + - [MaxRectangleAreaInHistogram](/src/main/java/com/rampatra/stacks/MaxRectangleAreaInHistogram.java) 14. [Strings](/src/main/java/com/rampatra/strings) + - [AnagramsTogether](/src/main/java/com/rampatra/strings/AnagramsTogether.java) + - [AnagramsTogetherLexicographically](/src/main/java/com/rampatra/strings/AnagramsTogetherLexicographically.java) + - [BasicRegexParser](/src/main/java/com/rampatra/strings/BasicRegexParser.java) + - [CompressString](/src/main/java/com/rampatra/strings/CompressString.java) + - [IntegerToString](/src/main/java/com/rampatra/strings/IntegerToString.java) + - [KeepOnlyKConsecutiveLetters](/src/main/java/com/rampatra/strings/KeepOnlyKConsecutiveLetters.java) + - [NearPalindrome](/src/main/java/com/rampatra/strings/NearPalindrome.java) + - [RemoveDuplicatesAndArrangeLetters](/src/main/java/com/rampatra/strings/RemoveDuplicatesAndArrangeLetters.java) + - [RemoveExtraSpaces](/src/main/java/com/rampatra/strings/RemoveExtraSpaces.java) + - [StringRotation](/src/main/java/com/rampatra/strings/StringRotation.java) + - [StringToInteger](/src/main/java/com/rampatra/strings/StringToInteger.java) + - [SubStringCheck](/src/main/java/com/rampatra/strings/SubStringCheck.java) + - [SubStrings](/src/main/java/com/rampatra/strings/SubStrings.java) + - [WithoutString](/src/main/java/com/rampatra/strings/WithoutString.java) 15. [Threads](/src/main/java/com/rampatra/threads) + - [Basics](/src/main/java/com/rampatra/threads/Basics.java) + - [NamePrint](/src/main/java/com/rampatra/threads/NamePrint.java) + - [ProducerConsumerUsingLockApi](/src/main/java/com/rampatra/threads/ProducerConsumerUsingLockApi.java) + - [ProducerConsumerUsingWaitNotify](/src/main/java/com/rampatra/threads/ProducerConsumerUsingWaitNotify.java) + - [SimpleDeadlock](/src/main/java/com/rampatra/threads/SimpleDeadlock.java) 16. [Trees](/src/main/java/com/rampatra/trees) + - [BFSUsingQueue](/src/main/java/com/rampatra/trees/BFSUsingQueue.java) + - [CheckForBST](/src/main/java/com/rampatra/trees/CheckForBST.java) + - [ChildrenSum](/src/main/java/com/rampatra/trees/ChildrenSum.java) + - [ConnectNodesAtSameLevel](/src/main/java/com/rampatra/trees/ConnectNodesAtSameLevel.java) + - [ConstructTreeFromInOrderAndPreOrder](/src/main/java/com/rampatra/trees/ConstructTreeFromInOrderAndPreOrder.java) + - [DoubleTree](/src/main/java/com/rampatra/trees/DoubleTree.java) + - [HeightBalanced](/src/main/java/com/rampatra/trees/HeightBalanced.java) + - [IdenticalTrees](/src/main/java/com/rampatra/trees/IdenticalTrees.java) + - [InOrderUsingStack](/src/main/java/com/rampatra/trees/InOrderUsingStack.java) + - [InOrderWithoutStackAndRecursion](/src/main/java/com/rampatra/trees/InOrderWithoutStackAndRecursion.java) + - [LeafNodes](/src/main/java/com/rampatra/trees/LeafNodes.java) + - [LeastCommonAncestorInBST](/src/main/java/com/rampatra/trees/LeastCommonAncestorInBST.java) + - [LeastCommonAncestorInBT](/src/main/java/com/rampatra/trees/LeastCommonAncestorInBT.java) + - [MirrorTree](/src/main/java/com/rampatra/trees/MirrorTree.java) + - [RandomNodeInBT](/src/main/java/com/rampatra/trees/RandomNodeInBT.java) + - [RootToLeafPaths](/src/main/java/com/rampatra/trees/RootToLeafPaths.java) + - [SecondSmallestInBST](/src/main/java/com/rampatra/trees/SecondSmallestInBST.java) + - [SpiralTraversal](/src/main/java/com/rampatra/trees/SpiralTraversal.java) + - [TreeToList](/src/main/java/com/rampatra/trees/TreeToList.java) + - [TwoSwappedNodesInBST](/src/main/java/com/rampatra/trees/TwoSwappedNodesInBST.java) 2. [Cracking the Coding Interview](/src/main/java/com/ctci): 1. [Arrays and Strings](/src/main/java/com/ctci/arraysandstrings) + - [CheckPermutation](/src/main/java/com/ctci/arraysandstrings/CheckPermutation.java) + - [IsUnique](/src/main/java/com/ctci/arraysandstrings/IsUnique.java) + - [OneAway](/src/main/java/com/ctci/arraysandstrings/OneAway.java) + - [PalindromePermutation](/src/main/java/com/ctci/arraysandstrings/PalindromePermutation.java) + - [RotateMatrix](/src/main/java/com/ctci/arraysandstrings/RotateMatrix.java) + - [StringCompression](/src/main/java/com/ctci/arraysandstrings/StringCompression.java) + - [StringRotation](/src/main/java/com/ctci/arraysandstrings/StringRotation.java) + - [URLify](/src/main/java/com/ctci/arraysandstrings/URLify.java) + - [ZeroMatrix](/src/main/java/com/ctci/arraysandstrings/ZeroMatrix.java) 2. [Linked Lists](/src/main/java/com/ctci/linkedlists) + - [DeleteMiddleNode](/src/main/java/com/ctci/linkedlists/DeleteMiddleNode.java) + - [Intersection](/src/main/java/com/ctci/linkedlists/Intersection.java) + - [KthToLastElement](/src/main/java/com/ctci/linkedlists/KthToLastElement.java) + - [LoopDetection](/src/main/java/com/ctci/linkedlists/LoopDetection.java) + - [Node](/src/main/java/com/ctci/linkedlists/Node.java) + - [Palindrome](/src/main/java/com/ctci/linkedlists/Palindrome.java) + - [Partition](/src/main/java/com/ctci/linkedlists/Partition.java) + - [RemoveDuplicates](/src/main/java/com/ctci/linkedlists/RemoveDuplicates.java) + - [SumLists](/src/main/java/com/ctci/linkedlists/SumLists.java) 3. [Stacks and Queues](/src/main/java/com/ctci/stacksandqueues) + - [QueueViaStacks](/src/main/java/com/ctci/stacksandqueues/QueueViaStacks.java) + - [SortStack](/src/main/java/com/ctci/stacksandqueues/SortStack.java) + - [StackMin](/src/main/java/com/ctci/stacksandqueues/StackMin.java) + - [StackOfPlates](/src/main/java/com/ctci/stacksandqueues/StackOfPlates.java) 4. [Trees and Graphs](/src/main/java/com/ctci/treesandgraphs) + - [BuildOrder](/src/main/java/com/ctci/treesandgraphs/BuildOrder.java) + - [CheckBalanced](/src/main/java/com/ctci/treesandgraphs/CheckBalanced.java) + - [CheckSubtree](/src/main/java/com/ctci/treesandgraphs/CheckSubtree.java) + - [FirstCommonAncestor](/src/main/java/com/ctci/treesandgraphs/FirstCommonAncestor.java) + - [FirstCommonAncestorWithParentAccess](/src/main/java/com/ctci/treesandgraphs/FirstCommonAncestorWithParentAccess.java) + - [GraphNode](/src/main/java/com/ctci/treesandgraphs/GraphNode.java) + - [ListOfDepths](/src/main/java/com/ctci/treesandgraphs/ListOfDepths.java) + - [MinimalTree](/src/main/java/com/ctci/treesandgraphs/MinimalTree.java) + - [RouteBetweenNodes](/src/main/java/com/ctci/treesandgraphs/RouteBetweenNodes.java) + - [Successor](/src/main/java/com/ctci/treesandgraphs/Successor.java) + - [TreeNode](/src/main/java/com/ctci/treesandgraphs/TreeNode.java) + - [ValidateBST](/src/main/java/com/ctci/treesandgraphs/ValidateBST.java) 5. [Bit Manipulation](/src/main/java/com/ctci/bitmanipulation) + - [BinaryToString](/src/main/java/com/ctci/bitmanipulation/BinaryToString.java) + - [Conversion](/src/main/java/com/ctci/bitmanipulation/Conversion.java) + - [Debugger](/src/main/java/com/ctci/bitmanipulation/Debugger.java) + - [DrawLine](/src/main/java/com/ctci/bitmanipulation/DrawLine.java) + - [FlipBitToWin](/src/main/java/com/ctci/bitmanipulation/FlipBitToWin.java) + - [Insertion](/src/main/java/com/ctci/bitmanipulation/Insertion.java) + - [NextNumber](/src/main/java/com/ctci/bitmanipulation/NextNumber.java) + - [PairwiseSwap](/src/main/java/com/ctci/bitmanipulation/PairwiseSwap.java) 6. [Recursion and DP](/src/main/java/com/ctci/recursionanddp) + - [FibonacciNumber](/src/main/java/com/ctci/recursionanddp/FibonacciNumber.java) 3. [LeetCode](/src/main/java/com/leetcode). + 1. [arrays](/src/main/java/com/leetcode/arrays) + - [BuySellStocks](/src/main/java/com/leetcode/arrays/BuySellStocks.java) + - [BuySellStocksII](/src/main/java/com/leetcode/arrays/BuySellStocksII.java) + - [CanPlaceFlowers](/src/main/java/com/leetcode/arrays/CanPlaceFlowers.java) + - [FindTheCelebrity](/src/main/java/com/leetcode/arrays/FindTheCelebrity.java) + - [InsertInterval](/src/main/java/com/leetcode/arrays/InsertInterval.java) + - [MajorityElement](/src/main/java/com/leetcode/arrays/MajorityElement.java) + - [MergeIntervals](/src/main/java/com/leetcode/arrays/MergeIntervals.java) + - [MergeSortedArray](/src/main/java/com/leetcode/arrays/MergeSortedArray.java) + - [NumberOfIslands](/src/main/java/com/leetcode/arrays/NumberOfIslands.java) + - [PascalsTriangle](/src/main/java/com/leetcode/arrays/PascalsTriangle.java) + - [RemoveDuplicates](/src/main/java/com/leetcode/arrays/RemoveDuplicates.java) + - [RotateArray](/src/main/java/com/leetcode/arrays/RotateArray.java) + - [ShortestWordDistance](/src/main/java/com/leetcode/arrays/ShortestWordDistance.java) + - [ShortestWordDistanceIII](/src/main/java/com/leetcode/arrays/ShortestWordDistanceIII.java) + - [SparseMatrixMultiplication](/src/main/java/com/leetcode/arrays/SparseMatrixMultiplication.java) + - [ValidTriangleNumber](/src/main/java/com/leetcode/arrays/ValidTriangleNumber.java) + - [binarysearch](/src/main/java/com/leetcode/arrays/binarysearch) + 2. [design](/src/main/java/com/leetcode/design) + - [AllOne](/src/main/java/com/leetcode/design/AllOne.java) + - [DesignHitCounter](/src/main/java/com/leetcode/design/DesignHitCounter.java) + - [InsertDeleteGetRandom](/src/main/java/com/leetcode/design/InsertDeleteGetRandom.java) + - [LFUCache](/src/main/java/com/leetcode/design/LFUCache.java) + - [LRUCache](/src/main/java/com/leetcode/design/LRUCache.java) + 3. [dynamicprogramming](/src/main/java/com/leetcode/dynamicprogramming) + - [MaximumProductSubArray](/src/main/java/com/leetcode/dynamicprogramming/MaximumProductSubArray.java) + - [MaximumSubArray](/src/main/java/com/leetcode/dynamicprogramming/MaximumSubArray.java) + - [PaintHouse](/src/main/java/com/leetcode/dynamicprogramming/PaintHouse.java) + - [PaintHouseII](/src/main/java/com/leetcode/dynamicprogramming/PaintHouseII.java) + 4. [graphs](/src/main/java/com/leetcode/graphs) + - [GraphValidTree](/src/main/java/com/leetcode/graphs/GraphValidTree.java) + - [WordLadder](/src/main/java/com/leetcode/graphs/WordLadder.java) + - [WordLadderII](/src/main/java/com/leetcode/graphs/WordLadderII.java) + 5. [hashtables](/src/main/java/com/leetcode/hashtables) + - [ContainsDuplicates](/src/main/java/com/leetcode/hashtables/ContainsDuplicates.java) + - [IsomorphicStrings](/src/main/java/com/leetcode/hashtables/IsomorphicStrings.java) + - [MyHashMap](/src/main/java/com/leetcode/hashtables/MyHashMap.java) + - [MyHashSet](/src/main/java/com/leetcode/hashtables/MyHashSet.java) + - [RepeatedDnaSequence](/src/main/java/com/leetcode/hashtables/RepeatedDnaSequence.java) + - [ShortestWordDistanceII](/src/main/java/com/leetcode/hashtables/ShortestWordDistanceII.java) + - [TwoSumIII](/src/main/java/com/leetcode/hashtables/TwoSumIII.java) + - [slidingwindow](/src/main/java/com/leetcode/hashtables/slidingwindow) + 6. [heaps](/src/main/java/com/leetcode/heaps) + - [KthLargestElementInArray](/src/main/java/com/leetcode/heaps/KthLargestElementInArray.java) + - [TopKFrequentElements](/src/main/java/com/leetcode/heaps/TopKFrequentElements.java) + 7. [linkedlists](/src/main/java/com/leetcode/linkedlists) + - [AddOneToNumberInList](/src/main/java/com/leetcode/linkedlists/AddOneToNumberInList.java) + - [LinkedListCycleII](/src/main/java/com/leetcode/linkedlists/LinkedListCycleII.java) + - [Node](/src/main/java/com/leetcode/linkedlists/Node.java) + 8. [math](/src/main/java/com/leetcode/math) + - [BestMeetingPoint](/src/main/java/com/leetcode/math/BestMeetingPoint.java) + - [ExcelSheetColumnNumber](/src/main/java/com/leetcode/math/ExcelSheetColumnNumber.java) + - [ReverseInteger](/src/main/java/com/leetcode/math/ReverseInteger.java) + 9. [recursion](/src/main/java/com/leetcode/recursion) + - [BestMeetingPoint](/src/main/java/com/leetcode/recursion/BestMeetingPoint.java) + - [ExcelSheetColumnNumber](/src/main/java/com/leetcode/recursion/ExcelSheetColumnNumber.java) + - [ReverseInteger](/src/main/java/com/leetcode/recursion/ReverseInteger.java) + 10. [stacks](/src/main/java/com/leetcode/stacks) + - [ExclusiveTimeOfFunctions](/src/main/java/com/leetcode/stacks/ExclusiveTimeOfFunctions.java) + - [ReversePolishNotation](/src/main/java/com/leetcode/stacks/ReversePolishNotation.java) + 11. [strings](/src/main/java/com/leetcode/strings) + - [AnagramsInString](/src/main/java/com/leetcode/strings/AnagramsInString.java) + - [CountAndSay](/src/main/java/com/leetcode/strings/CountAndSay.java) + - [LongestCommonPrefix](/src/main/java/com/leetcode/strings/LongestCommonPrefix.java) + - [RansomNote](/src/main/java/com/leetcode/strings/RansomNote.java) + - [ReverseStringII](/src/main/java/com/leetcode/strings/ReverseStringII.java) + - [ReverseVowels](/src/main/java/com/leetcode/strings/ReverseVowels.java) + - [StrStr](/src/main/java/com/leetcode/strings/StrStr.java) + - [StringCompression](/src/main/java/com/leetcode/strings/StringCompression.java) + - [UniqueCharacterInString](/src/main/java/com/leetcode/strings/UniqueCharacterInString.java) + - [ValidPalindrome](/src/main/java/com/leetcode/strings/ValidPalindrome.java) + 12. [trees](/src/main/java/com/leetcode/trees) + - [BinaryTreeUpsideDown](/src/main/java/com/leetcode/trees/BinaryTreeUpsideDown.java) + - [BinaryTreeZigZagLevelOrderTraversal](/src/main/java/com/leetcode/trees/BinaryTreeZigZagLevelOrderTraversal.java) + - [ClosestBinarySearchTreeValue](/src/main/java/com/leetcode/trees/ClosestBinarySearchTreeValue.java) + - [ClosestBinarySearchTreeValueII](/src/main/java/com/leetcode/trees/ClosestBinarySearchTreeValueII.java) + - [LeavesOfBinaryTree](/src/main/java/com/leetcode/trees/LeavesOfBinaryTree.java) + - [SecondMinNodeInBinaryTree](/src/main/java/com/leetcode/trees/SecondMinNodeInBinaryTree.java) + - [SerializeDeserializeBinaryTree](/src/main/java/com/leetcode/trees/SerializeDeserializeBinaryTree.java) + - [SymmetricTree](/src/main/java/com/leetcode/trees/SymmetricTree.java) + - [TreeNode](/src/main/java/com/leetcode/trees/TreeNode.java) + 13. [trie](/src/main/java/com/leetcode/trie) + - [LongestWord](/src/main/java/com/leetcode/trie/LongestWord.java) 4. [HackerRank](/src/main/java/com/hackerrank).