gitextract_i24buj0h/ ├── .clang-format ├── .devcontainer/ │ ├── Dockerfile │ └── devcontainer.json ├── .github/ │ ├── CODEOWNERS │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.yml │ │ ├── config.yml │ │ ├── feature_request.yml │ │ └── other.yml │ ├── dependabot.yml │ ├── pull_request_template.md │ └── workflows/ │ ├── build.yml │ ├── clang-format-lint.yml │ ├── close-failed-prs.yml │ ├── codeql.yml │ ├── infer.yml │ ├── project_structure.yml │ ├── scripts/ │ │ └── check_structure.py │ ├── stale.yml │ └── update-directorymd.yml ├── .gitignore ├── .gitpod.dockerfile ├── .gitpod.yml ├── .inferconfig ├── CONTRIBUTING.md ├── DIRECTORY.md ├── LICENSE ├── README.md ├── checkstyle.xml ├── pmd-custom_ruleset.xml ├── pmd-exclude.properties ├── pom.xml ├── spotbugs-exclude.xml └── src/ ├── main/ │ └── java/ │ └── com/ │ └── thealgorithms/ │ ├── audiofilters/ │ │ ├── EMAFilter.java │ │ └── IIRFilter.java │ ├── backtracking/ │ │ ├── AllPathsFromSourceToTarget.java │ │ ├── ArrayCombination.java │ │ ├── Combination.java │ │ ├── CombinationSum.java │ │ ├── CrosswordSolver.java │ │ ├── FloodFill.java │ │ ├── KnightsTour.java │ │ ├── MColoring.java │ │ ├── MazeRecursion.java │ │ ├── NQueens.java │ │ ├── ParenthesesGenerator.java │ │ ├── Permutation.java │ │ ├── PowerSum.java │ │ ├── SubsequenceFinder.java │ │ ├── SudokuSolver.java │ │ ├── UniquePermutation.java │ │ ├── WordPatternMatcher.java │ │ └── WordSearch.java │ ├── bitmanipulation/ │ │ ├── BcdConversion.java │ │ ├── BinaryPalindromeCheck.java │ │ ├── BitRotate.java │ │ ├── BitSwap.java │ │ ├── BitwiseGCD.java │ │ ├── BooleanAlgebraGates.java │ │ ├── ClearLeftmostSetBit.java │ │ ├── CountBitsFlip.java │ │ ├── CountLeadingZeros.java │ │ ├── CountSetBits.java │ │ ├── FindNthBit.java │ │ ├── FirstDifferentBit.java │ │ ├── GenerateSubsets.java │ │ ├── GrayCodeConversion.java │ │ ├── HammingDistance.java │ │ ├── HigherLowerPowerOfTwo.java │ │ ├── HighestSetBit.java │ │ ├── IndexOfRightMostSetBit.java │ │ ├── IsEven.java │ │ ├── IsPowerTwo.java │ │ ├── LowestSetBit.java │ │ ├── ModuloPowerOfTwo.java │ │ ├── NextHigherSameBitCount.java │ │ ├── NonRepeatingNumberFinder.java │ │ ├── NumberAppearingOddTimes.java │ │ ├── NumbersDifferentSigns.java │ │ ├── OneBitDifference.java │ │ ├── OnesComplement.java │ │ ├── ParityCheck.java │ │ ├── ReverseBits.java │ │ ├── SingleBitOperations.java │ │ ├── SingleElement.java │ │ ├── SwapAdjacentBits.java │ │ ├── TwosComplement.java │ │ └── Xs3Conversion.java │ ├── ciphers/ │ │ ├── ADFGVXCipher.java │ │ ├── AES.java │ │ ├── AESEncryption.java │ │ ├── AffineCipher.java │ │ ├── AtbashCipher.java │ │ ├── Autokey.java │ │ ├── BaconianCipher.java │ │ ├── Blowfish.java │ │ ├── Caesar.java │ │ ├── ColumnarTranspositionCipher.java │ │ ├── DES.java │ │ ├── DiffieHellman.java │ │ ├── ECC.java │ │ ├── ElGamalCipher.java │ │ ├── HillCipher.java │ │ ├── MonoAlphabetic.java │ │ ├── OneTimePadCipher.java │ │ ├── PermutationCipher.java │ │ ├── PlayfairCipher.java │ │ ├── Polybius.java │ │ ├── ProductCipher.java │ │ ├── RSA.java │ │ ├── RailFenceCipher.java │ │ ├── SimpleSubCipher.java │ │ ├── Vigenere.java │ │ ├── XORCipher.java │ │ └── a5/ │ │ ├── A5Cipher.java │ │ ├── A5KeyStreamGenerator.java │ │ ├── BaseLFSR.java │ │ ├── CompositeLFSR.java │ │ ├── LFSR.java │ │ └── Utils.java │ ├── compression/ │ │ ├── ArithmeticCoding.java │ │ ├── BurrowsWheelerTransform.java │ │ ├── HuffmanCoding.java │ │ ├── LZ77.java │ │ ├── LZ78.java │ │ ├── LZW.java │ │ ├── MoveToFront.java │ │ ├── RunLengthEncoding.java │ │ └── ShannonFano.java │ ├── conversions/ │ │ ├── AffineConverter.java │ │ ├── AnyBaseToAnyBase.java │ │ ├── AnyBaseToDecimal.java │ │ ├── AnytoAny.java │ │ ├── Base64.java │ │ ├── BinaryToDecimal.java │ │ ├── BinaryToHexadecimal.java │ │ ├── BinaryToOctal.java │ │ ├── CoordinateConverter.java │ │ ├── DecimalToAnyBase.java │ │ ├── DecimalToBinary.java │ │ ├── DecimalToHexadecimal.java │ │ ├── DecimalToOctal.java │ │ ├── EndianConverter.java │ │ ├── HexToOct.java │ │ ├── HexaDecimalToBinary.java │ │ ├── HexaDecimalToDecimal.java │ │ ├── IPConverter.java │ │ ├── IPv6Converter.java │ │ ├── IntegerToEnglish.java │ │ ├── IntegerToRoman.java │ │ ├── MorseCodeConverter.java │ │ ├── NumberToWords.java │ │ ├── OctalToBinary.java │ │ ├── OctalToDecimal.java │ │ ├── OctalToHexadecimal.java │ │ ├── PhoneticAlphabetConverter.java │ │ ├── RgbHsvConversion.java │ │ ├── RomanToInteger.java │ │ ├── TemperatureConverter.java │ │ ├── TimeConverter.java │ │ ├── TurkishToLatinConversion.java │ │ ├── UnitConversions.java │ │ ├── UnitsConverter.java │ │ └── WordsToNumber.java │ ├── datastructures/ │ │ ├── Node.java │ │ ├── bags/ │ │ │ └── Bag.java │ │ ├── bloomfilter/ │ │ │ └── BloomFilter.java │ │ ├── buffers/ │ │ │ └── CircularBuffer.java │ │ ├── caches/ │ │ │ ├── FIFOCache.java │ │ │ ├── LFUCache.java │ │ │ ├── LIFOCache.java │ │ │ ├── LRUCache.java │ │ │ ├── MRUCache.java │ │ │ └── RRCache.java │ │ ├── crdt/ │ │ │ ├── GCounter.java │ │ │ ├── GSet.java │ │ │ ├── LWWElementSet.java │ │ │ ├── ORSet.java │ │ │ ├── PNCounter.java │ │ │ └── TwoPSet.java │ │ ├── disjointsetunion/ │ │ │ ├── DisjointSetUnion.java │ │ │ ├── DisjointSetUnionBySize.java │ │ │ └── Node.java │ │ ├── dynamicarray/ │ │ │ └── DynamicArray.java │ │ ├── graphs/ │ │ │ ├── AStar.java │ │ │ ├── BellmanFord.java │ │ │ ├── BipartiteGraphDFS.java │ │ │ ├── BoruvkaAlgorithm.java │ │ │ ├── ConnectedComponent.java │ │ │ ├── Cycles.java │ │ │ ├── DialsAlgorithm.java │ │ │ ├── DijkstraAlgorithm.java │ │ │ ├── DijkstraOptimizedAlgorithm.java │ │ │ ├── EdmondsBlossomAlgorithm.java │ │ │ ├── FloydWarshall.java │ │ │ ├── FordFulkerson.java │ │ │ ├── Graphs.java │ │ │ ├── HamiltonianCycle.java │ │ │ ├── JohnsonsAlgorithm.java │ │ │ ├── KahnsAlgorithm.java │ │ │ ├── Kosaraju.java │ │ │ ├── Kruskal.java │ │ │ ├── MatrixGraphs.java │ │ │ ├── PrimMST.java │ │ │ ├── README.md │ │ │ ├── TarjansAlgorithm.java │ │ │ ├── TwoSat.java │ │ │ ├── UndirectedAdjacencyListGraph.java │ │ │ └── WelshPowell.java │ │ ├── hashmap/ │ │ │ ├── Readme.md │ │ │ └── hashing/ │ │ │ ├── GenericHashMapUsingArray.java │ │ │ ├── GenericHashMapUsingArrayList.java │ │ │ ├── HashMap.java │ │ │ ├── HashMapCuckooHashing.java │ │ │ ├── ImmutableHashMap.java │ │ │ ├── Intersection.java │ │ │ ├── LinearProbingHashMap.java │ │ │ ├── MainCuckooHashing.java │ │ │ ├── MajorityElement.java │ │ │ └── Map.java │ │ ├── heaps/ │ │ │ ├── EmptyHeapException.java │ │ │ ├── FibonacciHeap.java │ │ │ ├── GenericHeap.java │ │ │ ├── Heap.java │ │ │ ├── HeapElement.java │ │ │ ├── IndexedPriorityQueue.java │ │ │ ├── KthElementFinder.java │ │ │ ├── LeftistHeap.java │ │ │ ├── MaxHeap.java │ │ │ ├── MedianFinder.java │ │ │ ├── MergeKSortedArrays.java │ │ │ ├── MinHeap.java │ │ │ ├── MinPriorityQueue.java │ │ │ └── Readme.md │ │ ├── lists/ │ │ │ ├── CircleLinkedList.java │ │ │ ├── CircularDoublyLinkedList.java │ │ │ ├── CountSinglyLinkedListRecursion.java │ │ │ ├── CreateAndDetectLoop.java │ │ │ ├── CursorLinkedList.java │ │ │ ├── DoublyLinkedList.java │ │ │ ├── FlattenMultilevelLinkedList.java │ │ │ ├── MergeKSortedLinkedList.java │ │ │ ├── MergeSortedArrayList.java │ │ │ ├── MergeSortedSinglyLinkedList.java │ │ │ ├── MiddleOfLinkedList.java │ │ │ ├── QuickSortLinkedList.java │ │ │ ├── README.md │ │ │ ├── RandomNode.java │ │ │ ├── ReverseKGroup.java │ │ │ ├── RotateSinglyLinkedLists.java │ │ │ ├── SearchSinglyLinkedListRecursion.java │ │ │ ├── SinglyLinkedList.java │ │ │ ├── SinglyLinkedListNode.java │ │ │ ├── SkipList.java │ │ │ ├── SortedLinkedList.java │ │ │ └── TortoiseHareAlgo.java │ │ ├── queues/ │ │ │ ├── CircularQueue.java │ │ │ ├── Deque.java │ │ │ ├── GenericArrayListQueue.java │ │ │ ├── LinkedQueue.java │ │ │ ├── PriorityQueues.java │ │ │ ├── Queue.java │ │ │ ├── QueueByTwoStacks.java │ │ │ ├── README.md │ │ │ ├── ReverseQueueRecursion.java │ │ │ ├── SlidingWindowMaximum.java │ │ │ └── TokenBucket.java │ │ ├── stacks/ │ │ │ ├── NodeStack.java │ │ │ ├── README.md │ │ │ ├── ReverseStack.java │ │ │ ├── Stack.java │ │ │ ├── StackArray.java │ │ │ ├── StackArrayList.java │ │ │ └── StackOfLinkedList.java │ │ └── trees/ │ │ ├── AVLSimple.java │ │ ├── AVLTree.java │ │ ├── BSTFromSortedArray.java │ │ ├── BSTIterative.java │ │ ├── BSTRecursive.java │ │ ├── BSTRecursiveGeneric.java │ │ ├── BTree.java │ │ ├── BinaryTree.java │ │ ├── BinaryTreeToString.java │ │ ├── BoundaryTraversal.java │ │ ├── CeilInBinarySearchTree.java │ │ ├── CentroidDecomposition.java │ │ ├── CheckBinaryTreeIsValidBST.java │ │ ├── CheckIfBinaryTreeBalanced.java │ │ ├── CheckTreeIsSymmetric.java │ │ ├── CreateBinaryTreeFromInorderPreorder.java │ │ ├── FenwickTree.java │ │ ├── GenericTree.java │ │ ├── InorderTraversal.java │ │ ├── KDTree.java │ │ ├── LCA.java │ │ ├── LazySegmentTree.java │ │ ├── LevelOrderTraversal.java │ │ ├── PostOrderTraversal.java │ │ ├── PreOrderTraversal.java │ │ ├── PrintTopViewofTree.java │ │ ├── QuadTree.java │ │ ├── README.md │ │ ├── RedBlackBST.java │ │ ├── SameTreesCheck.java │ │ ├── SegmentTree.java │ │ ├── SplayTree.java │ │ ├── ThreadedBinaryTree.java │ │ ├── Treap.java │ │ ├── TreeRandomNode.java │ │ ├── Trie.java │ │ ├── VerticalOrderTraversal.java │ │ ├── ZigzagTraversal.java │ │ └── nearestRightKey.java │ ├── devutils/ │ │ ├── entities/ │ │ │ └── ProcessDetails.java │ │ ├── nodes/ │ │ │ ├── LargeTreeNode.java │ │ │ ├── Node.java │ │ │ ├── SimpleNode.java │ │ │ ├── SimpleTreeNode.java │ │ │ └── TreeNode.java │ │ └── searches/ │ │ ├── MatrixSearchAlgorithm.java │ │ └── SearchAlgorithm.java │ ├── divideandconquer/ │ │ ├── BinaryExponentiation.java │ │ ├── ClosestPair.java │ │ ├── CountingInversions.java │ │ ├── MedianOfTwoSortedArrays.java │ │ ├── SkylineAlgorithm.java │ │ ├── StrassenMatrixMultiplication.java │ │ └── TilingProblem.java │ ├── dynamicprogramming/ │ │ ├── Abbreviation.java │ │ ├── AllConstruct.java │ │ ├── AssignmentUsingBitmask.java │ │ ├── BoardPath.java │ │ ├── BoundaryFill.java │ │ ├── BruteForceKnapsack.java │ │ ├── CatalanNumber.java │ │ ├── ClimbingStairs.java │ │ ├── CoinChange.java │ │ ├── CountFriendsPairing.java │ │ ├── DamerauLevenshteinDistance.java │ │ ├── DiceThrow.java │ │ ├── EditDistance.java │ │ ├── EggDropping.java │ │ ├── Fibonacci.java │ │ ├── KadaneAlgorithm.java │ │ ├── Knapsack.java │ │ ├── KnapsackMemoization.java │ │ ├── KnapsackZeroOne.java │ │ ├── KnapsackZeroOneTabulation.java │ │ ├── LevenshteinDistance.java │ │ ├── LongestAlternatingSubsequence.java │ │ ├── LongestArithmeticSubsequence.java │ │ ├── LongestCommonSubsequence.java │ │ ├── LongestIncreasingSubsequence.java │ │ ├── LongestIncreasingSubsequenceNLogN.java │ │ ├── LongestPalindromicSubsequence.java │ │ ├── LongestPalindromicSubstring.java │ │ ├── LongestValidParentheses.java │ │ ├── MatrixChainMultiplication.java │ │ ├── MatrixChainRecursiveTopDownMemoisation.java │ │ ├── MaximumProductSubarray.java │ │ ├── MaximumSumOfNonAdjacentElements.java │ │ ├── MinimumPathSum.java │ │ ├── MinimumSumPartition.java │ │ ├── NeedlemanWunsch.java │ │ ├── NewManShanksPrime.java │ │ ├── OptimalJobScheduling.java │ │ ├── PalindromicPartitioning.java │ │ ├── PartitionProblem.java │ │ ├── RegexMatching.java │ │ ├── RodCutting.java │ │ ├── ShortestCommonSupersequenceLength.java │ │ ├── SmithWaterman.java │ │ ├── SubsetCount.java │ │ ├── SubsetSum.java │ │ ├── SubsetSumSpaceOptimized.java │ │ ├── SumOfSubset.java │ │ ├── TreeMatching.java │ │ ├── Tribonacci.java │ │ ├── UniquePaths.java │ │ ├── UniqueSubsequencesCount.java │ │ ├── WildcardMatching.java │ │ └── WineProblem.java │ ├── geometry/ │ │ ├── BentleyOttmann.java │ │ ├── BresenhamLine.java │ │ ├── ConvexHull.java │ │ ├── DDALine.java │ │ ├── GrahamScan.java │ │ ├── Haversine.java │ │ ├── MidpointCircle.java │ │ ├── MidpointEllipse.java │ │ ├── Point.java │ │ └── WusLine.java │ ├── graph/ │ │ ├── BronKerbosch.java │ │ ├── ConstrainedShortestPath.java │ │ ├── Dinic.java │ │ ├── Edmonds.java │ │ ├── EdmondsKarp.java │ │ ├── GomoryHuTree.java │ │ ├── HierholzerAlgorithm.java │ │ ├── HierholzerEulerianPath.java │ │ ├── HopcroftKarp.java │ │ ├── HungarianAlgorithm.java │ │ ├── PredecessorConstrainedDfs.java │ │ ├── PushRelabel.java │ │ ├── StoerWagner.java │ │ ├── StronglyConnectedComponentOptimized.java │ │ ├── TravelingSalesman.java │ │ ├── YensKShortestPaths.java │ │ └── ZeroOneBfs.java │ ├── greedyalgorithms/ │ │ ├── ActivitySelection.java │ │ ├── BandwidthAllocation.java │ │ ├── BinaryAddition.java │ │ ├── CoinChange.java │ │ ├── DigitSeparation.java │ │ ├── EgyptianFraction.java │ │ ├── FractionalKnapsack.java │ │ ├── GaleShapley.java │ │ ├── JobSequencing.java │ │ ├── KCenters.java │ │ ├── MergeIntervals.java │ │ ├── MinimizingLateness.java │ │ ├── MinimumWaitingTime.java │ │ ├── OptimalFileMerging.java │ │ └── StockProfitCalculator.java │ ├── io/ │ │ └── BufferedReader.java │ ├── lineclipping/ │ │ ├── CohenSutherland.java │ │ ├── LiangBarsky.java │ │ └── utils/ │ │ ├── Line.java │ │ └── Point.java │ ├── maths/ │ │ ├── ADTFraction.java │ │ ├── AbsoluteMax.java │ │ ├── AbsoluteMin.java │ │ ├── AbsoluteValue.java │ │ ├── AbundantNumber.java │ │ ├── AliquotSum.java │ │ ├── AmicableNumber.java │ │ ├── Area.java │ │ ├── Armstrong.java │ │ ├── AutoCorrelation.java │ │ ├── AutomorphicNumber.java │ │ ├── Average.java │ │ ├── BellNumbers.java │ │ ├── BinaryPow.java │ │ ├── BinomialCoefficient.java │ │ ├── CatalanNumbers.java │ │ ├── Ceil.java │ │ ├── ChebyshevIteration.java │ │ ├── ChineseRemainderTheorem.java │ │ ├── CircularConvolutionFFT.java │ │ ├── CollatzConjecture.java │ │ ├── Combinations.java │ │ ├── ComplexNumberMultiply.java │ │ ├── Convolution.java │ │ ├── ConvolutionFFT.java │ │ ├── CrossCorrelation.java │ │ ├── DeterminantOfMatrix.java │ │ ├── DigitalRoot.java │ │ ├── DistanceBetweenTwoPoints.java │ │ ├── DistanceFormula.java │ │ ├── DudeneyNumber.java │ │ ├── EulerMethod.java │ │ ├── EulerPseudoprime.java │ │ ├── EulersFunction.java │ │ ├── EvilNumber.java │ │ ├── ExtendedEuclideanAlgorithm.java │ │ ├── FFT.java │ │ ├── FFTBluestein.java │ │ ├── Factorial.java │ │ ├── FastExponentiation.java │ │ ├── FastInverseSqrt.java │ │ ├── FibonacciJavaStreams.java │ │ ├── FibonacciLoop.java │ │ ├── FibonacciNumberCheck.java │ │ ├── FibonacciNumberGoldenRation.java │ │ ├── FindKthNumber.java │ │ ├── FindMax.java │ │ ├── FindMaxRecursion.java │ │ ├── FindMin.java │ │ ├── FindMinRecursion.java │ │ ├── Floor.java │ │ ├── FrizzyNumber.java │ │ ├── GCD.java │ │ ├── GCDRecursion.java │ │ ├── Gaussian.java │ │ ├── GenericRoot.java │ │ ├── GermainPrimeAndSafePrime.java │ │ ├── GoldbachConjecture.java │ │ ├── HappyNumber.java │ │ ├── HarshadNumber.java │ │ ├── HeronsFormula.java │ │ ├── JosephusProblem.java │ │ ├── JugglerSequence.java │ │ ├── KaprekarNumbers.java │ │ ├── KaratsubaMultiplication.java │ │ ├── KeithNumber.java │ │ ├── KrishnamurthyNumber.java │ │ ├── LeastCommonMultiple.java │ │ ├── LeonardoNumber.java │ │ ├── LinearDiophantineEquationsSolver.java │ │ ├── LongDivision.java │ │ ├── LucasSeries.java │ │ ├── LuckyNumber.java │ │ ├── MagicSquare.java │ │ ├── MathBuilder.java │ │ ├── MaxValue.java │ │ ├── Means.java │ │ ├── Median.java │ │ ├── MinValue.java │ │ ├── Mode.java │ │ ├── Neville.java │ │ ├── NonRepeatingElement.java │ │ ├── NthUglyNumber.java │ │ ├── NumberOfDigits.java │ │ ├── NumberPersistence.java │ │ ├── PalindromeNumber.java │ │ ├── ParseInteger.java │ │ ├── PascalTriangle.java │ │ ├── PerfectCube.java │ │ ├── PerfectNumber.java │ │ ├── PerfectSquare.java │ │ ├── Perimeter.java │ │ ├── PiApproximation.java │ │ ├── PiNilakantha.java │ │ ├── PollardRho.java │ │ ├── Pow.java │ │ ├── PowerOfFour.java │ │ ├── PowerOfTwoOrNot.java │ │ ├── PowerUsingRecursion.java │ │ ├── Prime/ │ │ │ ├── LiouvilleLambdaFunction.java │ │ │ ├── MillerRabinPrimalityCheck.java │ │ │ ├── MobiusFunction.java │ │ │ ├── PrimeCheck.java │ │ │ ├── PrimeFactorization.java │ │ │ └── SquareFreeInteger.java │ │ ├── PronicNumber.java │ │ ├── PythagoreanTriple.java │ │ ├── QuadraticEquationSolver.java │ │ ├── ReverseNumber.java │ │ ├── RomanNumeralUtil.java │ │ ├── SecondMinMax.java │ │ ├── SieveOfAtkin.java │ │ ├── SieveOfEratosthenes.java │ │ ├── SimpsonIntegration.java │ │ ├── SmithNumber.java │ │ ├── SolovayStrassenPrimalityTest.java │ │ ├── SquareRootWithBabylonianMethod.java │ │ ├── SquareRootWithNewtonRaphsonMethod.java │ │ ├── StandardDeviation.java │ │ ├── StandardScore.java │ │ ├── StrobogrammaticNumber.java │ │ ├── SumOfArithmeticSeries.java │ │ ├── SumOfDigits.java │ │ ├── SumOfOddNumbers.java │ │ ├── SumOfSquares.java │ │ ├── SumWithoutArithmeticOperators.java │ │ ├── TrinomialTriangle.java │ │ ├── TwinPrime.java │ │ ├── UniformNumbers.java │ │ ├── VampireNumber.java │ │ ├── VectorCrossProduct.java │ │ ├── Volume.java │ │ └── ZellersCongruence.java │ ├── matrix/ │ │ ├── InverseOfMatrix.java │ │ ├── LUDecomposition.java │ │ ├── MatrixMultiplication.java │ │ ├── MatrixRank.java │ │ ├── MatrixTranspose.java │ │ ├── MedianOfMatrix.java │ │ ├── MirrorOfMatrix.java │ │ ├── PrintAMatrixInSpiralOrder.java │ │ ├── RotateMatrixBy90Degrees.java │ │ ├── SolveSystem.java │ │ ├── StochasticMatrix.java │ │ ├── matrixexponentiation/ │ │ │ └── Fibonacci.java │ │ └── utils/ │ │ └── MatrixUtil.java │ ├── misc/ │ │ ├── ColorContrastRatio.java │ │ ├── MapReduce.java │ │ ├── MedianOfRunningArray.java │ │ ├── MedianOfRunningArrayByte.java │ │ ├── MedianOfRunningArrayDouble.java │ │ ├── MedianOfRunningArrayFloat.java │ │ ├── MedianOfRunningArrayInteger.java │ │ ├── MedianOfRunningArrayLong.java │ │ ├── PalindromePrime.java │ │ ├── PalindromeSinglyLinkedList.java │ │ ├── RangeInSortedArray.java │ │ ├── ShuffleArray.java │ │ ├── Sparsity.java │ │ ├── ThreeSumProblem.java │ │ └── TwoSumProblem.java │ ├── others/ │ │ ├── ArrayLeftRotation.java │ │ ├── ArrayRightRotation.java │ │ ├── BFPRT.java │ │ ├── BankersAlgorithm.java │ │ ├── BoyerMoore.java │ │ ├── BrianKernighanAlgorithm.java │ │ ├── CRC16.java │ │ ├── CRC32.java │ │ ├── CRCAlgorithm.java │ │ ├── Conway.java │ │ ├── Damm.java │ │ ├── Dijkstra.java │ │ ├── FloydTriangle.java │ │ ├── GaussLegendre.java │ │ ├── Huffman.java │ │ ├── Implementing_auto_completing_features_using_trie.java │ │ ├── InsertDeleteInArray.java │ │ ├── IterativeFloodFill.java │ │ ├── KochSnowflake.java │ │ ├── LineSweep.java │ │ ├── LinearCongruentialGenerator.java │ │ ├── LowestBasePalindrome.java │ │ ├── Luhn.java │ │ ├── Mandelbrot.java │ │ ├── MaximumSumOfDistinctSubarraysWithLengthK.java │ │ ├── MemoryManagementAlgorithms.java │ │ ├── MiniMaxAlgorithm.java │ │ ├── MosAlgorithm.java │ │ ├── PageRank.java │ │ ├── PasswordGen.java │ │ ├── PerlinNoise.java │ │ ├── QueueUsingTwoStacks.java │ │ ├── SkylineProblem.java │ │ ├── TwoPointers.java │ │ └── Verhoeff.java │ ├── physics/ │ │ ├── CoulombsLaw.java │ │ ├── DampedOscillator.java │ │ ├── ElasticCollision2D.java │ │ ├── Gravitation.java │ │ ├── GroundToGroundProjectileMotion.java │ │ ├── Kinematics.java │ │ ├── ProjectileMotion.java │ │ ├── SimplePendulumRK4.java │ │ ├── SnellLaw.java │ │ └── ThinLens.java │ ├── prefixsum/ │ │ ├── DifferenceArray.java │ │ ├── PrefixSum.java │ │ ├── PrefixSum2D.java │ │ ├── RangeSumQuery.java │ │ └── SubarraySumEqualsK.java │ ├── puzzlesandgames/ │ │ ├── TowerOfHanoi.java │ │ └── WordBoggle.java │ ├── randomized/ │ │ ├── KargerMinCut.java │ │ ├── MonteCarloIntegration.java │ │ ├── RandomizedClosestPair.java │ │ ├── RandomizedMatrixMultiplicationVerification.java │ │ ├── RandomizedQuickSort.java │ │ └── ReservoirSampling.java │ ├── recursion/ │ │ ├── DiceThrower.java │ │ ├── FactorialRecursion.java │ │ ├── FibonacciSeries.java │ │ ├── GenerateSubsets.java │ │ └── SylvesterSequence.java │ ├── scheduling/ │ │ ├── AgingScheduling.java │ │ ├── EDFScheduling.java │ │ ├── FCFSScheduling.java │ │ ├── FairShareScheduling.java │ │ ├── GangScheduling.java │ │ ├── HighestResponseRatioNextScheduling.java │ │ ├── JobSchedulingWithDeadline.java │ │ ├── LotteryScheduling.java │ │ ├── MLFQScheduler.java │ │ ├── MultiAgentScheduling.java │ │ ├── NonPreemptivePriorityScheduling.java │ │ ├── PreemptivePriorityScheduling.java │ │ ├── ProportionalFairScheduling.java │ │ ├── RRScheduling.java │ │ ├── RandomScheduling.java │ │ ├── SJFScheduling.java │ │ ├── SRTFScheduling.java │ │ ├── SelfAdjustingScheduling.java │ │ ├── SlackTimeScheduling.java │ │ └── diskscheduling/ │ │ ├── CircularLookScheduling.java │ │ ├── CircularScanScheduling.java │ │ ├── LookScheduling.java │ │ ├── SSFScheduling.java │ │ └── ScanScheduling.java │ ├── searches/ │ │ ├── BM25InvertedIndex.java │ │ ├── BinarySearch.java │ │ ├── BinarySearch2dArray.java │ │ ├── BoyerMoore.java │ │ ├── BreadthFirstSearch.java │ │ ├── DepthFirstSearch.java │ │ ├── ExponentialSearch.java │ │ ├── FibonacciSearch.java │ │ ├── HowManyTimesRotated.java │ │ ├── InterpolationSearch.java │ │ ├── IterativeBinarySearch.java │ │ ├── IterativeTernarySearch.java │ │ ├── JumpSearch.java │ │ ├── KMPSearch.java │ │ ├── LinearSearch.java │ │ ├── LinearSearchThread.java │ │ ├── LowerBound.java │ │ ├── MonteCarloTreeSearch.java │ │ ├── OrderAgnosticBinarySearch.java │ │ ├── QuickSelect.java │ │ ├── RabinKarpAlgorithm.java │ │ ├── RandomSearch.java │ │ ├── RecursiveBinarySearch.java │ │ ├── RotatedBinarySearch.java │ │ ├── RowColumnWiseSorted2dArrayBinarySearch.java │ │ ├── SaddlebackSearch.java │ │ ├── SearchInARowAndColWiseSortedMatrix.java │ │ ├── SentinelLinearSearch.java │ │ ├── SquareRootBinarySearch.java │ │ ├── TernarySearch.java │ │ ├── UnionFind.java │ │ └── UpperBound.java │ ├── slidingwindow/ │ │ ├── CountNiceSubarrays.java │ │ ├── LongestSubarrayWithSumLessOrEqualToK.java │ │ ├── LongestSubstringWithoutRepeatingCharacters.java │ │ ├── MaxSumKSizeSubarray.java │ │ ├── MaximumSlidingWindow.java │ │ ├── MinSumKSizeSubarray.java │ │ ├── MinimumWindowSubstring.java │ │ └── ShortestCoprimeSegment.java │ ├── sorts/ │ │ ├── AdaptiveMergeSort.java │ │ ├── BeadSort.java │ │ ├── BinaryInsertionSort.java │ │ ├── BitonicSort.java │ │ ├── BogoSort.java │ │ ├── BubbleSort.java │ │ ├── BubbleSortRecursive.java │ │ ├── BucketSort.java │ │ ├── CircleSort.java │ │ ├── CocktailShakerSort.java │ │ ├── CombSort.java │ │ ├── CountingSort.java │ │ ├── CycleSort.java │ │ ├── DarkSort.java │ │ ├── DualPivotQuickSort.java │ │ ├── DutchNationalFlagSort.java │ │ ├── ExchangeSort.java │ │ ├── FlashSort.java │ │ ├── GnomeSort.java │ │ ├── HeapSort.java │ │ ├── InsertionSort.java │ │ ├── IntrospectiveSort.java │ │ ├── LinkListSort.java │ │ ├── MergeSort.java │ │ ├── MergeSortNoExtraSpace.java │ │ ├── MergeSortRecursive.java │ │ ├── OddEvenSort.java │ │ ├── PancakeSort.java │ │ ├── PatienceSort.java │ │ ├── PigeonholeSort.java │ │ ├── PriorityQueueSort.java │ │ ├── QuickSort.java │ │ ├── RadixSort.java │ │ ├── SelectionSort.java │ │ ├── SelectionSortRecursive.java │ │ ├── ShellSort.java │ │ ├── SlowSort.java │ │ ├── SmoothSort.java │ │ ├── SortAlgorithm.java │ │ ├── SortUtils.java │ │ ├── SortUtilsRandomGenerator.java │ │ ├── SpreadSort.java │ │ ├── StalinSort.java │ │ ├── StoogeSort.java │ │ ├── StrandSort.java │ │ ├── SwapSort.java │ │ ├── TimSort.java │ │ ├── TopologicalSort.java │ │ ├── TournamentSort.java │ │ ├── TreeSort.java │ │ ├── WaveSort.java │ │ └── WiggleSort.java │ ├── stacks/ │ │ ├── BalancedBrackets.java │ │ ├── CelebrityFinder.java │ │ ├── DecimalToAnyUsingStack.java │ │ ├── DuplicateBrackets.java │ │ ├── GreatestElementConstantTime.java │ │ ├── InfixToPostfix.java │ │ ├── InfixToPrefix.java │ │ ├── LargestRectangle.java │ │ ├── MaximumMinimumWindow.java │ │ ├── MinStackUsingSingleStack.java │ │ ├── MinStackUsingTwoStacks.java │ │ ├── NextGreaterElement.java │ │ ├── NextSmallerElement.java │ │ ├── PalindromeWithStack.java │ │ ├── PostfixEvaluator.java │ │ ├── PostfixToInfix.java │ │ ├── PrefixEvaluator.java │ │ ├── PrefixToInfix.java │ │ ├── SmallestElementConstantTime.java │ │ ├── SortStack.java │ │ ├── StackPostfixNotation.java │ │ ├── StackUsingTwoQueues.java │ │ ├── TrappingRainwater.java │ │ └── ValidParentheses.java │ ├── strings/ │ │ ├── AhoCorasick.java │ │ ├── Alphabetical.java │ │ ├── AlternativeStringArrange.java │ │ ├── Anagrams.java │ │ ├── CharactersSame.java │ │ ├── CheckVowels.java │ │ ├── CountChar.java │ │ ├── CountWords.java │ │ ├── HammingDistance.java │ │ ├── HorspoolSearch.java │ │ ├── Isogram.java │ │ ├── Isomorphic.java │ │ ├── KMP.java │ │ ├── KasaiAlgorithm.java │ │ ├── LengthOfLastWord.java │ │ ├── LetterCombinationsOfPhoneNumber.java │ │ ├── LongestCommonPrefix.java │ │ ├── LongestNonRepetitiveSubstring.java │ │ ├── LongestRepeatedSubstring.java │ │ ├── Lower.java │ │ ├── Manacher.java │ │ ├── MyAtoi.java │ │ ├── Palindrome.java │ │ ├── Pangram.java │ │ ├── PermuteString.java │ │ ├── RabinKarp.java │ │ ├── RemoveDuplicateFromString.java │ │ ├── RemoveStars.java │ │ ├── ReturnSubsequence.java │ │ ├── ReverseString.java │ │ ├── ReverseWordsInString.java │ │ ├── Rotation.java │ │ ├── StringCompression.java │ │ ├── StringMatchFiniteAutomata.java │ │ ├── SuffixArray.java │ │ ├── TopKFrequentWords.java │ │ ├── Upper.java │ │ ├── WordLadder.java │ │ ├── ZAlgorithm.java │ │ └── zigZagPattern/ │ │ ├── README.md │ │ └── ZigZagPattern.java │ └── tree/ │ └── HeavyLightDecomposition.java └── test/ └── java/ └── com/ └── thealgorithms/ ├── audiofilters/ │ ├── EMAFilterTest.java │ └── IIRFilterTest.java ├── backtracking/ │ ├── AllPathsFromSourceToTargetTest.java │ ├── ArrayCombinationTest.java │ ├── CombinationSumTest.java │ ├── CombinationTest.java │ ├── CrosswordSolverTest.java │ ├── FloodFillTest.java │ ├── KnightsTourTest.java │ ├── MColoringTest.java │ ├── MazeRecursionTest.java │ ├── NQueensTest.java │ ├── ParenthesesGeneratorTest.java │ ├── PermutationTest.java │ ├── PowerSumTest.java │ ├── SubsequenceFinderTest.java │ ├── SudokuSolverTest.java │ ├── UniquePermutationTest.java │ ├── WordPatternMatcherTest.java │ └── WordSearchTest.java ├── bitmanipulation/ │ ├── BcdConversionTest.java │ ├── BinaryPalindromeCheckTest.java │ ├── BitRotateTest.java │ ├── BitSwapTest.java │ ├── BitwiseGCDTest.java │ ├── BooleanAlgebraGatesTest.java │ ├── ClearLeftmostSetBitTest.java │ ├── CountBitsFlipTest.java │ ├── CountLeadingZerosTest.java │ ├── CountSetBitsTest.java │ ├── FindNthBitTest.java │ ├── FirstDifferentBitTest.java │ ├── GenerateSubsetsTest.java │ ├── GrayCodeConversionTest.java │ ├── HammingDistanceTest.java │ ├── HigherLowerPowerOfTwoTest.java │ ├── HighestSetBitTest.java │ ├── IndexOfRightMostSetBitTest.java │ ├── IsEvenTest.java │ ├── IsPowerTwoTest.java │ ├── LowestSetBitTest.java │ ├── ModuloPowerOfTwoTest.java │ ├── NextHigherSameBitCountTest.java │ ├── NonRepeatingNumberFinderTest.java │ ├── NumberAppearingOddTimesTest.java │ ├── NumbersDifferentSignsTest.java │ ├── OneBitDifferenceTest.java │ ├── OnesComplementTest.java │ ├── ParityCheckTest.java │ ├── ReverseBitsTest.java │ ├── SingleBitOperationsTest.java │ ├── SingleElementTest.java │ ├── SwapAdjacentBitsTest.java │ ├── TwosComplementTest.java │ └── Xs3ConversionTest.java ├── ciphers/ │ ├── ADFGVXCipherTest.java │ ├── AESEncryptionTest.java │ ├── AffineCipherTest.java │ ├── AtbashTest.java │ ├── AutokeyTest.java │ ├── BaconianCipherTest.java │ ├── BlowfishTest.java │ ├── CaesarTest.java │ ├── ColumnarTranspositionCipherTest.java │ ├── DESTest.java │ ├── DiffieHellmanTest.java │ ├── ECCTest.java │ ├── ElGamalCipherTest.java │ ├── HillCipherTest.java │ ├── MonoAlphabeticTest.java │ ├── OneTimePadCipherTest.java │ ├── PermutationCipherTest.java │ ├── PlayfairTest.java │ ├── PolybiusTest.java │ ├── RSATest.java │ ├── RailFenceTest.java │ ├── SimpleSubCipherTest.java │ ├── VigenereTest.java │ ├── XORCipherTest.java │ └── a5/ │ ├── A5CipherTest.java │ ├── A5KeyStreamGeneratorTest.java │ └── LFSRTest.java ├── compression/ │ ├── ArithmeticCodingTest.java │ ├── BurrowsWheelerTransformTest.java │ ├── HuffmanCodingTest.java │ ├── LZ77Test.java │ ├── LZ78Test.java │ ├── LZWTest.java │ ├── MoveToFrontTest.java │ ├── RunLengthEncodingTest.java │ └── ShannonFanoTest.java ├── conversions/ │ ├── AffineConverterTest.java │ ├── AnyBaseToDecimalTest.java │ ├── AnytoAnyTest.java │ ├── Base64Test.java │ ├── BinaryToDecimalTest.java │ ├── BinaryToHexadecimalTest.java │ ├── BinaryToOctalTest.java │ ├── CoordinateConverterTest.java │ ├── DecimalToAnyBaseTest.java │ ├── DecimalToBinaryTest.java │ ├── DecimalToHexadecimalTest.java │ ├── DecimalToOctalTest.java │ ├── EndianConverterTest.java │ ├── HexToOctTest.java │ ├── HexaDecimalToBinaryTest.java │ ├── HexaDecimalToDecimalTest.java │ ├── IPConverterTest.java │ ├── IPv6ConverterTest.java │ ├── IntegerToEnglishTest.java │ ├── IntegerToRomanTest.java │ ├── MorseCodeConverterTest.java │ ├── NumberToWordsTest.java │ ├── OctalToBinaryTest.java │ ├── OctalToDecimalTest.java │ ├── OctalToHexadecimalTest.java │ ├── PhoneticAlphabetConverterTest.java │ ├── RomanToIntegerTest.java │ ├── TemperatureConverterTest.java │ ├── TimeConverterTest.java │ ├── TurkishToLatinConversionTest.java │ ├── UnitConversionsTest.java │ ├── UnitsConverterTest.java │ └── WordsToNumberTest.java ├── datastructures/ │ ├── bag/ │ │ └── BagTest.java │ ├── bloomfilter/ │ │ └── BloomFilterTest.java │ ├── buffers/ │ │ └── CircularBufferTest.java │ ├── caches/ │ │ ├── FIFOCacheTest.java │ │ ├── LFUCacheTest.java │ │ ├── LIFOCacheTest.java │ │ ├── LRUCacheTest.java │ │ ├── MRUCacheTest.java │ │ └── RRCacheTest.java │ ├── crdt/ │ │ ├── GCounterTest.java │ │ ├── GSetTest.java │ │ ├── LWWElementSetTest.java │ │ ├── ORSetTest.java │ │ ├── PNCounterTest.java │ │ └── TwoPSetTest.java │ ├── disjointsetunion/ │ │ ├── DisjointSetUnionBySizeTest.java │ │ └── DisjointSetUnionTest.java │ ├── dynamicarray/ │ │ └── DynamicArrayTest.java │ ├── graphs/ │ │ ├── AStarTest.java │ │ ├── BellmanFordTest.java │ │ ├── BipartiteGraphDFSTest.java │ │ ├── BoruvkaAlgorithmTest.java │ │ ├── ConnectedComponentTest.java │ │ ├── DialsAlgorithmTest.java │ │ ├── DijkstraAlgorithmTest.java │ │ ├── DijkstraOptimizedAlgorithmTest.java │ │ ├── EdmondsBlossomAlgorithmTest.java │ │ ├── FloydWarshallTest.java │ │ ├── FordFulkersonTest.java │ │ ├── HamiltonianCycleTest.java │ │ ├── JohnsonsAlgorithmTest.java │ │ ├── KahnsAlgorithmTest.java │ │ ├── KosarajuTest.java │ │ ├── KruskalTest.java │ │ ├── MatrixGraphsTest.java │ │ ├── PrimMSTTest.java │ │ ├── TarjansAlgorithmTest.java │ │ ├── TwoSatTest.java │ │ └── WelshPowellTest.java │ ├── hashmap/ │ │ └── hashing/ │ │ ├── GenericHashMapUsingArrayListTest.java │ │ ├── GenericHashMapUsingArrayTest.java │ │ ├── HashMapCuckooHashingTest.java │ │ ├── HashMapTest.java │ │ ├── ImmutableHashMapTest.java │ │ ├── IntersectionTest.java │ │ ├── LinearProbingHashMapTest.java │ │ ├── MajorityElementTest.java │ │ └── MapTest.java │ ├── heaps/ │ │ ├── FibonacciHeapTest.java │ │ ├── GenericHeapTest.java │ │ ├── HeapElementTest.java │ │ ├── IndexedPriorityQueueTest.java │ │ ├── KthElementFinderTest.java │ │ ├── LeftistHeapTest.java │ │ ├── MaxHeapTest.java │ │ ├── MedianFinderTest.java │ │ ├── MergeKSortedArraysTest.java │ │ ├── MinHeapTest.java │ │ └── MinPriorityQueueTest.java │ ├── lists/ │ │ ├── CircleLinkedListTest.java │ │ ├── CircularDoublyLinkedListTest.java │ │ ├── CountSinglyLinkedListRecursionTest.java │ │ ├── CreateAndDetectLoopTest.java │ │ ├── CursorLinkedListTest.java │ │ ├── FlattenMultilevelLinkedListTest.java │ │ ├── MergeKSortedLinkedListTest.java │ │ ├── MergeSortedArrayListTest.java │ │ ├── MergeSortedSinglyLinkedListTest.java │ │ ├── MiddleOfLinkedListTest.java │ │ ├── QuickSortLinkedListTest.java │ │ ├── ReverseKGroupTest.java │ │ ├── RotateSinglyLinkedListsTest.java │ │ ├── SearchSinglyLinkedListRecursionTest.java │ │ ├── SinglyLinkedListTest.java │ │ ├── SkipListTest.java │ │ ├── SortedLinkedListTest.java │ │ └── TortoiseHareAlgoTest.java │ ├── queues/ │ │ ├── CircularQueueTest.java │ │ ├── DequeTest.java │ │ ├── GenericArrayListQueueTest.java │ │ ├── LinkedQueueTest.java │ │ ├── PriorityQueuesTest.java │ │ ├── QueueByTwoStacksTest.java │ │ ├── QueueTest.java │ │ ├── ReverseQueueRecursionTest.java │ │ ├── SlidingWindowMaximumTest.java │ │ └── TokenBucketTest.java │ ├── stacks/ │ │ ├── NodeStackTest.java │ │ ├── ReverseStackTest.java │ │ ├── StackArrayListTest.java │ │ ├── StackArrayTest.java │ │ └── StackOfLinkedListTest.java │ └── trees/ │ ├── AVLTreeTest.java │ ├── BSTFromSortedArrayTest.java │ ├── BSTIterativeTest.java │ ├── BSTRecursiveGenericTest.java │ ├── BSTRecursiveTest.java │ ├── BTreeTest.java │ ├── BinaryTreeTest.java │ ├── BinaryTreeToStringTest.java │ ├── BoundaryTraversalTest.java │ ├── CeilInBinarySearchTreeTest.java │ ├── CentroidDecompositionTest.java │ ├── CheckBinaryTreeIsValidBSTTest.java │ ├── CheckIfBinaryTreeBalancedTest.java │ ├── CheckTreeIsSymmetricTest.java │ ├── CreateBinaryTreeFromInorderPreorderTest.java │ ├── InorderTraversalTest.java │ ├── KDTreeTest.java │ ├── LazySegmentTreeTest.java │ ├── LevelOrderTraversalTest.java │ ├── PostOrderTraversalTest.java │ ├── PreOrderTraversalTest.java │ ├── QuadTreeTest.java │ ├── SameTreesCheckTest.java │ ├── SplayTreeTest.java │ ├── ThreadedBinaryTreeTest.java │ ├── TreapTest.java │ ├── TreeTestUtils.java │ ├── TrieTest.java │ ├── VerticalOrderTraversalTest.java │ └── ZigzagTraversalTest.java ├── devutils/ │ └── entities/ │ └── ProcessDetailsTest.java ├── divideandconquer/ │ ├── BinaryExponentiationTest.java │ ├── ClosestPairTest.java │ ├── CountingInversionsTest.java │ ├── MedianOfTwoSortedArraysTest.java │ ├── SkylineAlgorithmTest.java │ ├── StrassenMatrixMultiplicationTest.java │ └── TilingProblemTest.java ├── dynamicprogramming/ │ ├── AbbreviationTest.java │ ├── AllConstructTest.java │ ├── AssignmentUsingBitmaskTest.java │ ├── BoardPathTest.java │ ├── BoundaryFillTest.java │ ├── BruteForceKnapsackTest.java │ ├── CatalanNumberTest.java │ ├── ClimbStairsTest.java │ ├── CoinChangeTest.java │ ├── CountFriendsPairingTest.java │ ├── DPTest.java │ ├── DamerauLevenshteinDistanceTest.java │ ├── EditDistanceTest.java │ ├── EggDroppingTest.java │ ├── FibonacciTest.java │ ├── KadaneAlgorithmTest.java │ ├── KnapsackMemoizationTest.java │ ├── KnapsackTest.java │ ├── KnapsackZeroOneTabulationTest.java │ ├── KnapsackZeroOneTest.java │ ├── LevenshteinDistanceTests.java │ ├── LongestAlternatingSubsequenceTest.java │ ├── LongestArithmeticSubsequenceTest.java │ ├── LongestCommonSubsequenceTest.java │ ├── LongestIncreasingSubsequenceNLogNTest.java │ ├── LongestIncreasingSubsequenceTests.java │ ├── LongestPalindromicSubstringTest.java │ ├── LongestValidParenthesesTest.java │ ├── MatrixChainMultiplicationTest.java │ ├── MatrixChainRecursiveTopDownMemoisationTest.java │ ├── MaximumProductSubarrayTest.java │ ├── MaximumSumOfNonAdjacentElementsTest.java │ ├── MinimumPathSumTest.java │ ├── MinimumSumPartitionTest.java │ ├── NeedlemanWunschTest.java │ ├── NewManShanksPrimeTest.java │ ├── OptimalJobSchedulingTest.java │ ├── PalindromicPartitioningTest.java │ ├── PartitionProblemTest.java │ ├── RegexMatchingTest.java │ ├── RodCuttingTest.java │ ├── ShortestCommonSupersequenceLengthTest.java │ ├── SmithWatermanTest.java │ ├── SubsetCountTest.java │ ├── SubsetSumSpaceOptimizedTest.java │ ├── SubsetSumTest.java │ ├── SumOfSubsetTest.java │ ├── TreeMatchingTest.java │ ├── TribonacciTest.java │ ├── UniquePathsTests.java │ ├── UniqueSubsequencesCountTest.java │ ├── WildcardMatchingTest.java │ └── WineProblemTest.java ├── geometry/ │ ├── BentleyOttmannTest.java │ ├── BresenhamLineTest.java │ ├── ConvexHullTest.java │ ├── DDALineTest.java │ ├── GrahamScanTest.java │ ├── HaversineTest.java │ ├── MidpointCircleTest.java │ ├── MidpointEllipseTest.java │ ├── PointTest.java │ └── WusLineTest.java ├── graph/ │ ├── BronKerboschTest.java │ ├── ConstrainedShortestPathTest.java │ ├── DinicTest.java │ ├── EdmondsKarpTest.java │ ├── EdmondsTest.java │ ├── GomoryHuTreeTest.java │ ├── HierholzerAlgorithmTest.java │ ├── HierholzerEulerianPathTest.java │ ├── HopcroftKarpTest.java │ ├── HungarianAlgorithmTest.java │ ├── PredecessorConstrainedDfsTest.java │ ├── PushRelabelTest.java │ ├── StoerWagnerTest.java │ ├── StronglyConnectedComponentOptimizedTest.java │ ├── TravelingSalesmanTest.java │ ├── YensKShortestPathsTest.java │ └── ZeroOneBfsTest.java ├── greedyalgorithms/ │ ├── ActivitySelectionTest.java │ ├── BandwidthAllocationTest.java │ ├── BinaryAdditionTest.java │ ├── CoinChangeTest.java │ ├── DigitSeparationTest.java │ ├── EgyptianFractionTest.java │ ├── FractionalKnapsackTest.java │ ├── GaleShapleyTest.java │ ├── JobSequencingTest.java │ ├── KCentersTest.java │ ├── MergeIntervalsTest.java │ ├── MinimizingLatenessTest.java │ ├── MinimumWaitingTimeTest.java │ ├── OptimalFileMergingTest.java │ └── StockProfitCalculatorTest.java ├── io/ │ └── BufferedReaderTest.java ├── lineclipping/ │ ├── CohenSutherlandTest.java │ └── LiangBarskyTest.java ├── maths/ │ ├── ADTFractionTest.java │ ├── AbsoluteMaxTest.java │ ├── AbsoluteMinTest.java │ ├── AbsoluteValueTest.java │ ├── AbundantNumberTest.java │ ├── AliquotSumTest.java │ ├── AmicableNumberTest.java │ ├── AreaTest.java │ ├── ArmstrongTest.java │ ├── AutoCorrelationTest.java │ ├── AutomorphicNumberTest.java │ ├── AverageTest.java │ ├── BellNumbersTest.java │ ├── BinaryPowTest.java │ ├── BinomialCoefficientTest.java │ ├── CatalanNumbersTest.java │ ├── CeilTest.java │ ├── ChebyshevIterationTest.java │ ├── ChineseRemainderTheoremTest.java │ ├── CollatzConjectureTest.java │ ├── CombinationsTest.java │ ├── ComplexNumberMultiplyTest.java │ ├── ConvolutionFFTTest.java │ ├── ConvolutionTest.java │ ├── CrossCorrelationTest.java │ ├── DeterminantOfMatrixTest.java │ ├── DigitalRootTest.java │ ├── DistanceBetweenTwoPointsTest.java │ ├── DistanceFormulaTest.java │ ├── DudeneyNumberTest.java │ ├── EulerMethodTest.java │ ├── EulerPseudoprimeTest.java │ ├── EulersFunctionTest.java │ ├── EvilNumberTest.java │ ├── ExtendedEuclideanAlgorithmTest.java │ ├── FFTTest.java │ ├── FactorialTest.java │ ├── FastExponentiationTest.java │ ├── FastInverseSqrtTests.java │ ├── FibonacciJavaStreamsTest.java │ ├── FibonacciLoopTest.java │ ├── FibonacciNumberCheckTest.java │ ├── FibonacciNumberGoldenRationTest.java │ ├── FindKthNumberTest.java │ ├── FindMaxRecursionTest.java │ ├── FindMaxTest.java │ ├── FindMinRecursionTest.java │ ├── FindMinTest.java │ ├── FloorTest.java │ ├── FrizzyNumberTest.java │ ├── GCDRecursionTest.java │ ├── GCDTest.java │ ├── GaussianTest.java │ ├── GenericRootTest.java │ ├── GermainPrimeAndSafePrimeTest.java │ ├── GoldbachConjectureTest.java │ ├── HappyNumberTest.java │ ├── HarshadNumberTest.java │ ├── HeronsFormulaTest.java │ ├── JosephusProblemTest.java │ ├── JugglerSequenceTest.java │ ├── KaprekarNumbersTest.java │ ├── KaratsubaMultiplicationTest.java │ ├── KeithNumberTest.java │ ├── KrishnamurthyNumberTest.java │ ├── LeastCommonMultipleTest.java │ ├── LeonardoNumberTest.java │ ├── LinearDiophantineEquationsSolverTest.java │ ├── LongDivisionTest.java │ ├── LucasSeriesTest.java │ ├── LuckyNumberTest.java │ ├── MathBuilderTest.java │ ├── MaxValueTest.java │ ├── MeansTest.java │ ├── MedianTest.java │ ├── MinValueTest.java │ ├── ModeTest.java │ ├── NevilleTest.java │ ├── NonRepeatingElementTest.java │ ├── NthUglyNumberTest.java │ ├── NumberOfDigitsTest.java │ ├── NumberPersistenceTest.java │ ├── PalindromeNumberTest.java │ ├── ParseIntegerTest.java │ ├── PascalTriangleTest.java │ ├── PerfectCubeTest.java │ ├── PerfectNumberTest.java │ ├── PerfectSquareTest.java │ ├── PerimeterTest.java │ ├── PiApproximationTest.java │ ├── PollardRhoTest.java │ ├── PowTest.java │ ├── PowerOfFourTest.java │ ├── PowerOfTwoOrNotTest.java │ ├── PowerUsingRecursionTest.java │ ├── PronicNumberTest.java │ ├── PythagoreanTripleTest.java │ ├── QuadraticEquationSolverTest.java │ ├── ReverseNumberTest.java │ ├── SecondMinMaxTest.java │ ├── SieveOfAtkinTest.java │ ├── SieveOfEratosthenesTest.java │ ├── SmithNumberTest.java │ ├── SolovayStrassenPrimalityTestTest.java │ ├── SquareFreeIntegerTest.java │ ├── SquareRootWithNewtonRaphsonTestMethod.java │ ├── SquareRootwithBabylonianMethodTest.java │ ├── StandardDeviationTest.java │ ├── StandardScoreTest.java │ ├── StrobogrammaticNumberTest.java │ ├── SumOfArithmeticSeriesTest.java │ ├── SumOfDigitsTest.java │ ├── SumOfOddNumbersTest.java │ ├── SumOfSquaresTest.java │ ├── SumWithoutArithmeticOperatorsTest.java │ ├── TestArmstrong.java │ ├── TwinPrimeTest.java │ ├── UniformNumbersTest.java │ ├── VampireNumberTest.java │ ├── VolumeTest.java │ ├── ZellersCongruenceTest.java │ └── prime/ │ ├── LiouvilleLambdaFunctionTest.java │ ├── MillerRabinPrimalityCheckTest.java │ ├── MobiusFunctionTest.java │ ├── PrimeCheckTest.java │ └── PrimeFactorizationTest.java ├── matrix/ │ ├── InverseOfMatrixTest.java │ ├── LUDecompositionTest.java │ ├── MatrixMultiplicationTest.java │ ├── MatrixRankTest.java │ ├── MatrixTransposeTest.java │ ├── MatrixUtilTest.java │ ├── MedianOfMatrixTest.java │ ├── MirrorOfMatrixTest.java │ ├── PrintAMatrixInSpiralOrderTest.java │ ├── SolveSystemTest.java │ └── StochasticMatrixTest.java ├── misc/ │ ├── ColorContrastRatioTest.java │ ├── MapReduceTest.java │ ├── MedianOfRunningArrayTest.java │ ├── PalindromePrimeTest.java │ ├── PalindromeSinglyLinkedListTest.java │ ├── RangeInSortedArrayTest.java │ ├── ShuffleArrayTest.java │ ├── SparsityTest.java │ ├── ThreeSumProblemTest.java │ └── TwoSumProblemTest.java ├── others/ │ ├── ArrayLeftRotationTest.java │ ├── ArrayRightRotationTest.java │ ├── BFPRTTest.java │ ├── BestFitCPUTest.java │ ├── BoyerMooreTest.java │ ├── CRC16Test.java │ ├── CRCAlgorithmTest.java │ ├── ConwayTest.java │ ├── CountFriendsPairingTest.java │ ├── FirstFitCPUTest.java │ ├── FloydTriangleTest.java │ ├── HuffmanTest.java │ ├── InsertDeleteInArrayTest.java │ ├── IterativeFloodFillTest.java │ ├── KadaneAlogrithmTest.java │ ├── LineSweepTest.java │ ├── LinkListSortTest.java │ ├── LowestBasePalindromeTest.java │ ├── MaximumSumOfDistinctSubarraysWithLengthKTest.java │ ├── MiniMaxAlgorithmTest.java │ ├── MosAlgorithmTest.java │ ├── NextFitTest.java │ ├── PageRankTest.java │ ├── PasswordGenTest.java │ ├── PerlinNoiseTest.java │ ├── QueueUsingTwoStacksTest.java │ ├── SkylineProblemTest.java │ ├── TwoPointersTest.java │ └── WorstFitCPUTest.java ├── physics/ │ ├── CoulombsLawTest.java │ ├── DampedOscillatorTest.java │ ├── ElasticCollision2DTest.java │ ├── GravitationTest.java │ ├── GroundToGroundProjectileMotionTest.java │ ├── KinematicsTest.java │ ├── ProjectileMotionTest.java │ ├── SimplePendulumRK4Test.java │ ├── SnellLawTest.java │ └── ThinLensTest.java ├── prefixsum/ │ ├── DifferenceArrayTest.java │ ├── PrefixSum2DTest.java │ ├── PrefixSumTest.java │ ├── RangeSumQueryTest.java │ └── SubarraySumEqualskTest.java ├── puzzlesandgames/ │ ├── TowerOfHanoiTest.java │ └── WordBoggleTest.java ├── randomized/ │ ├── KargerMinCutTest.java │ ├── MonteCarloIntegrationTest.java │ ├── RandomizedClosestPairTest.java │ ├── RandomizedMatrixMultiplicationVerificationTest.java │ ├── RandomizedQuickSortTest.java │ └── ReservoirSamplingTest.java ├── recursion/ │ ├── DiceThrowerTest.java │ ├── FactorialRecursionTest.java │ ├── FibonacciSeriesTest.java │ ├── GenerateSubsetsTest.java │ └── SylvesterSequenceTest.java ├── scheduling/ │ ├── AgingSchedulingTest.java │ ├── EDFSchedulingTest.java │ ├── FCFSSchedulingTest.java │ ├── FairShareSchedulingTest.java │ ├── GangSchedulingTest.java │ ├── HighestResponseRatioNextSchedulingTest.java │ ├── JobSchedulingWithDeadlineTest.java │ ├── LotterySchedulingTest.java │ ├── MLFQSchedulerTest.java │ ├── MultiAgentSchedulingTest.java │ ├── NonPreemptivePrioritySchedulingTest.java │ ├── PreemptivePrioritySchedulingTest.java │ ├── ProportionalFairSchedulingTest.java │ ├── RRSchedulingTest.java │ ├── RandomSchedulingTest.java │ ├── SJFSchedulingTest.java │ ├── SRTFSchedulingTest.java │ ├── SelfAdjustingSchedulingTest.java │ ├── SlackTimeSchedulingTest.java │ └── diskscheduling/ │ ├── CircularLookSchedulingTest.java │ ├── CircularScanSchedulingTest.java │ ├── LookSchedulingTest.java │ ├── SSFSchedulingTest.java │ └── ScanSchedulingTest.java ├── searches/ │ ├── BM25InvertedIndexTest.java │ ├── BinarySearch2dArrayTest.java │ ├── BinarySearchTest.java │ ├── BoyerMooreTest.java │ ├── BreadthFirstSearchTest.java │ ├── DepthFirstSearchTest.java │ ├── ExponentialSearchTest.java │ ├── FibonacciSearchTest.java │ ├── HowManyTimesRotatedTest.java │ ├── InterpolationSearchTest.java │ ├── IterativeBinarySearchTest.java │ ├── IterativeTernarySearchTest.java │ ├── JumpSearchTest.java │ ├── KMPSearchTest.java │ ├── LinearSearchTest.java │ ├── LinearSearchThreadTest.java │ ├── LowerBoundTest.java │ ├── MonteCarloTreeSearchTest.java │ ├── OrderAgnosticBinarySearchTest.java │ ├── QuickSelectTest.java │ ├── RabinKarpAlgorithmTest.java │ ├── RandomSearchTest.java │ ├── RecursiveBinarySearchTest.java │ ├── RotatedBinarySearchTest.java │ ├── RowColumnWiseSorted2dArrayBinarySearchTest.java │ ├── SaddlebackSearchTest.java │ ├── SearchInARowAndColWiseSortedMatrixTest.java │ ├── SentinelLinearSearchTest.java │ ├── SquareRootBinarySearchTest.java │ ├── TernarySearchTest.java │ ├── TestSearchInARowAndColWiseSortedMatrix.java │ ├── UnionFindTest.java │ └── UpperBoundTest.java ├── slidingwindow/ │ ├── CountNiceSubarraysTest.java │ ├── LongestSubarrayWithSumLessOrEqualToKTest.java │ ├── LongestSubstringWithoutRepeatingCharactersTest.java │ ├── MaxSumKSizeSubarrayTest.java │ ├── MaximumSlidingWindowTest.java │ ├── MinSumKSizeSubarrayTest.java │ ├── MinimumWindowSubstringTest.java │ └── ShortestCoprimeSegmentTest.java ├── sorts/ │ ├── AdaptiveMergeSortTest.java │ ├── BeadSortTest.java │ ├── BinaryInsertionSortTest.java │ ├── BitonicSortTest.java │ ├── BogoSortTest.java │ ├── BubbleSortRecursiveTest.java │ ├── BubbleSortTest.java │ ├── BucketSortTest.java │ ├── CircleSortTest.java │ ├── CocktailShakerSortTest.java │ ├── CombSortTest.java │ ├── CountingSortTest.java │ ├── CycleSortTest.java │ ├── DarkSortTest.java │ ├── DualPivotQuickSortTest.java │ ├── DutchNationalFlagSortTest.java │ ├── ExchangeSortTest.java │ ├── FlashSortTest.java │ ├── GnomeSortTest.java │ ├── HeapSortTest.java │ ├── InsertionSortTest.java │ ├── IntrospectiveSortTest.java │ ├── MergeSortNoExtraSpaceTest.java │ ├── MergeSortRecursiveTest.java │ ├── MergeSortTest.java │ ├── OddEvenSortTest.java │ ├── PancakeSortTest.java │ ├── PatienceSortTest.java │ ├── PigeonholeSortTest.java │ ├── PriorityQueueSortTest.java │ ├── QuickSortTest.java │ ├── RadixSortTest.java │ ├── SelectionSortRecursiveTest.java │ ├── SelectionSortTest.java │ ├── ShellSortTest.java │ ├── SlowSortTest.java │ ├── SmoothSortTest.java │ ├── SortUtilsRandomGeneratorTest.java │ ├── SortUtilsTest.java │ ├── SortingAlgorithmTest.java │ ├── SpreadSortTest.java │ ├── StalinSortTest.java │ ├── StoogeSortTest.java │ ├── StrandSortTest.java │ ├── SwapSortTest.java │ ├── TimSortTest.java │ ├── TopologicalSortTest.java │ ├── TournamentSortTest.java │ ├── TreeSortTest.java │ ├── WaveSortTest.java │ └── WiggleSortTest.java ├── stacks/ │ ├── BalancedBracketsTest.java │ ├── CelebrityFinderTest.java │ ├── DecimalToAnyUsingStackTest.java │ ├── DuplicateBracketsTest.java │ ├── GreatestElementConstantTimeTest.java │ ├── InfixToPostfixTest.java │ ├── InfixToPrefixTest.java │ ├── LargestRectangleTest.java │ ├── MinStackUsingSingleStackTest.java │ ├── MinStackUsingTwoStacksTest.java │ ├── NextGreaterElementTest.java │ ├── NextSmallerElementTest.java │ ├── PalindromeWithStackTest.java │ ├── PostfixEvaluatorTest.java │ ├── PostfixToInfixTest.java │ ├── PrefixEvaluatorTest.java │ ├── PrefixToInfixTest.java │ ├── SmallestElementConstantTimeTest.java │ ├── SortStackTest.java │ ├── StackPostfixNotationTest.java │ ├── StackUsingTwoQueuesTest.java │ ├── TrappingRainwaterTest.java │ └── ValidParenthesesTest.java ├── strings/ │ ├── AhoCorasickTest.java │ ├── AlphabeticalTest.java │ ├── AlternativeStringArrangeTest.java │ ├── AnagramsTest.java │ ├── CharactersSameTest.java │ ├── CheckVowelsTest.java │ ├── CountCharTest.java │ ├── CountWordsTest.java │ ├── HammingDistanceTest.java │ ├── HorspoolSearchTest.java │ ├── IsogramTest.java │ ├── IsomorphicTest.java │ ├── KMPTest.java │ ├── KasaiAlgorithmTest.java │ ├── LengthOfLastWordTest.java │ ├── LetterCombinationsOfPhoneNumberTest.java │ ├── LongestCommonPrefixTest.java │ ├── LongestNonRepetitiveSubstringTest.java │ ├── LongestRepeatedSubstringTest.java │ ├── LowerTest.java │ ├── ManacherTest.java │ ├── MyAtoiTest.java │ ├── PalindromeTest.java │ ├── PangramTest.java │ ├── PermuteStringTest.java │ ├── RabinKarpTest.java │ ├── RemoveDuplicateFromStringTest.java │ ├── RemoveStarsTest.java │ ├── ReturnSubsequenceTest.java │ ├── ReverseStringTest.java │ ├── ReverseWordsInStringTest.java │ ├── RotationTest.java │ ├── StringCompressionTest.java │ ├── StringMatchFiniteAutomataTest.java │ ├── SuffixArrayTest.java │ ├── TopKFrequentWordsTest.java │ ├── UpperTest.java │ ├── WordLadderTest.java │ ├── ZAlgorithmTest.java │ └── zigZagPattern/ │ └── ZigZagPatternTest.java └── tree/ └── HeavyLightDecompositionTest.java