gitextract_ew93x48r/ ├── .gitignore ├── .idea/ │ ├── misc.xml │ └── vcs.xml ├── C++/ │ ├── Arrays/ │ │ └── Trapping the rain water.cpp │ ├── Bit Manipulation/ │ │ ├── Checking Whether K-th Bit is Set or Not.cpp │ │ ├── Clearing the K-th bit of a number.cpp │ │ ├── Setting the K-th bit of a number.cpp │ │ ├── Toggling Rightmost Set Bit of a number.cpp │ │ └── Toggling the K-th bit of a number.cpp │ ├── Dynamic Programming/ │ │ ├── Edit Distance.cpp │ │ ├── Longest Common Subsequence.cpp │ │ ├── Longest Common Substring.cpp │ │ ├── Longest Increasing Subsequence.cpp │ │ ├── Longest palindromic Subsequence.cpp │ │ └── Matrix Chain Multiplication.cpp │ ├── Graph Algorithms/ │ │ ├── All Pair Shortest Path Problem.cpp │ │ ├── Breadth First Search.cpp │ │ ├── Connected Components Algorithm DFS.cpp │ │ ├── Depth First Search.cpp │ │ ├── Kruskal's Minimum Spanning Tree Algorithm.cpp │ │ ├── Prims Minimum Spanning Tree Algorithm.cpp │ │ ├── Recursive Depth First Search.cpp │ │ ├── Single Shortest Path Bellman Ford Algorithm.cpp │ │ ├── Single Source Shortest Path Dijkstra Algorithm.cpp │ │ └── Topological Sorting.cpp │ ├── Heaps - Priority Queues/ │ │ └── K-th Largest element of the stream.cpp │ ├── Linked List/ │ │ └── Reverse a linked list recursively.cpp │ ├── Number Theory Algorithms/ │ │ ├── Divisors.cpp │ │ └── Sieve of Eratosthenes.cpp │ ├── Recursion/ │ │ ├── Partition of array on the pivot.cpp │ │ └── Permutation of a string.cpp │ ├── Segment Tree/ │ │ └── Segment Tree.cpp │ ├── Stacks - Queue/ │ │ └── CircularQueue.cpp │ ├── String Algorithms/ │ │ ├── KMP.cpp │ │ └── Trie.cpp │ └── Union Find/ │ └── Union Find.cpp ├── LICENSE ├── README.md ├── build.gradle ├── gradle/ │ └── wrapper/ │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── python/ │ ├── array/ │ │ ├── arrayaddition.py │ │ ├── commonthreesortedarray.py │ │ ├── countinversionofsize3.py │ │ ├── flip0smaximum1s.py │ │ ├── longestsamesumspan.py │ │ ├── maximumsumpathtwoarrays.py │ │ ├── maxproductsubarray.py │ │ ├── numberoftrianglesunsortedarray.py │ │ ├── positiveandnegativealternativelymaintainingorder.py │ │ ├── rearrangearrayperindex.py │ │ ├── reorderarraybyindex.py │ │ ├── rotationwithmaxsum.py │ │ ├── smallestintegernotrepresentedbysubsetsum.py │ │ ├── tripletsumlessthantotal.py │ │ └── zigzagarrangement.py │ ├── dynamic/ │ │ ├── bitonicsequence.py │ │ ├── boxstacking.py │ │ ├── breakword.py │ │ ├── coin_change_num_ways.py │ │ ├── coinchangingmincoins.py │ │ ├── count_num_A.py │ │ ├── count_num_binary_without_consec_1.py │ │ ├── cutting_rod.py │ │ ├── dice_throw_ways.py │ │ ├── editdistance.py │ │ ├── egg_drop.py │ │ ├── knapsack_01.py │ │ ├── kth_ugly_number.py │ │ ├── longest_common_subsequence.py │ │ ├── longest_common_substring.py │ │ ├── longest_increasing_subsequence.py │ │ ├── longest_palindromic_subsequence.py │ │ ├── matrix_chain_order.py │ │ ├── maximum_increasing_subsequence.py │ │ ├── nth_fibonacci.py │ │ ├── num_bst.py │ │ ├── num_paths_nm_matrix.py │ │ ├── num_trees_preorder.py │ │ ├── optimal_bst.py │ │ ├── stockbuysellktransactions.py │ │ ├── string_interleaving.py │ │ ├── sub_rectangular_maximum_sum.py │ │ ├── subset_sum.py │ │ ├── symbolexpressionevaluation.py │ │ └── weighted_job_scheduling_max_profit.py │ ├── geometry/ │ │ └── skylinedrawing.py │ ├── graph/ │ │ ├── cycledirectedgraph.py │ │ ├── cycleundirectedgraph.py │ │ ├── dijkstrashortestpath.py │ │ ├── disjointset.py │ │ ├── floydwarshall.py │ │ ├── fordfulkerson.py │ │ ├── graph.py │ │ ├── graphtraversal.py │ │ ├── kruskalmst.py │ │ ├── primmst.py │ │ ├── priorityqueue.py │ │ └── topologicalsort.py │ ├── recursion/ │ │ ├── setpairtogether.py │ │ └── stringpermutation.py │ ├── string/ │ │ ├── Z_Algorithm.py │ │ ├── knuthmorrispratt.py │ │ └── rabinkarp.py │ └── tree/ │ ├── binary_tree.py │ ├── construct_tree_from_inorder_preorder.py │ ├── fenwick_tree.py │ ├── largest_bst_in_binary_tree.py │ ├── max_depth_binary_tree.py │ ├── morris_traversal.py │ └── segmenttreesum.py ├── src/ │ └── com/ │ └── interview/ │ ├── array/ │ │ ├── AdditiveNumber.java │ │ ├── ArrayAddition.java │ │ ├── BestMeetingPoint.java │ │ ├── BuySellStockProfit.java │ │ ├── CheckIfArrayElementsAreConsecutive.java │ │ ├── ChunkMerge.java │ │ ├── CommonThreeSortedArray.java │ │ ├── ConvertAnArrayIntoDecreaseIncreaseFashion.java │ │ ├── CountInversionOfSize3.java │ │ ├── CountSmallerOnRight.java │ │ ├── DivideNumbersInEqualGroupWithClosestSum.java │ │ ├── DuplicateNumberDetection.java │ │ ├── DuplicateWithinkIndices.java │ │ ├── FindElementsOccurringNByKTimesTetris.java │ │ ├── FirstPositiveMissing.java │ │ ├── Flip0sMaximum1s.java │ │ ├── FourSum.java │ │ ├── GasStationCircle.java │ │ ├── GreedyTextJustification.java │ │ ├── GroupElementsInSizeM.java │ │ ├── HIndex.java │ │ ├── IncreasingSubsequnceOfLength3WithMaxProduct.java │ │ ├── IncreasingTripletSubsequence.java │ │ ├── JumpGame.java │ │ ├── KadaneWrapArray.java │ │ ├── KthElementInArray.java │ │ ├── KthLargestInTwoSortedArray.java │ │ ├── LargerElementOnRight.java │ │ ├── LargestMountain.java │ │ ├── LargestSubArrayWithEqual0sAnd1s.java │ │ ├── LeetCodeCandy.java │ │ ├── LongestConsecutiveSubsequence.java │ │ ├── LongestIncreasingSubSequenceOlogNMethod.java │ │ ├── LongestSameSumSpan.java │ │ ├── LongestSubstringWithAtMost2Char.java │ │ ├── MaxNumberFromTwoArray.java │ │ ├── MaxProductSubarray.java │ │ ├── MaxRepeatingNumber.java │ │ ├── MaximumGap.java │ │ ├── MaximumIminusJSuchThatAiGTAj.java │ │ ├── MaximumMinimumArrangement.java │ │ ├── MaximumOfSubarrayOfSizeK.java │ │ ├── MaximumSumPathTwoArrays.java │ │ ├── MaximumSumThreeNonOverlappingSubarray.java │ │ ├── MeetingRooms.java │ │ ├── MinimumDistanceBetweenTwoNumbers.java │ │ ├── MinimumNumberFromSequence.java │ │ ├── MinimumSortedWhichSortsEntireArray.java │ │ ├── MissingRanges.java │ │ ├── MoveAllZerosToEnd.java │ │ ├── MultiplyAllFieldsExceptOwnPosition.java │ │ ├── NthElementOfCountNumberSequence.java │ │ ├── NumberOfTrianglesInUnsortedArray.java │ │ ├── PositiveAndNegativeNumberAlternatively.java │ │ ├── PositiveAndNegativeNumberAlternativelyMaintainingOrder.java │ │ ├── RearrangeArrayPerIndex.java │ │ ├── RearrangeSuchThatArriBecomesArrArri.java │ │ ├── ReorderArrayByIndex.java │ │ ├── RepeatingAndMissingNumber.java │ │ ├── RotationWithMaxSum.java │ │ ├── SelfCrossing.java │ │ ├── ShortestPalindrome.java │ │ ├── SmallestIntegerNotRepresentedBySubsetSum.java │ │ ├── SmallestSubarrayWithAtleastKSum.java │ │ ├── SortedArrayTransformation.java │ │ ├── StableMarriageProblem.java │ │ ├── SubarrayWithGivenSum.java │ │ ├── SummaryRanges.java │ │ ├── ThreeSumSmallerThanTarget.java │ │ ├── TrappingWater.java │ │ ├── TripletInArray.java │ │ ├── TripletSumLessThanTotal.java │ │ ├── TugOfWar.java │ │ ├── WaterContainer.java │ │ ├── WiggleSort.java │ │ └── ZigZagArrangement.java │ ├── binarysearch/ │ │ ├── ArithmeticProgressionSearch.java │ │ ├── BinarySearch.java │ │ ├── CircularBinarySearch.java │ │ ├── CountNDistinctPairsWithDifferenceK.java │ │ ├── FirstOccurrenceOfNumberInSortedArray.java │ │ ├── FloorAndCeilingSortedArray.java │ │ ├── MedianOfTwoSortedArray.java │ │ ├── MedianOfTwoSortedArrayOfDifferentLength.java │ │ ├── MinimumInSortedRotatedArray.java │ │ ├── MissingNumberInConsecutiveNumbers.java │ │ ├── MonotonicallyIncreasingFunctionBecomesPositive.java │ │ ├── NumberOfPairWithXPowerYGreaterThanYPowerX.java │ │ ├── PeakElement.java │ │ ├── SearchForRange.java │ │ ├── SearchInsertPosition.java │ │ ├── SortedAndRotatedArraySearch.java │ │ └── SquareRootOfNumber.java │ ├── bits/ │ │ ├── AddTwoNumberInBinaryRepresentation.java │ │ ├── BitRotation.java │ │ ├── ByteAsStorage.java │ │ ├── CountBits.java │ │ ├── CountingBitsTillNum.java │ │ ├── DrawHorizontalLine.java │ │ ├── FindNumberOccurringOnceOtherNumbers3Times.java │ │ ├── GrayCode.java │ │ ├── InsertMintoNiTojBits.java │ │ ├── MaxProductWordLength.java │ │ ├── MissingNumbers.java │ │ ├── NextHigherAndNextLowerWithSameNumberBits.java │ │ ├── NextPowerOf2.java │ │ ├── NumberOccuringOddTimes.java │ │ ├── NumberOfBitsFlipToConvertNToM.java │ │ ├── RealNumberToBinary.java │ │ ├── RepeatedDnaSequence.java │ │ ├── ReverseBits.java │ │ ├── SquareOfNumber.java │ │ ├── SwapOddEvenBits.java │ │ ├── SwapTwoBits.java │ │ └── WinnerWithBeautifulNumber.java │ ├── dynamic/ │ │ ├── BitonicSequence.java │ │ ├── BoxStacking.java │ │ ├── BreakMultipleWordsWithNoSpaceIntoSpace.java │ │ ├── BurstBalloons.java │ │ ├── CoinChanging.java │ │ ├── CoinChangingMinimumCoin.java │ │ ├── CountAs.java │ │ ├── CountNumberOfBinaryWithoutConsecutive1s.java │ │ ├── CountNumberOfTreePreorder.java │ │ ├── CountNumberOfTreesInBST.java │ │ ├── CutRodToMinimizeCost.java │ │ ├── CuttingRod.java │ │ ├── DecodeWays.java │ │ ├── DiceThrowWays.java │ │ ├── DistinctSubsequence.java │ │ ├── DungeonGame.java │ │ ├── EditDistance.java │ │ ├── EggDropping.java │ │ ├── ExpressionEvaluation.java │ │ ├── FibonacciSeries.java │ │ ├── Immutable2DSumRangeQuery.java │ │ ├── Knapsack01.java │ │ ├── LongestCommonSubsequence.java │ │ ├── LongestCommonSubstring.java │ │ ├── LongestEvenLengthSubstringOfEqualHalf.java │ │ ├── LongestIncreasingPath.java │ │ ├── LongestIncreasingSubsequence.java │ │ ├── LongestPalindromicSubsequence.java │ │ ├── MatrixMultiplicationCost.java │ │ ├── MaxSumForNonAdjacentElements.java │ │ ├── MaximizeSkiGates.java │ │ ├── MaximumLengthChainPair.java │ │ ├── MaximumProductCutting.java │ │ ├── MaximumRectangularSubmatrixOf1s.java │ │ ├── MaximumSizeSubMatrix.java │ │ ├── MaximumSumSubsequence.java │ │ ├── MinCostPath.java │ │ ├── MinJumpToReachEnd.java │ │ ├── MinimumCostTrainTicket.java │ │ ├── MinimumNumberOfPerfectSquares.java │ │ ├── MinimumTriangleSum.java │ │ ├── NPotGold.java │ │ ├── NumberOfPathsInMxNMatrix.java │ │ ├── NumberOfWaysToScorePoints.java │ │ ├── OptimalTreeSearch.java │ │ ├── PaintHouse.java │ │ ├── PalindromePartition.java │ │ ├── PhoneDialNumberOfCombinationOfSizeK.java │ │ ├── RegexMatching.java │ │ ├── RemoveFromEndToMake2IntoMinGreaterThanMax.java │ │ ├── ScrambledString.java │ │ ├── StockBuySellKTransactions.java │ │ ├── SubRectangularMatrixWithMaximumSum.java │ │ ├── SubsetSum.java │ │ ├── SubsquareSurrounedByXs.java │ │ ├── SymbolExpressionEvaluation.java │ │ ├── TextJustification.java │ │ ├── TwoStringInterleavingToFormThird.java │ │ ├── UglyNumbers.java │ │ ├── WeightedJobSchedulingMaximumProfit.java │ │ └── WildCardMatching.java │ ├── geometry/ │ │ ├── ClosestPairOfPoints.java │ │ ├── GrahamScanConvexHull.java │ │ ├── JarvisMarchConvexHull.java │ │ ├── MaximumPointsOnSameLine.java │ │ └── SkylineDrawing.java │ ├── graph/ │ │ ├── AlientDictionary.java │ │ ├── AllCyclesInDirectedGraphJohnson.java │ │ ├── AllCyclesInDirectedGraphTarjan.java │ │ ├── ArticulationPoint.java │ │ ├── BellmanFordShortestPath.java │ │ ├── BinaryMaxHeap.java │ │ ├── BinaryMinHeap.java │ │ ├── BiparteGraph.java │ │ ├── Boggle.java │ │ ├── Bridge.java │ │ ├── CloneDirectedGraph.java │ │ ├── CloneGraph.java │ │ ├── ConvertOneWordToAnother.java │ │ ├── CourseSchedule.java │ │ ├── CycleInDirectedGraph.java │ │ ├── CycleUndirectedGraph.java │ │ ├── DAGShortestPathTopological.java │ │ ├── DijkstraShortestPath.java │ │ ├── DirectedGraphConnectivity.java │ │ ├── DisjointSet.java │ │ ├── EulerianPathAndCircuit.java │ │ ├── EvaluateDivison.java │ │ ├── FillOsWIthXsIfSurroundedByXs.java │ │ ├── FloodFillAlgorithm.java │ │ ├── FloydWarshallAllPairShortestPath.java │ │ ├── FordFulkerson.java │ │ ├── Graph.java │ │ ├── GraphColoring.java │ │ ├── GraphTraversal.java │ │ ├── HamiltonianCycle.java │ │ ├── KruskalMST.java │ │ ├── MaximumBiparteMatching.java │ │ ├── MinimumHeightTree.java │ │ ├── NumberOfIsland.java │ │ ├── NumberOfIslandDynamic.java │ │ ├── NumberofTriangles.java │ │ ├── PrimMST.java │ │ ├── PrintAllPathFromSourceToDestination.java │ │ ├── ShortestDistanceFromExit.java │ │ ├── StronglyConnectedComponent.java │ │ ├── TarjanStronglyConnectedComponent.java │ │ ├── TopologicalSort.java │ │ ├── TransitiveClosure.java │ │ ├── TravelingSalesmanHeldKarp.java │ │ ├── ValidTree.java │ │ ├── WallsAndGates.java │ │ └── WordLadder.java │ ├── linklist/ │ │ ├── AddNumberRepresentedByLinkList.java │ │ ├── CopyLinkListWIthArbitPointer.java │ │ ├── DeleteDuplicateNodes.java │ │ ├── DeleteNAfterMNodes.java │ │ ├── DeleteNodeWithGreaterValueOnRight.java │ │ ├── DoubleLinkList.java │ │ ├── Flatten2DList.java │ │ ├── FlattenLinkList.java │ │ ├── InsertionSortLinkList.java │ │ ├── LRUCache.java │ │ ├── LRUCacheLeetCode.java │ │ ├── LinkList.java │ │ ├── LinkListIsPalindrome.java │ │ ├── LinkListToCompleteBinaryTree.java │ │ ├── LoopInLinkList.java │ │ ├── MergeForLargestSum.java │ │ ├── MergeSortLinkList.java │ │ ├── MiddleElementOfLinkList.java │ │ ├── MultiplyTwoNumbersLinkList.java │ │ ├── QuickSortSingleLinkList.java │ │ ├── RemoveDuplicatesSortedList.java │ │ ├── RemoveMiddleElementsOfLineSegment.java │ │ ├── ReorderList.java │ │ ├── ReverseAlternateKNodes.java │ │ ├── ReverseAlternateNodeAndAppendAtEnd.java │ │ ├── ReverseKNodes.java │ │ ├── RotateList.java │ │ ├── ShuffleMerge.java │ │ ├── SortNearlySortedList.java │ │ ├── SortedCircularLinkList.java │ │ ├── SortedLLToBalancedBST.java │ │ ├── StackWithLinkListMiddleOperation.java │ │ ├── SwapTwoNodesInDoubleLL.java │ │ └── TripletToSumInLinkList.java │ ├── misc/ │ │ ├── AddingTwoSetOfIntervals.java │ │ ├── AngleBetweenHourAndMinuteHand.java │ │ ├── BulbSwitcher.java │ │ ├── CandiesProblem.java │ │ ├── ContainsNumberWithinKDistance.java │ │ ├── ConvertNumberIntoBase26.java │ │ ├── CountRanges.java │ │ ├── DayDifferenceBetweenTwoDates.java │ │ ├── DifferenceBetweenTwoTime.java │ │ ├── FindingCelebrity.java │ │ ├── FloatPointConversion.java │ │ ├── FourPointsFormSquare.java │ │ ├── GetKthPermutation.java │ │ ├── HammingDistanceBetweenPair.java │ │ ├── InsertInterval.java │ │ ├── IntegerListParser.java │ │ ├── KthLargestInRowiseColumnWiseSorted2DArray.java │ │ ├── LoadBalancers.java │ │ ├── NestedIterator.java │ │ ├── NumberToWord.java │ │ ├── PrimeNumbersBeforeN.java │ │ ├── Read4Function.java │ │ ├── RomanNumberToDecimal.java │ │ └── SparseTableRangeMinimumQuery.java │ ├── multiarray/ │ │ ├── Fill2DMatrixWith1.java │ │ ├── GameOfLife.java │ │ ├── LongestConsecutiveIntegerInUnsorted2DArray.java │ │ ├── MatrixCalculation.java │ │ ├── MatrixFindAllSubSquareRectangleMatrix.java │ │ ├── MatrixInDiagonalOrder.java │ │ ├── MatrixOf0sAnd1s.java │ │ ├── MoveCellPerCellValue.java │ │ ├── Mutable2DSumRangeQuery.java │ │ ├── RotateImage.java │ │ ├── ShortestDistanceFromAllBuildings.java │ │ ├── SmallestRectangleBlackPixel.java │ │ ├── SpiralGeneration.java │ │ ├── SpiralPrinting.java │ │ └── TilingProblem.java │ ├── multithreaded/ │ │ ├── BoundedBlockingQueue.java │ │ ├── CountingWord.java │ │ ├── DependencyTaskExecutor.java │ │ ├── FillupMatrix.java │ │ ├── MinMaxKeeper.java │ │ ├── PrintInSequence.java │ │ ├── RealTimeCounter.java │ │ ├── SingleQueueDomainTableUpdate.java │ │ ├── SpinLockMutex.java │ │ ├── ThreadPoolExample.java │ │ └── ThreadPoolImpl.java │ ├── number/ │ │ ├── AggregateNumber.java │ │ ├── AllStrobogrammaticNumber.java │ │ ├── ArithemeticProgressionExists.java │ │ ├── ArrayMultiplication.java │ │ ├── BasicCalculator.java │ │ ├── BinomialCoefficient.java │ │ ├── ConvertToBaseN.java │ │ ├── CountNoOf2s.java │ │ ├── CountNumbersNotIncluding4.java │ │ ├── DivisionWithoutDivisionOperator.java │ │ ├── EuclideanAlgoForGCD.java │ │ ├── FactorialOfLargeNumber.java │ │ ├── GenerateSignature.java │ │ ├── LargestMultipleOf3inArray.java │ │ ├── LuckyNumbers.java │ │ ├── MedianOf3Number.java │ │ ├── MthNumberInNSizeArray.java │ │ ├── NBy2PairSumToK.java │ │ ├── NextLargestPalindrome.java │ │ ├── NotIncluding4.java │ │ ├── NumberOfCombinationsForStairs.java │ │ ├── PermutationBiggerThanNumber.java │ │ ├── PermutationLargerThanGivenArray.java │ │ ├── PowerFunction.java │ │ ├── RearrangeNumberInArrayToFormLargestNumber.java │ │ ├── RussianPeasantMultiplication.java │ │ ├── SmallestNumberGreaterThanGiveNumberIncreasingSequence.java │ │ ├── SquareRoot.java │ │ ├── StrobogrammaticNumber.java │ │ ├── Trailing0sinFactorial.java │ │ └── UniquePartitionOfInteger.java │ ├── playground/ │ │ └── TestInnerClass.java │ ├── random/ │ │ ├── Rand7UsingRand5.java │ │ ├── RandomCountrySelectionByPopluation.java │ │ ├── SelectMRandomNumbersInStream.java │ │ └── ShuffleArray.java │ ├── recursion/ │ │ ├── AllAdjacentCombination.java │ │ ├── Bracketology.java │ │ ├── ChainWordsToFormCircle.java │ │ ├── Combination.java │ │ ├── CombinationOfSizeK.java │ │ ├── CombinationWithStar.java │ │ ├── DifferentWaysToAddParentheses.java │ │ ├── FancyShuffle.java │ │ ├── InterpretationOfArray.java │ │ ├── KeyPadPermutation.java │ │ ├── LongestAbsolutePath.java │ │ ├── MinimumEditForReversePolishNotation.java │ │ ├── NQueenProblem.java │ │ ├── OneEditApart.java │ │ ├── OperatorAdditionForTarget.java │ │ ├── OptimalDivision.java │ │ ├── PrintAllPathFromTopLeftToBottomRight.java │ │ ├── PrintAllSubsequence.java │ │ ├── PrintArrayInAdjacentWay.java │ │ ├── PrintArrayInCustomizedFormat.java │ │ ├── PrintSumCombination.java │ │ ├── ReconstructItinerary.java │ │ ├── RemoveInvalidParenthesis.java │ │ ├── RestoreIPAddresses.java │ │ ├── SetPairTogether.java │ │ ├── StringInterleaving.java │ │ ├── StringPermutation.java │ │ ├── StringPermutationRotation.java │ │ ├── SudokuSolver.java │ │ ├── WordCombination.java │ │ └── WordPattern.java │ ├── regex/ │ │ └── MultiSpaceReplacement.java │ ├── sort/ │ │ ├── CountingSort.java │ │ ├── HeapSort.java │ │ ├── IterativeQuickSort.java │ │ ├── MergeSort.java │ │ ├── PanCakeSorting.java │ │ ├── QuickSort.java │ │ ├── RadixSort.java │ │ ├── Sort0toN3.java │ │ └── SortArrayByFrequence.java │ ├── stackqueue/ │ │ ├── CircularQueue.java │ │ ├── MaximumHistogram.java │ │ ├── MedianFinder.java │ │ ├── RealTimeCounter.java │ │ ├── RealTimeCounterUsingCircularQueue.java │ │ ├── RemoveDuplicateMaintainingOrder.java │ │ ├── RemoveExtraBrackets.java │ │ ├── ReverseStackUsingRecursion.java │ │ ├── SimplyPath.java │ │ └── StockSpanProblem.java │ ├── string/ │ │ ├── AnagramOfFirstAsSubstring.java │ │ ├── CycleLeaderIteration.java │ │ ├── GroupAnagramsTogether.java │ │ ├── InPlaceTransformationOfString.java │ │ ├── LexicographicRankInPermutation.java │ │ ├── LongestPalindromeSubstring.java │ │ ├── LongestSubstringWithKDistinctCharacters.java │ │ ├── LongestSubstringWithoutRepetingCharacter.java │ │ ├── MultiplyStrings.java │ │ ├── NTMatch.java │ │ ├── PalindromePair.java │ │ ├── PrintAnagramTogether.java │ │ ├── RabinKarpSearch.java │ │ ├── RearrangeDuplicateCharsdDistanceAway.java │ │ ├── RemoveConsecutiveDuplicate.java │ │ ├── RunLengthEncoding.java │ │ ├── SmallestWindowContaingAllCharacters.java │ │ ├── StringEncoderDecoder.java │ │ ├── SubstringSearch.java │ │ ├── SubtringWithConcatentationOfWords.java │ │ ├── ValidPalindrome.java │ │ ├── ValidWordAbbreviation.java │ │ ├── WordAbbreviationCombination.java │ │ └── ZAlgorithm.java │ ├── suffixprefix/ │ │ ├── SuffixArray.java │ │ ├── SuffixTree.java │ │ ├── TernaryTree.java │ │ └── Trie.java │ └── tree/ │ ├── AVLTree.java │ ├── AddGreaterValueNodeToEveryNode.java │ ├── ArbitaryTreeToChildSumTree.java │ ├── BSTOneChildPreOrderTraversal.java │ ├── BSTSearch.java │ ├── BTree.java │ ├── BinaryTree.java │ ├── BinaryTreeFromParentRepresentation.java │ ├── BinaryTreeMaximumPathSum.java │ ├── BinaryTreeToCircularLinkList.java │ ├── BinaryTreeToDoubleLinkList.java │ ├── BinaryTreeToSortedLinkList.java │ ├── BoundaryTraversal.java │ ├── ClosestValueBinaryTree.java │ ├── ConnectNodesAtSameLevel.java │ ├── ConstructAllBinaryTreeFromInorderTraversal.java │ ├── ConstructBSTFromPreOrderArray.java │ ├── ConstructFullTreeFromPreOrderPostOrder.java │ ├── ConstructTreeFromInOrderPreOrder.java │ ├── ConstructTreeFromLevelOrderInOrder.java │ ├── ConstructTreeFromPreOrderTraversalWith0or2Child.java │ ├── ContructTreeFromInOrderTraversalRootGreaterThanChild.java │ ├── ContructTreeFromInorderPostOrder.java │ ├── CountNodesCompleteTree.java │ ├── CountNumberOfSmallerElementOnRight.java │ ├── CountPathSum.java │ ├── CountUnivalueTree.java │ ├── CousinNodes.java │ ├── DegenerateBinaryTreeToSortedLL.java │ ├── DiameterOfTree.java │ ├── FenwickTree.java │ ├── FlattenLinkListToBinaryTreePreorder.java │ ├── HeightBalanced.java │ ├── HuffmanEncoding.java │ ├── IdenticalTrees.java │ ├── InorderSuccessor.java │ ├── IntervalTree.java │ ├── IsBST.java │ ├── IsCompleteBinaryTree.java │ ├── IsPreOrderArrayBST.java │ ├── KClosestValueInBinaryTree.java │ ├── LargestBSTInBinaryTree.java │ ├── LargestIndependentSetInTree.java │ ├── LeavesOfBinaryTree.java │ ├── LevelOrderTraversal.java │ ├── LevelOrderTraversalInReverse.java │ ├── LongestConsecutiveSequence.java │ ├── LowestCommonAncestorInBinaryTree.java │ ├── LowestCommonAncestoryBinarySearchTree.java │ ├── MorrisTraversal.java │ ├── NextInorderSuccessorIterator.java │ ├── NextInorderSuccessorOfTwoTree.java │ ├── NodesAtDistanceK.java │ ├── NodesWithNoSibling.java │ ├── PathSum.java │ ├── PopulateInOrderSuccessor.java │ ├── PrintPostOrderFromPreOrderInOrder.java │ ├── PrintTwoBSTInSortedForm.java │ ├── RedBlackTree.java │ ├── RootToLeafToSum.java │ ├── SameTree.java │ ├── SegmentTree.java │ ├── SegmentTreeMinimumRangeQuery.java │ ├── SerializeDeserializeBinaryTree.java │ ├── SinkNegativeToBottom.java │ ├── SizeOfBinaryTree.java │ ├── SortedArrayToBST.java │ ├── SortedOrderPrintCompleteTreeArray.java │ ├── SuccinctTree.java │ ├── SumTree.java │ ├── TreeIsomorphism.java │ ├── TreeTraversalInSpiralOrder.java │ ├── TreeTraversalLevelByLevel.java │ ├── TreeTraversals.java │ ├── UpsidedownBinaryTree.java │ ├── VertexCoverBinaryTreeDP.java │ ├── VerticalOrder.java │ └── VerticalTreePrinting.java └── test/ └── com/ └── interview/ ├── TestUtil.java ├── array/ │ ├── AdditiveNumberTest.java │ ├── ArrayAdditionTest.java │ ├── MaximumMinimumArrangementTest.java │ ├── MeetingRoomsTest.java │ ├── MultiplyAllFieldsExceptOwnPositionTest.java │ ├── NumberOfTriangledInUnsortedArrayTest.java │ └── ThreeSumSmallerThanTargetTest.java ├── bits/ │ ├── CountingBitsTillNumTest.java │ └── MaxProductWordLengthTest.java ├── dynamic/ │ ├── DecodeWaysTest.java │ └── PalindromePartitionTest.java ├── graph/ │ ├── CourseScheduleTest.java │ ├── TravelingSalesmanHeldKarpTest.java │ └── WallsAndGatesTest.java ├── linklist/ │ └── DeleteDuplicateNodesTest.java ├── misc/ │ └── IntegerListParserTest.java ├── multiarray/ │ └── Mutable2DSumRangeQueryTest.java ├── number/ │ ├── AllStrobogrammaticNumberTest.java │ └── BasicCalculatorTest.java ├── recursion/ │ └── RestoreIPAddressesTest.java ├── string/ │ ├── LongestSubstringWithKDistinctCharactersTest.java │ ├── PalindromePairTest.java │ ├── StringEncoderDecoderTest.java │ ├── ValidPalindromeTest.java │ └── ValidWordAbbreviationTest.java ├── suffixprefix/ │ └── TrieTest.java └── tree/ ├── KClosestValueInBinaryTreeTest.java └── VerticalOrderTest.java