Full Code of TheAlgorithms/Java for AI

master af1d9d166522 cached
1570 files
4.4 MB
1.3M tokens
10090 symbols
1 requests
Download .txt
Showing preview only (5,010K chars total). Download the full file or copy to clipboard to get everything.
Repository: TheAlgorithms/Java
Branch: master
Commit: af1d9d166522
Files: 1570
Total size: 4.4 MB

Directory structure:
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

================================================
FILE CONTENTS
================================================

================================================
FILE: .clang-format
================================================
---
Language: Java
AccessModifierOffset: -4
AlignAfterOpenBracket: DontAlign
AlignConsecutiveMacros: false
AlignConsecutiveAssignments: false
AlignConsecutiveDeclarations: false
AlignEscapedNewlines: Right
AlignOperands:   false
AlignTrailingComments: false
AllowAllArgumentsOnNextLine: true
AllowAllConstructorInitializersOnNextLine: true
AllowAllParametersOfDeclarationOnNextLine: true
AllowShortBlocksOnASingleLine: Never
AllowShortCaseLabelsOnASingleLine: false
AllowShortFunctionsOnASingleLine: false
AllowShortLambdasOnASingleLine: All
AllowShortIfStatementsOnASingleLine: true
AllowShortLoopsOnASingleLine: true
AlwaysBreakAfterDefinitionReturnType: None
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: false
AlwaysBreakTemplateDeclarations: MultiLine
BinPackArguments: true
BinPackParameters: true
BraceWrapping:
  AfterCaseLabel:  false
  AfterClass:      false
  AfterControlStatement: false
  AfterEnum:       false
  AfterFunction:   false
  AfterNamespace:  false
  AfterObjCDeclaration: false
  AfterStruct:     false
  AfterUnion:      false
  AfterExternBlock: false
  BeforeCatch:     false
  BeforeElse:      false
  IndentBraces:    false
  SplitEmptyFunction: true
  SplitEmptyRecord: true
  SplitEmptyNamespace: true
BreakBeforeBinaryOperators: All
BreakBeforeBraces: Custom
BreakBeforeInheritanceComma: false
BreakInheritanceList: BeforeColon
BreakBeforeTernaryOperators: true
BreakConstructorInitializersBeforeComma: false
BreakConstructorInitializers: BeforeComma
BreakAfterJavaFieldAnnotations: false
BreakStringLiterals: true
ColumnLimit:     300
CommentPragmas:  '^ IWYU pragma:'
CompactNamespaces: false
ConstructorInitializerAllOnOneLineOrOnePerLine: false
ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 4
Cpp11BracedListStyle: true
DeriveLineEnding: true
DerivePointerAlignment: false
DisableFormat:   false
ExperimentalAutoDetectBinPacking: false
FixNamespaceComments: false
ForEachMacros:
  - foreach
  - Q_FOREACH
  - BOOST_FOREACH
IncludeBlocks:   Preserve
IncludeCategories:
  - Regex:           '^"(llvm|llvm-c|clang|clang-c)/'
    Priority:        2
    SortPriority:    0
  - Regex:           '^(<|"(gtest|gmock|isl|json)/)'
    Priority:        3
    SortPriority:    0
  - Regex:           '.*'
    Priority:        1
    SortPriority:    0
IncludeIsMainRegex: '(Test)?$'
IncludeIsMainSourceRegex: ''
IndentCaseLabels: false
IndentGotoLabels: true
IndentPPDirectives: None
IndentWidth:     4
IndentWrappedFunctionNames: false
InsertNewlineAtEOF: true
JavaScriptQuotes: Leave
JavaScriptWrapImports: true
KeepEmptyLinesAtTheStartOfBlocks: true
MacroBlockBegin: ''
MacroBlockEnd:   ''
MaxEmptyLinesToKeep: 1
NamespaceIndentation: Inner
ObjCBinPackProtocolList: Auto
ObjCBlockIndentWidth: 4
ObjCSpaceAfterProperty: true
ObjCSpaceBeforeProtocolList: true
PenaltyBreakAssignment: 2
PenaltyBreakBeforeFirstCallParameter: 19
PenaltyBreakComment: 300
PenaltyBreakFirstLessLess: 120
PenaltyBreakString: 1000
PenaltyBreakTemplateDeclaration: 10
PenaltyExcessCharacter: 1000000
PenaltyReturnTypeOnItsOwnLine: 60
PointerAlignment: Left
ReflowComments:  true
SortIncludes:    true
SortUsingDeclarations: true
SpaceAfterCStyleCast: true
SpaceAfterLogicalNot: false
SpaceAfterTemplateKeyword: true
SpaceBeforeAssignmentOperators: true
SpaceBeforeCpp11BracedList: false
SpaceBeforeCtorInitializerColon: true
SpaceBeforeInheritanceColon: true
SpaceBeforeParens: ControlStatements
SpaceBeforeRangeBasedForLoopColon: true
SpaceInEmptyBlock: false
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 1
SpacesInAngles:  false
SpacesInConditionalStatement: false
SpacesInContainerLiterals: false
SpacesInCStyleCastParentheses: false
SpacesInParentheses: false
SpacesInSquareBrackets: false
SpaceBeforeSquareBrackets: false
Standard:        Latest
StatementMacros:
  - Q_UNUSED
  - QT_REQUIRE_VERSION
TabWidth:        8
UseCRLF:         false
UseTab:          Never
...


================================================
FILE: .devcontainer/Dockerfile
================================================
# See here for image contents: https://github.com/microsoft/vscode-dev-containers/tree/v0.238.0/containers/java/.devcontainer/base.Dockerfile

# [Choice] Java version (use -bullseye variants on local arm64/Apple Silicon): 11, 17, 11-bullseye, 17-bullseye, 11-buster, 17-buster
ARG VARIANT="21-bullseye"
FROM mcr.microsoft.com/vscode/devcontainers/java:1.1.0-${VARIANT}

# [Option] Install Maven
ARG INSTALL_MAVEN="false"
ARG MAVEN_VERSION=""
# [Option] Install Gradle
ARG INSTALL_GRADLE="false"
ARG GRADLE_VERSION=""
RUN if [ "${INSTALL_MAVEN}" = "true" ]; then su vscode -c "umask 0002 && . /usr/local/sdkman/bin/sdkman-init.sh && sdk install maven \"${MAVEN_VERSION}\""; fi \
    && if [ "${INSTALL_GRADLE}" = "true" ]; then su vscode -c "umask 0002 && . /usr/local/sdkman/bin/sdkman-init.sh && sdk install gradle \"${GRADLE_VERSION}\""; fi

# [Choice] Node.js version: none, lts/*, 16, 14, 12, 10
ARG NODE_VERSION="none"
RUN if [ "${NODE_VERSION}" != "none" ]; then su vscode -c "umask 0002 && . /usr/local/share/nvm/nvm.sh && nvm install ${NODE_VERSION} 2>&1"; fi

# [Optional] Uncomment this section to install additional OS packages.
# RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
#     && apt-get -y install --no-install-recommends <your-package-list-here>

# [Optional] Uncomment this line to install global node packages.
# RUN su vscode -c "source /usr/local/share/nvm/nvm.sh && npm install -g <your-package-here>" 2>&1

================================================
FILE: .devcontainer/devcontainer.json
================================================
// For format details, see https://aka.ms/devcontainer.json. For config options, see the README at:
// https://github.com/microsoft/vscode-dev-containers/tree/v0.238.0/containers/java
{
	"name": "Java",
	"build": {
		"dockerfile": "Dockerfile",
		"args": {
			// Update the VARIANT arg to pick a Java version: 11, 17
			// Append -bullseye or -buster to pin to an OS version.
			// Use the -bullseye variants on local arm64/Apple Silicon.
			"VARIANT": "21-bullseye",
			// Options
			"INSTALL_MAVEN": "true",
			"INSTALL_GRADLE": "true",
			"NODE_VERSION": "lts/*"
		}
	},

	// Configure tool-specific properties.
	"customizations": {
		// Configure properties specific to VS Code.
		"vscode": {
			// Set *default* container specific settings.json values on container create.
			"settings": { 
			},
			
			// Add the IDs of extensions you want installed when the container is created.
			"extensions": [
				"vscjava.vscode-java-pack",
				"GitHub.copilot",
			]
		}
	},

	// Use 'forwardPorts' to make a list of ports inside the container available locally.
	// "forwardPorts": [],

	// Use 'postCreateCommand' to run commands after the container is created.
	"postCreateCommand": "java -version",

	// Comment out to connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root.
	"remoteUser": "vscode",
	"features": {
		"git": "os-provided",
		"github-cli": "latest"
	}
}


================================================
FILE: .github/CODEOWNERS
================================================
* @DenizAltunkapan @yanglbme @alxkm


================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.yml
================================================
name: "Bug report"
description: "Create a report to help us improve"
title: "[BUG] <title>"
labels: ["bug"]
body:
  - type: textarea
    id: description
    attributes:
      label: "Description"
      description: "A clear and concise description of what the bug is."
    validations:
      required: true
  - type: textarea
    id: steps
    attributes:
      label: "Steps to reproduce"
      description: "Steps to reproduce the behavior (if applicable)"
      placeholder: |
       1. Go to '...'
       2. Click on '....'
       3. Scroll down to '....'
       4. See error
    validations:
      required: false
  - type: textarea
    id: exceptedbhv
    attributes:
      label: "Excepted behavior"
      description: "A clear and concise description of what you expected to happen."
    validations:
      required: true
  - type: textarea
    id: screenshots
    attributes:
      label: "Screenshots"
      description: "If applicable, add screenshots to help explain your problem."
    validations:
      required: false
  - type: textarea
    id: context
    attributes:
      label: "Additional context"
      description: "Is there anything else we should know about this bug report?"
    validations:
      required: false


================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
blank_issues_enabled: false
contact_links:
  - name: Discord community
    url: https://the-algorithms.com/discord/
    about: Have any questions or found any bugs? Please contact us via Discord


================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.yml
================================================
name: "Feature Request"
description: "Suggest an idea for this project"
title: "[FEATURE REQUEST] <title>"
labels: ["enhancement"]
body:
  - type: textarea
    id: description
    attributes:
      label: What would you like to Propose?
      description: Provide a clear and concise explanation of your Proposal.
    validations:
      required: true
  - type: markdown
    attributes:
      value: |
        For new implementations, please specify the name and problem statement for the algorithm.
        For algorithm enhancements, specify what needs to be changed and why. For example:
        - Adding tests.
        - Optimizing logic.
        - Refactoring the file and folders for better structure.
  - type: textarea
    id: needdetails
    attributes:
      label: "Issue details"
      description: "Write down all the issue/algorithm details description mentioned above."
    validations:
      required: true
  - type: textarea
    id: extrainfo
    attributes:
      label: "Additional Information"
      description: "Add any other information or screenshots about the request here."
    validations:
      required: false


================================================
FILE: .github/ISSUE_TEMPLATE/other.yml
================================================
name: Other
description: Use this for any other issues. Do NOT create blank issues
title: "[OTHER]"
labels: ["awaiting triage"]
body:
  - type: textarea
    id: issuedescription
    attributes:
      label: What would you like to share?
      description: Provide a clear and concise explanation of your issue.
    validations:
      required: true
  - type: textarea
    id: extrainfo
    attributes:
      label: Additional information
      description: Is there anything else we should know about this issue?
    validations:
      required: false


================================================
FILE: .github/dependabot.yml
================================================
---
version: 2
updates:
  - package-ecosystem: "docker"
    directory: "/"
    schedule:
      interval: "weekly"

  - package-ecosystem: "github-actions"
    directory: "/.github/workflows/"
    schedule:
      interval: "daily"

  - package-ecosystem: "maven"
    directory: "/"
    schedule:
      interval: "daily"
...


================================================
FILE: .github/pull_request_template.md
================================================
<!--
Thank you for your contribution!
In order to reduce the number of notifications sent to the maintainers, please:
- create your PR as draft, cf. https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests#draft-pull-requests,
- make sure that all of the CI checks pass,
- mark your PR as ready for review, cf. https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-stage-of-a-pull-request#marking-a-pull-request-as-ready-for-review
-->

<!-- For completed items, change [ ] to [x] -->

- [ ] I have read [CONTRIBUTING.md](https://github.com/TheAlgorithms/Java/blob/master/CONTRIBUTING.md).
- [ ] This pull request is all my own work -- I have not plagiarized it.
- [ ] All filenames are in PascalCase.
- [ ] All functions and variable names follow Java naming conventions.
- [ ] All new algorithms have a URL in their comments that points to Wikipedia or other similar explanations.
- [ ] All new algorithms include a corresponding test class that validates their functionality.
- [ ] All new code is formatted with `clang-format -i --style=file path/to/your/file.java`


================================================
FILE: .github/workflows/build.yml
================================================
name: Build
on: [push, pull_request]

permissions:
  contents: read

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - name: Set up JDK
        uses: actions/setup-java@v5
        with:
          java-version: 21
          distribution: 'temurin'
      - name: Build with Maven
        run: mvn --batch-mode --update-snapshots verify
      - name: Upload coverage to codecov (tokenless)
        if: >-
          github.event_name == 'pull_request' &&
          github.event.pull_request.head.repo.full_name != github.repository
        uses: codecov/codecov-action@v5
        with:
          fail_ci_if_error: true
      - name: Upload coverage to codecov (with token)
        if: >
          github.repository == 'TheAlgorithms/Java' &&
          (github.event_name != 'pull_request' ||
          github.event.pull_request.head.repo.full_name == github.repository)
        uses: codecov/codecov-action@v5
        with:
          token: ${{ secrets.CODECOV_TOKEN }}
          fail_ci_if_error: true
      - name: Checkstyle
        run: mvn checkstyle:check
      - name: SpotBugs
        run: mvn spotbugs:check
      - name: PMD
        run: mvn pmd:check


================================================
FILE: .github/workflows/clang-format-lint.yml
================================================
name: Clang format linter
on:
  push: {}
  pull_request: {}

permissions:
  contents: read

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v6
    - uses: DoozyX/clang-format-lint-action@v0.20
      with:
        source: './src'
        extensions: 'java'
        clangFormatVersion: 16


================================================
FILE: .github/workflows/close-failed-prs.yml
================================================
name: Close stale PRs with failed workflows

on:
  schedule:
    - cron: '0 3 * * *' # runs daily at 03:00 UTC
  workflow_dispatch:

permissions:
  contents: read
  issues: write
  pull-requests: write

jobs:
  close-stale:
    runs-on: ubuntu-latest
    steps:
      - name: Close stale PRs
        uses: actions/github-script@v8
        with:
          github-token: ${{ secrets.GITHUB_TOKEN }}
          script: |
            const mainBranches = ['main', 'master'];
            const cutoffDays = 14;
            const cutoff = new Date();
            cutoff.setDate(cutoff.getDate() - cutoffDays);

            console.log(`Checking PRs older than: ${cutoff.toISOString()}`);

            try {
              const { data: prs } = await github.rest.pulls.list({
                owner: context.repo.owner,
                repo: context.repo.repo,
                state: 'open',
                sort: 'updated',
                direction: 'asc',
                per_page: 100
              });

              console.log(`Found ${prs.length} open PRs to check`);

              for (const pr of prs) {
                try {
                  const updated = new Date(pr.updated_at);
                  
                  if (updated > cutoff) {
                    console.log(`⏩ Skipping PR #${pr.number} - updated recently`);
                    continue;
                  }

                  console.log(`🔍 Checking PR #${pr.number}: "${pr.title}"`);

                  // Get commits
                  const commits = await github.paginate(github.rest.pulls.listCommits, {
                    owner: context.repo.owner,
                    repo: context.repo.repo,
                    pull_number: pr.number,
                    per_page: 100
                  });

                  const meaningfulCommits = commits.filter(c => {
                    const msg = c.commit.message.toLowerCase();
                    const date = new Date(c.commit.committer.date);
                    const isMergeFromMain = mainBranches.some(branch =>
                      msg.startsWith(`merge branch '${branch}'`) ||
                      msg.includes(`merge remote-tracking branch '${branch}'`)
                    );
                      
                    return !isMergeFromMain && date > cutoff;
                  });

                  // Get checks with error handling
                  let hasFailedChecks = false;
                  let allChecksCompleted = false;
                  let hasChecks = false;
                  
                  try {
                    const { data: checks } = await github.rest.checks.listForRef({
                      owner: context.repo.owner,
                      repo: context.repo.repo,
                      ref: pr.head.sha
                    });
                    
                    hasChecks = checks.check_runs.length > 0;
                    hasFailedChecks = checks.check_runs.some(c => c.conclusion === 'failure');
                    allChecksCompleted = checks.check_runs.every(c => 
                      c.status === 'completed' || c.status === 'skipped'
                    );
                  } catch (error) {
                    console.log(`⚠️ Could not fetch checks for PR #${pr.number}: ${error.message}`);
                  }

                  // Get workflow runs with error handling
                  let hasFailedWorkflows = false;
                  let allWorkflowsCompleted = false;
                  let hasWorkflows = false;
                  
                  try {
                    const { data: runs } = await github.rest.actions.listWorkflowRuns({
                      owner: context.repo.owner,
                      repo: context.repo.repo,
                      head_sha: pr.head.sha,
                      per_page: 50
                    });

                    hasWorkflows = runs.workflow_runs.length > 0;
                    hasFailedWorkflows = runs.workflow_runs.some(r => r.conclusion === 'failure');
                    allWorkflowsCompleted = runs.workflow_runs.every(r => 
                      ['completed', 'skipped', 'cancelled'].includes(r.status)
                    );

                    console.log(`PR #${pr.number}: ${runs.workflow_runs.length} workflow runs found`);

                  } catch (error) {
                    console.log(`⚠️ Could not fetch workflow runs for PR #${pr.number}: ${error.message}`);
                  }

                  console.log(`PR #${pr.number}: ${meaningfulCommits.length} meaningful commits`);
                  console.log(`Checks - has: ${hasChecks}, failed: ${hasFailedChecks}, completed: ${allChecksCompleted}`);
                  console.log(`Workflows - has: ${hasWorkflows}, failed: ${hasFailedWorkflows}, completed: ${allWorkflowsCompleted}`);

                  // Combine conditions - only consider if we actually have checks/workflows
                  const hasAnyFailure = (hasChecks && hasFailedChecks) || (hasWorkflows && hasFailedWorkflows);
                  const allCompleted = (!hasChecks || allChecksCompleted) && (!hasWorkflows || allWorkflowsCompleted);

                  if (meaningfulCommits.length === 0 && hasAnyFailure && allCompleted) {
                    console.log(`✅ Closing PR #${pr.number} (${pr.title})`);

                    await github.rest.issues.createComment({
                      owner: context.repo.owner,
                      repo: context.repo.repo,
                      issue_number: pr.number,
                      body: `This pull request has been automatically closed because its workflows or checks failed and it has been inactive for more than ${cutoffDays} days. Please fix the workflows and reopen if you'd like to continue. Merging from main/master alone does not count as activity.`
                    });

                    await github.rest.pulls.update({
                      owner: context.repo.owner,
                      repo: context.repo.repo,
                      pull_number: pr.number,
                      state: 'closed'
                    });
                    
                    console.log(`✅ Successfully closed PR #${pr.number}`);
                  } else {
                    console.log(`⏩ Not closing PR #${pr.number} - conditions not met`);
                  }

                } catch (prError) {
                  console.error(`❌ Error processing PR #${pr.number}: ${prError.message}`);
                  continue;
                }
              }
              
            } catch (error) {
              console.error(`❌ Fatal error: ${error.message}`);
              throw error;
            }


================================================
FILE: .github/workflows/codeql.yml
================================================
---
name: "CodeQL"

on:
  workflow_dispatch:
  push:
    branches:
      - master
  pull_request:
  schedule:
    - cron: '53 3 * * 0'

jobs:
  analyzeJava:
    name: AnalyzeJava
    runs-on: 'ubuntu-latest'
    permissions:
      actions: read
      contents: read
      security-events: write

    steps:
      - name: Checkout repository
        uses: actions/checkout@v6

      - name: Set up JDK
        uses: actions/setup-java@v5
        with:
          java-version: 21
          distribution: 'temurin'

      - name: Initialize CodeQL
        uses: github/codeql-action/init@v4
        with:
          languages: 'java-kotlin'

      - name: Build
        run: mvn --batch-mode --update-snapshots verify

      - name: Perform CodeQL Analysis
        uses: github/codeql-action/analyze@v4
        with:
          category: "/language:java-kotlin"

  analyzeActions:
    name: AnalyzeActions
    runs-on: 'ubuntu-latest'
    permissions:
      actions: read
      contents: read
      security-events: write

    steps:
      - name: Checkout repository
        uses: actions/checkout@v6

      - name: Initialize CodeQL
        uses: github/codeql-action/init@v4
        with:
          languages: 'actions'

      - name: Perform CodeQL Analysis
        uses: github/codeql-action/analyze@v4
        with:
          category: "/language:actions"
...


================================================
FILE: .github/workflows/infer.yml
================================================
---
name: Infer

'on':
  workflow_dispatch:
  push:
    branches:
      - master
  pull_request:

permissions:
  contents: read

jobs:
  run_infer:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6

      - name: Set up JDK
        uses: actions/setup-java@v5
        with:
          java-version: 21
          distribution: 'temurin'

      - name: Set up OCaml
        uses: ocaml/setup-ocaml@v3
        with:
          ocaml-compiler: 5

      - name: Get current year/weak
        run: echo "year_week=$(date +'%Y_%U')" >> $GITHUB_ENV

      - name: Cache infer build
        id: cache-infer
        uses: actions/cache@v5
        with:
          path: infer
          key: ${{ runner.os }}-infer-${{ env.year_week }}

      - name: Build infer
        if: steps.cache-infer.outputs.cache-hit != 'true'
        run: |
          cd ..
          git clone https://github.com/facebook/infer.git
          cd infer
          git checkout 02c2c43b71e4c5110c0be841e66153942fda06c9
          ./build-infer.sh java
          cp -r infer ../Java

      - name: Add infer to PATH
        run: |
          echo "infer/bin" >> $GITHUB_PATH

      - name: Display infer version
        run: |
          which infer
          infer --version

      - name: Run infer
        run: |
          mvn clean
          infer --fail-on-issue  --print-logs --no-progress-bar -- mvn test
...


================================================
FILE: .github/workflows/project_structure.yml
================================================
---
name: ProjectStructure

'on':
  workflow_dispatch:
  push:
    branches:
      - master
  pull_request:

permissions:
  contents: read

jobs:
  check_structure:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - uses: actions/setup-python@v6
        with:
          python-version: '3.13'

      - name: Check project structure
        run: python3 .github/workflows/scripts/check_structure.py
...


================================================
FILE: .github/workflows/scripts/check_structure.py
================================================
import pathlib
import sys


def _is_java_file_properly_located(java_file: pathlib.Path) -> bool:
    main_parents = java_file.parent.parents
    return (
        pathlib.Path("src/main/java/com/thealgorithms/") in main_parents
        or pathlib.Path("src/test/java/com/thealgorithms/") in main_parents
    )


def _find_misplaced_java_files() -> list[pathlib.Path]:
    return [
        java_file
        for java_file in pathlib.Path(".").rglob("*.java")
        if not _is_java_file_properly_located(java_file)
    ]


if __name__ == "__main__":
    misplaced_files = _find_misplaced_java_files()
    if misplaced_files:
        print("The following java files are not located in the correct directory:")
        for _ in misplaced_files:
            print(_)
        sys.exit(1)


================================================
FILE: .github/workflows/stale.yml
================================================
name: 'Close stale issues and PRs'
on:
  schedule:
    - cron: '0 0 * * *'
permissions:
  contents: read
jobs:
  stale:
    permissions:
      issues: write
      pull-requests: write
    runs-on: ubuntu-latest
    steps:
      - uses: actions/stale@v10
        with:
          stale-issue-message: 'This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contribution!'
          close-issue-message: 'Please reopen this issue once you have made the required changes. If you need help, feel free to ask in our [Discord](https://the-algorithms.com/discord) server or ping one of the maintainers here. Thank you for your contribution!'
          stale-pr-message: 'This pull request has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contribution!'
          close-pr-message: 'Please reopen this pull request once you have made the required changes. If you need help, feel free to ask in our [Discord](https://the-algorithms.com/discord) server or ping one of the maintainers here. Thank you for your contribution!'
          exempt-issue-labels: 'dont-close'
          exempt-pr-labels: 'dont-close'
          days-before-stale: 30
          days-before-close: 7


================================================
FILE: .github/workflows/update-directorymd.yml
================================================
name: Generate Directory Markdown

on:
  push:
    branches: [master]
  workflow_dispatch:

permissions:
  contents: write
  pull-requests: write

jobs:
  generate-directory:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Repository
        uses: actions/checkout@v6
        with:
          persist-credentials: false

      - name: Run Directory Tree Generator
        uses: DenizAltunkapan/directory-tree-generator@v2
        with:
          path: src
          extensions: .java
          show-extensions: false

      - name: Commit changes
        run: |
          git config --global user.name "$GITHUB_ACTOR"
          git config --global user.email "$GITHUB_ACTOR@users.noreply.github.com"
          git add DIRECTORY.md
          git diff --cached --quiet || git commit -m "Update DIRECTORY.md"
      
      - name: Create Pull Request
        uses: peter-evans/create-pull-request@v8
        with:
          token: ${{ secrets.REPO_SCOPED_TOKEN }}
          branch: update-directory
          base: master
          title: "Update DIRECTORY.md"
          body: "Automatically generated update of the directory tree."
          commit-message: "Update DIRECTORY.md"
          draft: false


================================================
FILE: .gitignore
================================================
/gradle/wrapper/gradle-wrapper.properties

##----------Android----------
*.apk
*.ap_
*.dex
*.class
bin/
gen/
build/
out/

# Ignoring Gradle build artifacts and project files
##----------Gradle----------
.gradle/
gradle-app.setting
!gradle-wrapper.jar
build/

# Ignoring Maven build artifacts and project files
##----------Maven----------
*.classpath
*.project
*.settings
/target/
local.properties

# Ignoring IntelliJ IDEA project files and configurations
##----------IDEA----------
*.iml
.idea/
*.ipr
*.iws

# Ignoring Android Studio Navigation editor temporary files
.navigation/

# Ignoring common system and editor-generated files
##----------Other----------
*~
.DS_Store
gradle.properties
.vscode
*.log

/infer-out/


================================================
FILE: .gitpod.dockerfile
================================================
FROM gitpod/workspace-java-21:2025-11-14-10-05-32

ENV LLVM_SCRIPT="tmp_llvm.sh"

RUN test ! -f  "$LLVM_SCRIPT" \
  && wget https://apt.llvm.org/llvm.sh -O "$LLVM_SCRIPT" \
  && chmod +x "$LLVM_SCRIPT"

USER root

RUN ./"$LLVM_SCRIPT" 16 \
  && apt-get update \
  && apt-get install -y --no-install-recommends \
  clang-format-16=1:16.0.6~++20231112100510+7cbf1a259152-1~exp1~20231112100554.106 \
  && apt-get clean \
  && rm -rf /var/lib/apt/lists/*

RUN ln -s "$(command -v clang-format-16)" "/usr/bin/clang-format"

USER gitpod

RUN rm "$LLVM_SCRIPT"


================================================
FILE: .gitpod.yml
================================================
---
image:
  file: .gitpod.dockerfile

tasks:
  - init: |
      mvn dependency:resolve
      mvn compile

vscode:
  extensions:
    - xaver.clang-format



================================================
FILE: .inferconfig
================================================
{
    "report-block-list-path-regex": [
        "src/main/java/com/thealgorithms/ciphers/a5/CompositeLFSR.java",
        "src/main/java/com/thealgorithms/compression/ArithmeticCoding.java",
        "src/main/java/com/thealgorithms/datastructures/caches/FIFOCache.java",
        "src/main/java/com/thealgorithms/datastructures/crdt/GCounter.java",
        "src/main/java/com/thealgorithms/datastructures/crdt/PNCounter.java",
        "src/main/java/com/thealgorithms/datastructures/graphs/KahnsAlgorithm.java",
        "src/main/java/com/thealgorithms/datastructures/heaps/GenericHeap.java",
        "src/main/java/com/thealgorithms/datastructures/lists/DoublyLinkedList.java",
        "src/main/java/com/thealgorithms/datastructures/trees/CreateBinaryTreeFromInorderPreorder.java",
        "src/main/java/com/thealgorithms/divideandconquer/ClosestPair.java",
        "src/main/java/com/thealgorithms/dynamicprogramming/DamerauLevenshteinDistance.java",
        "src/main/java/com/thealgorithms/dynamicprogramming/Fibonacci.java",
        "src/main/java/com/thealgorithms/maths/SimpsonIntegration.java",
        "src/main/java/com/thealgorithms/others/Dijkstra.java",
        "src/main/java/com/thealgorithms/sorts/TopologicalSort.java",
        "src/main/java/com/thealgorithms/strings/AhoCorasick.java",
        "src/test/java/com/thealgorithms/compression/ShannonFanoTest.java",
        "src/test/java/com/thealgorithms/datastructures/caches/LRUCacheTest.java",
        "src/test/java/com/thealgorithms/datastructures/lists/SkipListTest.java",
        "src/test/java/com/thealgorithms/datastructures/trees/KDTreeTest.java",
        "src/test/java/com/thealgorithms/datastructures/trees/LazySegmentTreeTest.java",
        "src/test/java/com/thealgorithms/others/HuffmanTest.java",
        "src/test/java/com/thealgorithms/searches/QuickSelectTest.java",
        "src/test/java/com/thealgorithms/stacks/PostfixToInfixTest.java",
        "src/test/java/com/thealgorithms/strings/HorspoolSearchTest.java"
    ]
}


================================================
FILE: CONTRIBUTING.md
================================================
## How to contribute?

NOTE: *We DO NOT add leetcode problems. They are just applications of basic principles that can be found in other algorithms included in the repository.*

### Did you find a bug?

**Ensure the bug was not already reported** by searching on GitHub under [Project Issues](https://github.com/TheAlgorithms/Java/issues).
  - If it is mentioned in the issues and you want to fix it, [fork](https://github.com/TheAlgorithms/Java/fork) the repository and submit your implementation in a pull request. The project maintainers will evaluate it.
  - If the bug is **NOT** mentioned in the issues, [open a new issue](https://github.com/TheAlgorithms/Java/issues/new). Be sure to include a **title**, a clear **description** and a **test case** demonstrating the expected behavior that is not occurring.

NOTE: *Please avoid opening issues asking to be "assigned" to a particular algorithm. This merely creates unnecessary noise for maintainers. Instead, please submit your implementation in a pull request and project maintainers will evaluate it.*



### Do you want to contribute to the documentation?
   - [Fork](https://github.com/TheAlgorithms/Java/fork) the repository and make necessary changes.
   - Create a pull request.
   - It will be put under review for approval.
   - If approved, the requested changes will be merged to the repository.

### Do you want to add a new feature?

- [Open a new issue](https://github.com/TheAlgorithms/Java/issues/new).
- Be sure to include a **title**, a clear **description** and a **test case** demonstrating the new feature you want to add to the project.


### Do you have questions about the source code?

- Ask any question about how to use the repository in the [TheAlgorithms room in GITTER](https://gitter.im/TheAlgorithms/community?source=orgpage#) or [open a new issue](https://github.com/TheAlgorithms/Java/issues/new)

:+1::tada: That's all you need to know about the process now it's your turn to help us improve the repository, thank you again! :+1::tada:

================================================
FILE: DIRECTORY.md
================================================
# Project Structure

## src

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


================================================
FILE: LICENSE
================================================
MIT License

Copyright (c) 2021 The Algorithms

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.


================================================
FILE: README.md
================================================
# The Algorithms - Java

[![Build](https://github.com/TheAlgorithms/Java/actions/workflows/build.yml/badge.svg?branch=master)](https://github.com/TheAlgorithms/Java/actions/workflows/build.yml)
[![codecov](https://codecov.io/gh/TheAlgorithms/Java/graph/badge.svg?token=XAdPyqTIqR)](https://codecov.io/gh/TheAlgorithms/Java)
[![Discord chat](https://img.shields.io/discord/808045925556682782.svg?logo=discord&colorB=7289DA&style=flat-square)](https://discord.gg/c7MnfGFGa6)
[![Gitpod ready-to-code](https://img.shields.io/badge/Gitpod-ready--to--code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/TheAlgorithms/Java)


You can run and edit the algorithms, or contribute to them using Gitpod.io (a free online development environment) with a single click.

[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/TheAlgorithms/Java)

### All algorithms are implemented in Java (for educational purposes)
These implementations are intended for learning purposes. As such, they may be less efficient than the Java standard library.

## Contribution Guidelines
Please read our [Contribution Guidelines](CONTRIBUTING.md) before you contribute to this project.

## Algorithms
Our [directory](DIRECTORY.md) has the full list of applications.


================================================
FILE: checkstyle.xml
================================================
<?xml version="1.0"?>
<!DOCTYPE module PUBLIC
          "-//Checkstyle//DTD Checkstyle Configuration 1.3//EN"
          "https://checkstyle.org/dtds/configuration_1_3.dtd">

<!--

  Checkstyle configuration that checks the sun coding conventions from:

    - the Java Language Specification at
      https://docs.oracle.com/javase/specs/jls/se11/html/index.html

    - the Sun Code Conventions at https://www.oracle.com/java/technologies/javase/codeconventions-contents.html

    - the Javadoc guidelines at
      https://www.oracle.com/technical-resources/articles/java/javadoc-tool.html

    - the JDK Api documentation https://docs.oracle.com/en/java/javase/11/

    - some best practices

  Checkstyle is very configurable. Be sure to read the documentation at
  https://checkstyle.org (or in your downloaded distribution).

  Most Checks are configurable, be sure to consult the documentation.

  To completely disable a check, just comment it out or delete it from the file.
  To suppress certain violations please review suppression filters.

  Finally, it is worth reading the documentation.

-->

<module name="Checker">
  <!--
      If you set the basedir property below, then all reported file
      names will be relative to the specified directory. See
      https://checkstyle.org/config.html#Checker

      <property name="basedir" value="${basedir}"/>
  -->
  <property name="severity" value="error"/>

  <property name="fileExtensions" value="java, properties, xml"/>

  <!-- Excludes all 'module-info.java' files              -->
  <!-- See https://checkstyle.org/filefilters/index.html -->
  <module name="BeforeExecutionExclusionFileFilter">
    <property name="fileNamePattern" value="module\-info\.java$"/>
  </module>

  <!-- https://checkstyle.org/filters/suppressionfilter.html -->
  <module name="SuppressionFilter">
    <property name="file" value="${org.checkstyle.sun.suppressionfilter.config}"
              default="checkstyle-suppressions.xml" />
    <property name="optional" value="true"/>
  </module>

  <!-- Checks that a package-info.java file exists for each package.     -->
  <!-- See https://checkstyle.org/checks/javadoc/javadocpackage.html#JavadocPackage -->
  <!-- TODO <module name="JavadocPackage"/> -->

  <!-- Checks whether files end with a new line.                        -->
  <!-- See https://checkstyle.org/checks/misc/newlineatendoffile.html -->
  <module name="NewlineAtEndOfFile"/>

  <!-- Checks that property files contain the same keys.         -->
  <!-- See https://checkstyle.org/checks/misc/translation.html -->
  <module name="Translation"/>

  <!-- Checks for Size Violations.                    -->
  <!-- See https://checkstyle.org/checks/sizes/index.html -->
  <!-- TODO <module name="FileLength"/> -->
  <!-- TODO <module name="LineLength">
    <property name="fileExtensions" value="java"/>
  </module> -->

  <!-- Checks for whitespace                               -->
  <!-- See https://checkstyle.org/checks/whitespace/index.html -->
  <!-- TODO <module name="FileTabCharacter"/> -->

  <!-- Miscellaneous other checks.                   -->
  <!-- See https://checkstyle.org/checks/misc/index.html -->
  <module name="RegexpSingleline">
    <property name="format" value="\s+$"/>
    <property name="minimum" value="0"/>
    <property name="maximum" value="0"/>
    <property name="message" value="Line has trailing spaces."/>
  </module>

  <!-- Checks for Headers                                -->
  <!-- See https://checkstyle.org/checks/header/index.html   -->
  <!-- <module name="Header"> -->
  <!--   <property name="headerFile" value="${checkstyle.header.file}"/> -->
  <!--   <property name="fileExtensions" value="java"/> -->
  <!-- </module> -->

  <module name="TreeWalker">

    <!-- Checks for Javadoc comments.                     -->
    <!-- See https://checkstyle.org/checks/javadoc/index.html -->
    <module name="InvalidJavadocPosition"/>
    <!-- TODO <module name="JavadocMethod"/> -->
    <!-- TODO <module name="JavadocType"/> -->
    <!-- TODO <module name="JavadocVariable"/> -->
    <!-- TODO <module name="JavadocStyle"/> -->
    <!-- TODO <module name="MissingJavadocMethod"/> -->

    <!-- Checks for Naming Conventions.                  -->
    <!-- See https://checkstyle.org/checks/naming/index.html -->
    <module name="ConstantName"/>
    <module name="LocalFinalVariableName"/>
    <module name="LocalVariableName"/>
    <module name="MemberName"/>
    <module name="MethodName"/>
    <module name="PackageName"/>
    <module name="ParameterName"/>
    <module name="StaticVariableName"/>
    <module name="TypeName"/>

    <!-- Checks for imports                              -->
    <!-- See https://checkstyle.org/checks/imports/index.html -->
    <module name="AvoidStarImport"/>
    <module name="IllegalImport"/> <!-- defaults to sun.* packages -->
    <module name="RedundantImport"/>
    <module name="UnusedImports">
      <property name="processJavadoc" value="false"/>
    </module>

    <!-- Checks for Size Violations.                    -->
    <!-- See https://checkstyle.org/checks/sizes/index.html -->
    <module name="MethodLength"/>
    <module name="ParameterNumber"/>

    <!-- Checks for whitespace                               -->
    <!-- See https://checkstyle.org/checks/whitespace/index.html -->
    <module name="EmptyForIteratorPad"/>
    <!-- TODO <module name="GenericWhitespace"/> -->
    <module name="MethodParamPad"/>
    <!-- TODO <module name="NoWhitespaceAfter"/> -->
    <module name="NoWhitespaceBefore"/>
    <module name="OperatorWrap"/>
    <module name="ParenPad"/>
    <module name="TypecastParenPad"/>
    <module name="WhitespaceAfter"/>
    <module name="WhitespaceAround"/>

    <!-- Modifier Checks                                    -->
    <!-- See https://checkstyle.org/checks/modifier/index.html -->
    <module name="ModifierOrder"/>
    <module name="RedundantModifier"/>

    <!-- Checks for blocks. You know, those {}'s         -->
    <!-- See https://checkstyle.org/checks/blocks/index.html -->
    <module name="AvoidNestedBlocks"/>
    <!-- TODO <module name="EmptyBlock"/> -->
    <!-- TODO <module name="LeftCurly"/> -->
    <module name="NeedBraces"/>
    <!-- TODO <module name="RightCurly"/> -->

    <!-- Checks for common coding problems               -->
    <!-- See https://checkstyle.org/checks/coding/index.html -->
    <module name="EmptyStatement"/>
    <module name="EqualsHashCode"/>
    <!-- TODO <module name="HiddenField"/> -->
    <module name="IllegalInstantiation"/>
    <module name="InnerAssignment"/>
    <!-- TODO <module name="MagicNumber"/> -->
    <module name="MissingSwitchDefault"/>
    <module name="MultipleVariableDeclarations"/>
    <module name="SimplifyBooleanExpression"/>
    <module name="SimplifyBooleanReturn"/>

    <!-- Checks for class design                         -->
    <!-- See https://checkstyle.org/checks/design/index.html -->
    <!-- TODO <module name="DesignForExtension"/> -->
    <module name="FinalClass"/>
    <module name="HideUtilityClassConstructor"/>
    <module name="InterfaceIsType"/>
    <!-- TODO <module name="VisibilityModifier"/> -->

    <!-- Miscellaneous other checks.                   -->
    <!-- See https://checkstyle.org
Download .txt
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
Download .txt
Showing preview only (798K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (10090 symbols across 1531 files)

FILE: .github/workflows/scripts/check_structure.py
  function _is_java_file_properly_located (line 5) | def _is_java_file_properly_located(java_file: pathlib.Path) -> bool:
  function _find_misplaced_java_files (line 13) | def _find_misplaced_java_files() -> list[pathlib.Path]:

FILE: src/main/java/com/thealgorithms/audiofilters/EMAFilter.java
  class EMAFilter (line 13) | public class EMAFilter {
    method EMAFilter (line 22) | public EMAFilter(double alpha) {
    method apply (line 35) | public double[] apply(double[] audioSignal) {

FILE: src/main/java/com/thealgorithms/audiofilters/IIRFilter.java
  class IIRFilter (line 9) | public class IIRFilter {
    method IIRFilter (line 23) | public IIRFilter(int order) throws IllegalArgumentException {
    method setCoeffs (line 48) | public void setCoeffs(double[] aCoeffs, double[] bCoeffs) throws Illeg...
    method process (line 73) | public double process(double sample) {

FILE: src/main/java/com/thealgorithms/backtracking/AllPathsFromSourceToTarget.java
  class AllPathsFromSourceToTarget (line 37) | @SuppressWarnings({"rawtypes", "unchecked"})
    method AllPathsFromSourceToTarget (line 49) | public AllPathsFromSourceToTarget(int vertices) {
    method initAdjList (line 59) | private void initAdjList() {
    method addEdge (line 68) | public void addEdge(int u, int v) {
    method storeAllPaths (line 73) | public void storeAllPaths(int s, int d) {
    method storeAllPathsUtil (line 86) | private void storeAllPathsUtil(Integer u, Integer d, boolean[] isVisit...
    method allPathsFromSourceToTarget (line 114) | public static List<List<Integer>> allPathsFromSourceToTarget(int verti...

FILE: src/main/java/com/thealgorithms/backtracking/ArrayCombination.java
  class ArrayCombination (line 10) | public final class ArrayCombination {
    method ArrayCombination (line 11) | private ArrayCombination() {
    method combination (line 22) | public static List<List<Integer>> combination(int n, int k) {
    method combine (line 41) | private static void combine(List<List<Integer>> combinations, List<Int...

FILE: src/main/java/com/thealgorithms/backtracking/Combination.java
  class Combination (line 12) | public final class Combination {
    method Combination (line 13) | private Combination() {
    method combination (line 23) | public static <T> List<TreeSet<T>> combination(T[] arr, int n) {
    method backtracking (line 48) | private static <T> void backtracking(T[] arr, int n, int index, TreeSe...

FILE: src/main/java/com/thealgorithms/backtracking/CombinationSum.java
  class CombinationSum (line 8) | public final class CombinationSum {
    method CombinationSum (line 9) | private CombinationSum() {
    method combinationSum (line 13) | public static List<List<Integer>> combinationSum(int[] candidates, int...
    method backtrack (line 25) | private static void backtrack(int[] candidates, int remaining, int sta...

FILE: src/main/java/com/thealgorithms/backtracking/CrosswordSolver.java
  class CrosswordSolver (line 25) | public final class CrosswordSolver {
    method CrosswordSolver (line 26) | private CrosswordSolver() {
    method isValid (line 39) | public static boolean isValid(char[][] puzzle, String word, int row, i...
    method placeWord (line 63) | public static void placeWord(char[][] puzzle, String word, int row, in...
    method removeWord (line 82) | public static void removeWord(char[][] puzzle, String word, int row, i...
    method solveCrossword (line 99) | public static boolean solveCrossword(char[][] puzzle, Collection<Strin...

FILE: src/main/java/com/thealgorithms/backtracking/FloodFill.java
  class FloodFill (line 7) | public final class FloodFill {
    method FloodFill (line 8) | private FloodFill() {
    method getPixel (line 19) | public static int getPixel(final int[][] image, final int x, final int...
    method putPixel (line 30) | public static void putPixel(final int[][] image, final int x, final in...
    method floodFill (line 43) | public static void floodFill(final int[][] image, final int x, final i...

FILE: src/main/java/com/thealgorithms/backtracking/KnightsTour.java
  class KnightsTour (line 19) | public final class KnightsTour {
    method KnightsTour (line 20) | private KnightsTour() {
    method resetBoard (line 49) | public static void resetBoard() {
    method solve (line 69) | static boolean solve(int row, int column, int count) {
    method neighbors (line 104) | static List<int[]> neighbors(int row, int column) {
    method countNeighbors (line 125) | static int countNeighbors(int row, int column) {
    method orphanDetected (line 145) | static boolean orphanDetected(int count, int row, int column) {

FILE: src/main/java/com/thealgorithms/backtracking/MColoring.java
  class Node (line 15) | class Node {
  class MColoring (line 25) | public final class MColoring {
    method MColoring (line 27) | private MColoring() {
    method isColoringPossible (line 38) | static boolean isColoringPossible(ArrayList<Node> nodes, int n, int m) {

FILE: src/main/java/com/thealgorithms/backtracking/MazeRecursion.java
  class MazeRecursion (line 11) | public final class MazeRecursion {
    method MazeRecursion (line 13) | private MazeRecursion() {
    method solveMazeUsingFirstStrategy (line 23) | public static int[][] solveMazeUsingFirstStrategy(int[][] map) {
    method solveMazeUsingSecondStrategy (line 37) | public static int[][] solveMazeUsingSecondStrategy(int[][] map) {
    method setWay (line 53) | private static boolean setWay(int[][] map, int i, int j) {
    method setWay2 (line 95) | private static boolean setWay2(int[][] map, int i, int j) {

FILE: src/main/java/com/thealgorithms/backtracking/NQueens.java
  class NQueens (line 35) | public final class NQueens {
    method NQueens (line 36) | private NQueens() {
    method getNQueensArrangements (line 39) | public static List<List<String>> getNQueensArrangements(int queens) {
    method placeQueens (line 45) | public static void placeQueens(final int queens) {
    method getSolution (line 67) | private static void getSolution(int boardSize, List<List<String>> solu...
    method isPlacedCorrectly (line 102) | private static boolean isPlacedCorrectly(int[] columns, int rowIndex, ...

FILE: src/main/java/com/thealgorithms/backtracking/ParenthesesGenerator.java
  class ParenthesesGenerator (line 9) | public final class ParenthesesGenerator {
    method ParenthesesGenerator (line 10) | private ParenthesesGenerator() {
    method generateParentheses (line 20) | public static List<String> generateParentheses(final int n) {
    method generateParenthesesHelper (line 38) | private static void generateParenthesesHelper(List<String> result, fin...

FILE: src/main/java/com/thealgorithms/backtracking/Permutation.java
  class Permutation (line 10) | public final class Permutation {
    method Permutation (line 11) | private Permutation() {
    method permutation (line 20) | public static <T> List<T[]> permutation(T[] arr) {
    method backtracking (line 34) | private static <T> void backtracking(T[] arr, int index, List<T[]> res...
    method swap (line 52) | private static <T> void swap(int a, int b, T[] arr) {

FILE: src/main/java/com/thealgorithms/backtracking/PowerSum.java
  class PowerSum (line 13) | public class PowerSum {
    method powSum (line 22) | public int powSum(int targetSum, int power) {
    method sumRecursive (line 39) | private int sumRecursive(int remainingSum, int power, int currentNumbe...

FILE: src/main/java/com/thealgorithms/backtracking/SubsequenceFinder.java
  class SubsequenceFinder (line 9) | public final class SubsequenceFinder {
    method SubsequenceFinder (line 10) | private SubsequenceFinder() {
    method generateAll (line 20) | public static <T> List<List<T>> generateAll(List<T> sequence) {
    method backtrack (line 42) | private static <T> void backtrack(List<T> sequence, List<T> currentSub...

FILE: src/main/java/com/thealgorithms/backtracking/SudokuSolver.java
  class SudokuSolver (line 9) | public final class SudokuSolver {
    method SudokuSolver (line 15) | private SudokuSolver() {
    method solveSudoku (line 25) | public static boolean solveSudoku(int[][] board) {
    method solve (line 45) | private static boolean solve(int[][] board) {
    method isValidPlacement (line 77) | private static boolean isValidPlacement(int[][] board, int row, int co...
    method isNumberInRow (line 89) | private static boolean isNumberInRow(int[][] board, int row, int numbe...
    method isNumberInColumn (line 106) | private static boolean isNumberInColumn(int[][] board, int col, int nu...
    method isNumberInSubgrid (line 124) | private static boolean isNumberInSubgrid(int[][] board, int row, int c...
    method printBoard (line 143) | public static void printBoard(int[][] board) {

FILE: src/main/java/com/thealgorithms/backtracking/UniquePermutation.java
  class UniquePermutation (line 16) | public final class UniquePermutation {
    method UniquePermutation (line 18) | private UniquePermutation() {
    method generateUniquePermutations (line 23) | public static List<String> generateUniquePermutations(String input) {
    method backtrack (line 36) | private static void backtrack(char[] chars, boolean[] used, StringBuil...

FILE: src/main/java/com/thealgorithms/backtracking/WordPatternMatcher.java
  class WordPatternMatcher (line 22) | public final class WordPatternMatcher {
    method WordPatternMatcher (line 23) | private WordPatternMatcher() {
    method matchWordPattern (line 33) | public static boolean matchWordPattern(String pattern, String inputStr...
    method backtrack (line 50) | private static boolean backtrack(String pattern, String inputString, i...

FILE: src/main/java/com/thealgorithms/backtracking/WordSearch.java
  class WordSearch (line 37) | public class WordSearch {
    method dfs (line 49) | private boolean dfs(char[][] board, int x, int y, String word, int idx) {
    method exist (line 77) | public boolean exist(char[][] board, String word) {

FILE: src/main/java/com/thealgorithms/bitmanipulation/BcdConversion.java
  class BcdConversion (line 20) | public final class BcdConversion {
    method BcdConversion (line 21) | private BcdConversion() {
    method bcdToDecimal (line 37) | public static int bcdToDecimal(int bcd) {
    method decimalToBcd (line 67) | public static int decimalToBcd(int decimal) {

FILE: src/main/java/com/thealgorithms/bitmanipulation/BinaryPalindromeCheck.java
  class BinaryPalindromeCheck (line 13) | public final class BinaryPalindromeCheck {
    method BinaryPalindromeCheck (line 14) | private BinaryPalindromeCheck() {
    method isBinaryPalindrome (line 23) | public static boolean isBinaryPalindrome(int x) {
    method reverseBits (line 34) | private static int reverseBits(int x) {

FILE: src/main/java/com/thealgorithms/bitmanipulation/BitRotate.java
  class BitRotate (line 14) | public final class BitRotate {
    method BitRotate (line 20) | private BitRotate() {
    method rotateLeft (line 38) | public static int rotateLeft(int value, int shift) {
    method rotateRight (line 68) | public static int rotateRight(int value, int shift) {

FILE: src/main/java/com/thealgorithms/bitmanipulation/BitSwap.java
  class BitSwap (line 7) | public final class BitSwap {
    method BitSwap (line 8) | private BitSwap() {
    method bitSwap (line 21) | public static int bitSwap(int data, final int posA, final int posB) {

FILE: src/main/java/com/thealgorithms/bitmanipulation/BitwiseGCD.java
  class BitwiseGCD (line 25) | public final class BitwiseGCD {
    method BitwiseGCD (line 27) | private BitwiseGCD() {
    method gcd (line 41) | public static long gcd(long a, long b) {
    method absOrThrowIfOverflow (line 90) | private static long absOrThrowIfOverflow(long x) {
    method gcd (line 103) | public static long gcd(long... values) {
    method gcdBig (line 126) | public static BigInteger gcdBig(BigInteger a, BigInteger b) {
    method gcdBig (line 137) | public static BigInteger gcdBig(long a, long b) {
    method gcd (line 144) | public static int gcd(int a, int b) {

FILE: src/main/java/com/thealgorithms/bitmanipulation/BooleanAlgebraGates.java
  class BooleanAlgebraGates (line 8) | public final class BooleanAlgebraGates {
    method BooleanAlgebraGates (line 10) | private BooleanAlgebraGates() {
    type BooleanGate (line 17) | interface BooleanGate {
      method evaluate (line 24) | boolean evaluate(List<Boolean> inputs);
    class ANDGate (line 31) | static class ANDGate implements BooleanGate {
      method evaluate (line 32) | @Override
    class ORGate (line 47) | static class ORGate implements BooleanGate {
      method evaluate (line 48) | @Override
    class NOTGate (line 63) | static class NOTGate {
      method evaluate (line 70) | public boolean evaluate(boolean input) {
    class XORGate (line 79) | static class XORGate implements BooleanGate {
      method evaluate (line 80) | @Override
    class NANDGate (line 94) | static class NANDGate implements BooleanGate {
      method evaluate (line 95) | @Override
    class NORGate (line 105) | static class NORGate implements BooleanGate {
      method evaluate (line 106) | @Override

FILE: src/main/java/com/thealgorithms/bitmanipulation/ClearLeftmostSetBit.java
  class ClearLeftmostSetBit (line 15) | public final class ClearLeftmostSetBit {
    method ClearLeftmostSetBit (line 16) | private ClearLeftmostSetBit() {
    method clearLeftmostSetBit (line 28) | public static int clearLeftmostSetBit(int num) {

FILE: src/main/java/com/thealgorithms/bitmanipulation/CountBitsFlip.java
  class CountBitsFlip (line 20) | public final class CountBitsFlip {
    method CountBitsFlip (line 22) | private CountBitsFlip() {
    method countBitsFlip (line 38) | public static long countBitsFlip(long a, long b) {
    method countBitsFlipAlternative (line 60) | public static long countBitsFlipAlternative(long a, long b) {

FILE: src/main/java/com/thealgorithms/bitmanipulation/CountLeadingZeros.java
  class CountLeadingZeros (line 13) | public final class CountLeadingZeros {
    method CountLeadingZeros (line 14) | private CountLeadingZeros() {
    method countLeadingZeros (line 25) | public static int countLeadingZeros(int num) {

FILE: src/main/java/com/thealgorithms/bitmanipulation/CountSetBits.java
  class CountSetBits (line 9) | public final class CountSetBits {
    method CountSetBits (line 11) | private CountSetBits() {
    method countSetBits (line 23) | public static int countSetBits(int n) {
    method largestPowerOf2InNumber (line 53) | private static int largestPowerOf2InNumber(int n) {
    method countSetBitsNaive (line 68) | public static int countSetBitsNaive(int n) {

FILE: src/main/java/com/thealgorithms/bitmanipulation/FindNthBit.java
  class FindNthBit (line 16) | public final class FindNthBit {
    method FindNthBit (line 24) | private FindNthBit() {
    method findNthBit (line 39) | public static int findNthBit(int num, int n) {

FILE: src/main/java/com/thealgorithms/bitmanipulation/FirstDifferentBit.java
  class FirstDifferentBit (line 15) | public final class FirstDifferentBit {
    method FirstDifferentBit (line 16) | private FirstDifferentBit() {
    method firstDifferentBit (line 29) | public static int firstDifferentBit(int x, int y) {

FILE: src/main/java/com/thealgorithms/bitmanipulation/GenerateSubsets.java
  class GenerateSubsets (line 12) | public final class GenerateSubsets {
    method GenerateSubsets (line 13) | private GenerateSubsets() {
    method generateSubsets (line 28) | public static List<List<Integer>> generateSubsets(int[] set) {

FILE: src/main/java/com/thealgorithms/bitmanipulation/GrayCodeConversion.java
  class GrayCodeConversion (line 16) | public final class GrayCodeConversion {
    method GrayCodeConversion (line 17) | private GrayCodeConversion() {
    method binaryToGray (line 26) | public static int binaryToGray(int num) {
    method grayToBinary (line 36) | public static int grayToBinary(int gray) {

FILE: src/main/java/com/thealgorithms/bitmanipulation/HammingDistance.java
  class HammingDistance (line 13) | public final class HammingDistance {
    method HammingDistance (line 14) | private HammingDistance() {
    method hammingDistance (line 25) | public static int hammingDistance(int x, int y) {

FILE: src/main/java/com/thealgorithms/bitmanipulation/HigherLowerPowerOfTwo.java
  class HigherLowerPowerOfTwo (line 19) | public final class HigherLowerPowerOfTwo {
    method HigherLowerPowerOfTwo (line 20) | private HigherLowerPowerOfTwo() {
    method nextHigherPowerOfTwo (line 29) | public static int nextHigherPowerOfTwo(int x) {
    method nextLowerPowerOfTwo (line 48) | public static int nextLowerPowerOfTwo(int x) {

FILE: src/main/java/com/thealgorithms/bitmanipulation/HighestSetBit.java
  class HighestSetBit (line 20) | public final class HighestSetBit {
    method HighestSetBit (line 22) | private HighestSetBit() {
    method findHighestSetBit (line 37) | public static Optional<Integer> findHighestSetBit(int num) {

FILE: src/main/java/com/thealgorithms/bitmanipulation/IndexOfRightMostSetBit.java
  class IndexOfRightMostSetBit (line 12) | public final class IndexOfRightMostSetBit {
    method IndexOfRightMostSetBit (line 14) | private IndexOfRightMostSetBit() {
    method indexOfRightMostSetBit (line 25) | public static int indexOfRightMostSetBit(int n) {

FILE: src/main/java/com/thealgorithms/bitmanipulation/IsEven.java
  class IsEven (line 8) | public final class IsEven {
    method IsEven (line 9) | private IsEven() {
    method isEven (line 11) | public static boolean isEven(int number) {

FILE: src/main/java/com/thealgorithms/bitmanipulation/IsPowerTwo.java
  class IsPowerTwo (line 10) | public final class IsPowerTwo {
    method IsPowerTwo (line 11) | private IsPowerTwo() {
    method isPowerTwo (line 25) | public static boolean isPowerTwo(int number) {

FILE: src/main/java/com/thealgorithms/bitmanipulation/LowestSetBit.java
  class LowestSetBit (line 8) | public final class LowestSetBit {
    method LowestSetBit (line 10) | private LowestSetBit() {
    method isolateLowestSetBit (line 19) | public static int isolateLowestSetBit(int n) {
    method clearLowestSetBit (line 30) | public static int clearLowestSetBit(int n) {

FILE: src/main/java/com/thealgorithms/bitmanipulation/ModuloPowerOfTwo.java
  class ModuloPowerOfTwo (line 10) | public final class ModuloPowerOfTwo {
    method ModuloPowerOfTwo (line 11) | private ModuloPowerOfTwo() {
    method moduloPowerOfTwo (line 21) | public static int moduloPowerOfTwo(int x, int n) {

FILE: src/main/java/com/thealgorithms/bitmanipulation/NextHigherSameBitCount.java
  class NextHigherSameBitCount (line 9) | public final class NextHigherSameBitCount {
    method NextHigherSameBitCount (line 10) | private NextHigherSameBitCount() {
    method nextHigherSameBitCount (line 25) | public static int nextHigherSameBitCount(int n) {

FILE: src/main/java/com/thealgorithms/bitmanipulation/NonRepeatingNumberFinder.java
  class NonRepeatingNumberFinder (line 18) | public final class NonRepeatingNumberFinder {
    method NonRepeatingNumberFinder (line 19) | private NonRepeatingNumberFinder() {
    method findNonRepeatingNumber (line 28) | public static int findNonRepeatingNumber(int[] arr) {

FILE: src/main/java/com/thealgorithms/bitmanipulation/NumberAppearingOddTimes.java
  class NumberAppearingOddTimes (line 23) | public final class NumberAppearingOddTimes {
    method NumberAppearingOddTimes (line 24) | private NumberAppearingOddTimes() {
    method findOddOccurrence (line 34) | public static int findOddOccurrence(int[] arr) {

FILE: src/main/java/com/thealgorithms/bitmanipulation/NumbersDifferentSigns.java
  class NumbersDifferentSigns (line 16) | public final class NumbersDifferentSigns {
    method NumbersDifferentSigns (line 17) | private NumbersDifferentSigns() {
    method differentSigns (line 27) | public static boolean differentSigns(int num1, int num2) {

FILE: src/main/java/com/thealgorithms/bitmanipulation/OneBitDifference.java
  class OneBitDifference (line 13) | public final class OneBitDifference {
    method OneBitDifference (line 14) | private OneBitDifference() {
    method differByOneBit (line 24) | public static boolean differByOneBit(int x, int y) {

FILE: src/main/java/com/thealgorithms/bitmanipulation/OnesComplement.java
  class OnesComplement (line 11) | public final class OnesComplement {
    method OnesComplement (line 12) | private OnesComplement() {
    method onesComplement (line 22) | public static String onesComplement(String binary) {

FILE: src/main/java/com/thealgorithms/bitmanipulation/ParityCheck.java
  class ParityCheck (line 16) | public final class ParityCheck {
    method ParityCheck (line 17) | private ParityCheck() {
    method checkParity (line 26) | public static boolean checkParity(int n) {

FILE: src/main/java/com/thealgorithms/bitmanipulation/ReverseBits.java
  class ReverseBits (line 21) | public final class ReverseBits {
    method ReverseBits (line 22) | private ReverseBits() {
    method reverseBits (line 31) | public static int reverseBits(int n) {

FILE: src/main/java/com/thealgorithms/bitmanipulation/SingleBitOperations.java
  class SingleBitOperations (line 21) | public final class SingleBitOperations {
    method SingleBitOperations (line 22) | private SingleBitOperations() {
    method flipBit (line 32) | public static int flipBit(final int num, final int bit) {
    method setBit (line 43) | public static int setBit(final int num, final int bit) {
    method clearBit (line 54) | public static int clearBit(final int num, final int bit) {
    method getBit (line 65) | public static int getBit(final int num, final int bit) {

FILE: src/main/java/com/thealgorithms/bitmanipulation/SingleElement.java
  class SingleElement (line 13) | public final class SingleElement {
    method SingleElement (line 19) | private SingleElement() {
    method findSingleElement (line 32) | public static int findSingleElement(int[] arr) {

FILE: src/main/java/com/thealgorithms/bitmanipulation/SwapAdjacentBits.java
  class SwapAdjacentBits (line 28) | public final class SwapAdjacentBits {
    method SwapAdjacentBits (line 29) | private SwapAdjacentBits() {
    method swapAdjacentBits (line 43) | public static int swapAdjacentBits(int num) {

FILE: src/main/java/com/thealgorithms/bitmanipulation/TwosComplement.java
  class TwosComplement (line 18) | public final class TwosComplement {
    method TwosComplement (line 19) | private TwosComplement() {
    method twosComplement (line 34) | public static String twosComplement(String binary) {

FILE: src/main/java/com/thealgorithms/bitmanipulation/Xs3Conversion.java
  class Xs3Conversion (line 20) | public final class Xs3Conversion {
    method Xs3Conversion (line 21) | private Xs3Conversion() {
    method xs3ToBinary (line 29) | public static int xs3ToBinary(int xs3) {
    method binaryToXs3 (line 47) | public static int binaryToXs3(int binary) {

FILE: src/main/java/com/thealgorithms/ciphers/ADFGVXCipher.java
  class ADFGVXCipher (line 27) | public class ADFGVXCipher {
    method encrypt (line 58) | public String encrypt(String plaintext, String key) {
    method decrypt (line 80) | public String decrypt(String ciphertext, String key) {
    method columnarTransposition (line 99) | private String columnarTransposition(String text, String key) {
    method reverseColumnarTransposition (line 135) | private String reverseColumnarTransposition(String ciphertext, String ...

FILE: src/main/java/com/thealgorithms/ciphers/AES.java
  class AES (line 10) | public final class AES {
    method AES (line 11) | private AES() {
    method scheduleCore (line 2384) | public static BigInteger scheduleCore(BigInteger t, int rconCounter) {
    method keyExpansion (line 2430) | public static BigInteger[] keyExpansion(BigInteger initialKey) {
    method splitBlockIntoCells (line 2485) | public static int[] splitBlockIntoCells(BigInteger block) {
    method mergeCellsIntoBlock (line 2510) | public static BigInteger mergeCellsIntoBlock(int[] cells) {
    method addRoundKey (line 2529) | public static BigInteger addRoundKey(BigInteger ciphertext, BigInteger...
    method subBytes (line 2539) | public static BigInteger subBytes(BigInteger ciphertext) {
    method subBytesDec (line 2555) | public static BigInteger subBytesDec(BigInteger ciphertext) {
    method shiftRows (line 2569) | public static BigInteger shiftRows(BigInteger ciphertext) {
    method shiftRowsDec (line 2604) | public static BigInteger shiftRowsDec(BigInteger ciphertext) {
    method mixColumns (line 2638) | public static BigInteger mixColumns(BigInteger ciphertext) {
    method mixColumnsDec (line 2662) | public static BigInteger mixColumnsDec(BigInteger ciphertext) {
    method encrypt (line 2689) | public static BigInteger encrypt(BigInteger plainText, BigInteger key) {
    method decrypt (line 2717) | public static BigInteger decrypt(BigInteger cipherText, BigInteger key) {
    method main (line 2739) | public static void main(String[] args) {

FILE: src/main/java/com/thealgorithms/ciphers/AESEncryption.java
  class AESEncryption (line 20) | public final class AESEncryption {
    method AESEncryption (line 21) | private AESEncryption() {
    method main (line 32) | public static void main(String[] args) throws Exception {
    method getSecretEncryptionKey (line 51) | public static SecretKey getSecretEncryptionKey() throws NoSuchAlgorith...
    method encryptText (line 67) | public static byte[] encryptText(String plainText, SecretKey secKey) t...
    method decryptText (line 79) | public static String decryptText(byte[] byteCipherText, SecretKey secK...
    method bytesToHex (line 95) | public static String bytesToHex(byte[] bytes) {

FILE: src/main/java/com/thealgorithms/ciphers/AffineCipher.java
  class AffineCipher (line 21) | final class AffineCipher {
    method AffineCipher (line 22) | private AffineCipher() {
    method encryptMessage (line 35) | static String encryptMessage(char[] msg) {
    method decryptCipher (line 58) | static String decryptCipher(String cipher) {

FILE: src/main/java/com/thealgorithms/ciphers/AtbashCipher.java
  class AtbashCipher (line 26) | public class AtbashCipher {
    method AtbashCipher (line 30) | public AtbashCipher() {
    method AtbashCipher (line 38) | public AtbashCipher(String str) {
    method getString (line 47) | public String getString() {
    method setString (line 56) | public void setString(String str) {
    method isCapital (line 66) | private boolean isCapital(char ch) {
    method isSmall (line 76) | private boolean isSmall(char ch) {
    method convert (line 87) | public String convert() {

FILE: src/main/java/com/thealgorithms/ciphers/Autokey.java
  class Autokey (line 12) | public class Autokey {
    method encrypt (line 15) | public String encrypt(String plaintext, String keyword) {
    method decrypt (line 36) | public String decrypt(String ciphertext, String keyword) {

FILE: src/main/java/com/thealgorithms/ciphers/BaconianCipher.java
  class BaconianCipher (line 14) | public class BaconianCipher {
    method encrypt (line 40) | public String encrypt(String plaintext) {
    method decrypt (line 57) | public String decrypt(String ciphertext) {

FILE: src/main/java/com/thealgorithms/ciphers/Blowfish.java
  class Blowfish (line 11) | public class Blowfish {
    method hexToBin (line 1080) | private String hexToBin(String hex) {
    method binToHex (line 1104) | private String binToHex(String binary) {
    method xor (line 1121) | private String xor(String a, String b) {
    method addBin (line 1140) | private String addBin(String a, String b) {
    method f (line 1155) | private String f(String plainText) {
    method keyGenerate (line 1170) | private void keyGenerate(String key) {
    method round (line 1181) | private String round(int time, String plainText) {
    method encrypt (line 1205) | String encrypt(String plainText, String key) {
    method decrypt (line 1229) | String decrypt(String cipherText, String key) {

FILE: src/main/java/com/thealgorithms/ciphers/Caesar.java
  class Caesar (line 11) | public class Caesar {
    method normalizeShift (line 12) | private static char normalizeShift(final int shift) {
    method encode (line 22) | public String encode(String message, int shift) {
    method decode (line 53) | public String decode(String encryptedMessage, int shift) {
    method isCapitalLatinLetter (line 77) | private static boolean isCapitalLatinLetter(char c) {
    method isSmallLatinLetter (line 84) | private static boolean isSmallLatinLetter(char c) {
    method bruteforce (line 91) | public String[] bruteforce(String encryptedMessage) {

FILE: src/main/java/com/thealgorithms/ciphers/ColumnarTranspositionCipher.java
  class ColumnarTranspositionCipher (line 10) | public final class ColumnarTranspositionCipher {
    method ColumnarTranspositionCipher (line 11) | private ColumnarTranspositionCipher() {
    method encrypt (line 30) | public static String encrypt(final String word, final String keyword) {
    method encrypt (line 54) | public static String encrypt(String word, String keyword, String abece...
    method decrypt (line 76) | public static String decrypt() {
    method tableBuilder (line 93) | private static Object[][] tableBuilder(String word) {
    method numberOfRows (line 119) | private static int numberOfRows(String word) {
    method findElements (line 130) | private static Object[] findElements() {
    method sortTable (line 142) | private static Object[][] sortTable(Object[][] table) {
    method getColumn (line 161) | private static Object[] getColumn(Object[][] table, int rows, int colu...
    method switchColumns (line 169) | private static void switchColumns(Object[][] table, int firstColumnInd...
    method abecedariumBuilder (line 179) | private static void abecedariumBuilder() {

FILE: src/main/java/com/thealgorithms/ciphers/DES.java
  class DES (line 8) | public class DES {
    method sanitize (line 13) | private void sanitize(String key) {
    method DES (line 20) | DES(String key) {
    method getKey (line 26) | public String getKey() {
    method setKey (line 30) | public void setKey(String key) {
    method getSubkeys (line 75) | private String[] getSubkeys(String originalKey) {
    method xOR (line 109) | private String xOR(String a, String b) {
    method createPaddedString (line 121) | private String createPaddedString(String s, int desiredLength, char pa...
    method pad (line 132) | private String pad(String s, int desiredLength) {
    method padLast (line 136) | private String padLast(String s, int desiredLength) {
    method feistel (line 140) | private String feistel(String messageBlock, String key) {
    method encryptBlock (line 166) | private String encryptBlock(String message, String[] keys) {
    method decryptBlock (line 192) | private String decryptBlock(String message, String[] keys) {
    method encrypt (line 204) | public String encrypt(String message) {
    method decrypt (line 231) | public String decrypt(String message) {

FILE: src/main/java/com/thealgorithms/ciphers/DiffieHellman.java
  class DiffieHellman (line 5) | public final class DiffieHellman {
    method DiffieHellman (line 12) | public DiffieHellman(BigInteger base, BigInteger secret, BigInteger pr...
    method calculatePublicValue (line 23) | public BigInteger calculatePublicValue() {
    method calculateSharedSecret (line 29) | public BigInteger calculateSharedSecret(BigInteger otherPublicValue) {

FILE: src/main/java/com/thealgorithms/ciphers/ECC.java
  class ECC (line 18) | public class ECC {
    method ECC (line 25) | public ECC(int bits) {
    method getCurve (line 29) | public EllipticCurve getCurve() {
    method setCurve (line 33) | public void setCurve(EllipticCurve curve) {
    method getPrivateKey (line 38) | public BigInteger getPrivateKey() {
    method setPrivateKey (line 42) | public void setPrivateKey(BigInteger privateKey) {
    method encrypt (line 53) | public ECPoint[] encrypt(String message) {
    method decrypt (line 74) | public String decrypt(ECPoint[] encryptedMessage) {
    method generateKeys (line 91) | public final void generateKeys(int bits) {
    class EllipticCurve (line 106) | public static class EllipticCurve {
      method EllipticCurve (line 113) | public EllipticCurve(BigInteger a, BigInteger b, BigInteger p, ECPoi...
      method EllipticCurve (line 121) | public EllipticCurve(int bits) {
      method getBasePoint (line 129) | public ECPoint getBasePoint() {
      method getP (line 133) | public BigInteger getP() {
      method getA (line 137) | public BigInteger getA() {
      method getB (line 141) | public BigInteger getB() {
      method getFieldSize (line 145) | public int getFieldSize() {
      method encodeMessage (line 149) | public ECPoint encodeMessage(BigInteger message) {
      method decodeMessage (line 154) | public BigInteger decodeMessage(ECPoint point) {
    class ECPoint (line 162) | public static class ECPoint {
      method ECPoint (line 166) | public ECPoint(BigInteger x, BigInteger y) {
      method getX (line 171) | public BigInteger getX() {
      method getY (line 175) | public BigInteger getY() {
      method toString (line 179) | @Override
      method add (line 187) | public ECPoint add(ECPoint other, BigInteger p, BigInteger a) {
      method subtract (line 213) | public ECPoint subtract(ECPoint other, BigInteger p, BigInteger a) {
      method multiply (line 221) | public ECPoint multiply(BigInteger k, BigInteger p, BigInteger a) {

FILE: src/main/java/com/thealgorithms/ciphers/ElGamalCipher.java
  class ElGamalCipher (line 29) | public final class ElGamalCipher {
    method ElGamalCipher (line 35) | private ElGamalCipher() {
    method generateKeys (line 65) | public static KeyPair generateKeys(int bitLength) {
    method encrypt (line 108) | public static CipherText encrypt(BigInteger message, BigInteger p, Big...
    method decrypt (line 142) | public static BigInteger decrypt(CipherText cipher, BigInteger x, BigI...
    method isValidGenerator (line 164) | private static boolean isValidGenerator(BigInteger g, BigInteger p, Bi...

FILE: src/main/java/com/thealgorithms/ciphers/HillCipher.java
  class HillCipher (line 3) | public class HillCipher {
    method encrypt (line 6) | public String encrypt(String message, int[][] keyMatrix) {
    method decrypt (line 39) | public String decrypt(String message, int[][] inverseKeyMatrix) {
    method validateDeterminant (line 72) | private void validateDeterminant(int[][] keyMatrix, int n) {
    method determinant (line 80) | private int determinant(int[][] matrix, int n) {

FILE: src/main/java/com/thealgorithms/ciphers/MonoAlphabetic.java
  class MonoAlphabetic (line 3) | public final class MonoAlphabetic {
    method MonoAlphabetic (line 5) | private MonoAlphabetic() {
    method encrypt (line 10) | public static String encrypt(String data, String key) {
    method decrypt (line 25) | public static String decrypt(String data, String key) {
    method charToPos (line 40) | private static int charToPos(char c) {
    method posToChar (line 45) | private static char posToChar(int pos) {

FILE: src/main/java/com/thealgorithms/ciphers/OneTimePadCipher.java
  class OneTimePadCipher (line 19) | public final class OneTimePadCipher {
    method OneTimePadCipher (line 23) | private OneTimePadCipher() {
    method generateKey (line 34) | public static byte[] generateKey(int length) {
    method encrypt (line 53) | public static byte[] encrypt(byte[] plaintext, byte[] key) {
    method decrypt (line 69) | public static byte[] decrypt(byte[] ciphertext, byte[] key) {
    method validateInputs (line 74) | private static void validateInputs(byte[] input, byte[] key) {
    method xor (line 82) | private static byte[] xor(byte[] data, byte[] key) {

FILE: src/main/java/com/thealgorithms/ciphers/PermutationCipher.java
  class PermutationCipher (line 17) | public class PermutationCipher {
    method encrypt (line 29) | public String encrypt(String plaintext, int[] key) {
    method decrypt (line 61) | public String decrypt(String ciphertext, int[] key) {
    method validateKey (line 89) | private void validateKey(int[] key) {
    method padText (line 112) | private String padText(String text, int blockSize) {
    method permuteBlock (line 133) | private String permuteBlock(String block, int[] key) {
    method createInverseKey (line 156) | private int[] createInverseKey(int[] key) {
    method removePadding (line 173) | private String removePadding(String text) {
    method getPaddingChar (line 191) | public char getPaddingChar() {

FILE: src/main/java/com/thealgorithms/ciphers/PlayfairCipher.java
  class PlayfairCipher (line 3) | public class PlayfairCipher {
    method PlayfairCipher (line 8) | public PlayfairCipher(String key) {
    method encrypt (line 13) | public String encrypt(String plaintext) {
    method decrypt (line 39) | public String decrypt(String ciphertext) {
    method generateMatrix (line 64) | private void generateMatrix() {
    method removeDuplicateChars (line 76) | private String removeDuplicateChars(String str) {
    method prepareText (line 86) | private String prepareText(String text) {
    method findPosition (line 105) | private int[] findPosition(char c) {
    method printMatrix (line 119) | public void printMatrix() {

FILE: src/main/java/com/thealgorithms/ciphers/Polybius.java
  class Polybius (line 16) | public final class Polybius {
    method Polybius (line 17) | private Polybius() {
    method findLocationByCharacter (line 29) | private static String findLocationByCharacter(final char character) {
    method encrypt (line 42) | public static String encrypt(final String plaintext) {
    method decrypt (line 52) | public static String decrypt(final String ciphertext) {

FILE: src/main/java/com/thealgorithms/ciphers/ProductCipher.java
  class ProductCipher (line 5) | final class ProductCipher {
    method ProductCipher (line 6) | private ProductCipher() {
    method main (line 9) | public static void main(String[] args) {

FILE: src/main/java/com/thealgorithms/ciphers/RSA.java
  class RSA (line 29) | public class RSA {
    method RSA (line 40) | public RSA(int bits) {
    method encrypt (line 51) | public synchronized String encrypt(String message) {
    method encrypt (line 64) | public synchronized BigInteger encrypt(BigInteger message) {
    method decrypt (line 75) | public synchronized String decrypt(String encryptedMessage) {
    method decrypt (line 88) | public synchronized BigInteger decrypt(BigInteger encryptedMessage) {
    method generateKeys (line 104) | public final synchronized void generateKeys(int bits) {

FILE: src/main/java/com/thealgorithms/ciphers/RailFenceCipher.java
  class RailFenceCipher (line 12) | public class RailFenceCipher {
    method encrypt (line 15) | public String encrypt(String str, int rails) {
    method decrypt (line 73) | public String decrypt(String str, int rails) {

FILE: src/main/java/com/thealgorithms/ciphers/SimpleSubCipher.java
  class SimpleSubCipher (line 13) | public class SimpleSubCipher {
    method encode (line 22) | public String encode(String message, String cipherSmall) {
    method decode (line 59) | public String decode(String encryptedMessage, String cipherSmall) {

FILE: src/main/java/com/thealgorithms/ciphers/Vigenere.java
  class Vigenere (line 29) | public class Vigenere {
    method encrypt (line 46) | public String encrypt(final String message, final String key) {
    method decrypt (line 84) | public String decrypt(final String message, final String key) {

FILE: src/main/java/com/thealgorithms/ciphers/XORCipher.java
  class XORCipher (line 32) | public final class XORCipher {
    method XORCipher (line 37) | private XORCipher() {
    method xor (line 48) | public static byte[] xor(final byte[] inputBytes, final byte[] keyByte...
    method encrypt (line 65) | public static String encrypt(final String plainText, final String key) {
    method decrypt (line 85) | public static String decrypt(final String cipherText, final String key) {

FILE: src/main/java/com/thealgorithms/ciphers/a5/A5Cipher.java
  class A5Cipher (line 17) | public class A5Cipher {
    method A5Cipher (line 28) | public A5Cipher(BitSet sessionKey, BitSet frameCounter) {
    method encrypt (line 42) | public BitSet encrypt(BitSet plainTextBits) {
    method resetCounter (line 60) | public void resetCounter() {

FILE: src/main/java/com/thealgorithms/ciphers/a5/A5KeyStreamGenerator.java
  class A5KeyStreamGenerator (line 18) | public class A5KeyStreamGenerator extends CompositeLFSR {
    method initialize (line 38) | @Override
    method reInitialize (line 58) | public void reInitialize() {
    method getNextKeyStream (line 73) | public BitSet getNextKeyStream() {
    method reInitializeRegisters (line 96) | private void reInitializeRegisters() {
    method incrementFrameCounter (line 109) | private void incrementFrameCounter() {
    method getFrameCounter (line 118) | public BitSet getFrameCounter() {

FILE: src/main/java/com/thealgorithms/ciphers/a5/BaseLFSR.java
  type BaseLFSR (line 5) | public interface BaseLFSR {
    method initialize (line 6) | void initialize(BitSet sessionKey, BitSet frameCounter);
    method clock (line 7) | boolean clock();

FILE: src/main/java/com/thealgorithms/ciphers/a5/CompositeLFSR.java
  class CompositeLFSR (line 19) | public abstract class CompositeLFSR implements BaseLFSR {
    method clock (line 36) | @Override
    method getMajorityBit (line 61) | private boolean getMajorityBit() {

FILE: src/main/java/com/thealgorithms/ciphers/a5/LFSR.java
  class LFSR (line 5) | public class LFSR implements BaseLFSR {
    method LFSR (line 12) | public LFSR(int length, int clockBitIndex, int[] tappingBitsIndices) {
    method initialize (line 19) | @Override
    method clock (line 26) | private void clock(BitSet key, int keyLength) {
    method clock (line 35) | @Override
    method getClockBit (line 40) | public boolean getClockBit() {
    method get (line 44) | public boolean get(int bitIndex) {
    method getLastBit (line 48) | public boolean getLastBit() {
    method xorTappingBits (line 52) | private boolean xorTappingBits() {
    method pushBit (line 60) | private boolean pushBit(boolean bit) {
    method rightShift (line 66) | private boolean rightShift() {
    method toString (line 75) | @Override

FILE: src/main/java/com/thealgorithms/ciphers/a5/Utils.java
  class Utils (line 10) | public final class Utils {
    method Utils (line 11) | private Utils() {
    method increment (line 14) | public static boolean increment(BitSet bits, int size) {

FILE: src/main/java/com/thealgorithms/compression/ArithmeticCoding.java
  class ArithmeticCoding (line 42) | public final class ArithmeticCoding {
    method ArithmeticCoding (line 44) | private ArithmeticCoding() {
    method compress (line 54) | public static BigDecimal compress(String uncompressed) {
    method decompress (line 83) | public static String decompress(BigDecimal compressed, int length, Map...
    method calculateProbabilities (line 128) | public static Map<Character, Symbol> calculateProbabilities(String tex...

FILE: src/main/java/com/thealgorithms/compression/BurrowsWheelerTransform.java
  class BurrowsWheelerTransform (line 52) | public final class BurrowsWheelerTransform {
    method BurrowsWheelerTransform (line 54) | private BurrowsWheelerTransform() {
    class BWTResult (line 65) | public static class BWTResult {
      method BWTResult (line 78) | public BWTResult(String transformed, int originalIndex) {
      method equals (line 83) | @Override
      method hashCode (line 95) | @Override
      method toString (line 100) | @Override
    method transform (line 124) | public static BWTResult transform(String text) {
    method inverseTransform (line 171) | public static String inverseTransform(String bwtString, int originalIn...

FILE: src/main/java/com/thealgorithms/compression/HuffmanCoding.java
  class HuffmanCoding (line 28) | public class HuffmanCoding {
    class Node (line 37) | private static class Node implements Comparable<Node> {
      method Node (line 49) | Node(char ch, int freq) {
      method Node (line 64) | Node(int freq, Node left, Node right) {
      method isLeaf (line 76) | boolean isLeaf() {
      method compareTo (line 88) | @Override
    method HuffmanCoding (line 101) | public HuffmanCoding(String text) {
    method buildTree (line 125) | private void buildTree(String text) {
    method generateCodes (line 153) | private void generateCodes(Node node, String code, Map<Character, Stri...
    method encode (line 175) | public String encode(String text) {
    method decode (line 203) | public String decode(String encodedText) {
    method getHuffmanCodes (line 250) | public Map<Character, String> getHuffmanCodes() {

FILE: src/main/java/com/thealgorithms/compression/LZ77.java
  class LZ77 (line 29) | public final class LZ77 {
    method LZ77 (line 34) | private LZ77() {
    method compress (line 54) | public static List<Token> compress(String text, int windowSize, int lo...
    method compress (line 132) | public static List<Token> compress(String text) {
    method decompress (line 142) | public static String decompress(List<Token> compressedData) {

FILE: src/main/java/com/thealgorithms/compression/LZ78.java
  class LZ78 (line 32) | public final class LZ78 {
    method LZ78 (line 42) | private LZ78() {
    class TrieNode (line 57) | private static final class TrieNode {
    method compress (line 68) | public static List<Token> compress(String text) {
    method decompress (line 113) | public static String decompress(List<Token> compressedData) {

FILE: src/main/java/com/thealgorithms/compression/LZW.java
  class LZW (line 42) | public final class LZW {
    method LZW (line 47) | private LZW() {
    method compress (line 57) | public static List<Integer> compress(String uncompressed) {
    method decompress (line 99) | public static String decompress(List<Integer> compressed) {

FILE: src/main/java/com/thealgorithms/compression/MoveToFront.java
  class MoveToFront (line 64) | public final class MoveToFront {
    method MoveToFront (line 66) | private MoveToFront() {
    method transform (line 91) | public static List<Integer> transform(String text, String initialAlpha...
    method inverseTransform (line 139) | public static String inverseTransform(Collection<Integer> indices, Str...

FILE: src/main/java/com/thealgorithms/compression/RunLengthEncoding.java
  class RunLengthEncoding (line 26) | public final class RunLengthEncoding {
    method RunLengthEncoding (line 31) | private RunLengthEncoding() {
    method compress (line 40) | public static String compress(String text) {
    method decompress (line 67) | public static String decompress(String compressedText) {

FILE: src/main/java/com/thealgorithms/compression/ShannonFano.java
  class ShannonFano (line 39) | public final class ShannonFano {
    method ShannonFano (line 44) | private ShannonFano() {
    class Symbol (line 51) | private static class Symbol implements Comparable<Symbol> {
      method Symbol (line 56) | Symbol(char character, int frequency) {
      method compareTo (line 61) | @Override
    method generateCodes (line 73) | public static Map<Character, String> generateCodes(String text) {
    method buildCodeTree (line 109) | private static void buildCodeTree(List<Symbol> symbols, int start, int...
    method findSplitIndex (line 135) | private static int findSplitIndex(List<Symbol> symbols, int start, int...

FILE: src/main/java/com/thealgorithms/conversions/AffineConverter.java
  class AffineConverter (line 10) | public final class AffineConverter {
    method AffineConverter (line 21) | public AffineConverter(final double inSlope, final double inIntercept) {
    method convert (line 36) | public double convert(final double inValue) {
    method invert (line 47) | public AffineConverter invert() {
    method compose (line 59) | public AffineConverter compose(final AffineConverter other) {

FILE: src/main/java/com/thealgorithms/conversions/AnyBaseToAnyBase.java
  class AnyBaseToAnyBase (line 23) | public final class AnyBaseToAnyBase {
    method AnyBaseToAnyBase (line 24) | private AnyBaseToAnyBase() {
    method main (line 34) | public static void main(String[] args) {
    method validForBase (line 72) | public static boolean validForBase(String n, int base) {
    method base2base (line 139) | public static String base2base(String n, int b1, int b2) {

FILE: src/main/java/com/thealgorithms/conversions/AnyBaseToDecimal.java
  class AnyBaseToDecimal (line 6) | public final class AnyBaseToDecimal {
    method AnyBaseToDecimal (line 10) | private AnyBaseToDecimal() {
    method convertToDecimal (line 21) | public static int convertToDecimal(String input, int radix) {
    method valOfChar (line 43) | private static int valOfChar(char character) {

FILE: src/main/java/com/thealgorithms/conversions/AnytoAny.java
  class AnytoAny (line 9) | public final class AnytoAny {
    method AnytoAny (line 10) | private AnytoAny() {
    method convertBase (line 22) | public static int convertBase(int sourceNumber, int sourceBase, int de...
    method toDecimal (line 38) | private static int toDecimal(int number, int base) {
    method fromDecimal (line 57) | private static int fromDecimal(int decimal, int base) {

FILE: src/main/java/com/thealgorithms/conversions/Base64.java
  class Base64 (line 21) | public final class Base64 {
    method Base64 (line 27) | private Base64() {
    method encode (line 37) | public static String encode(byte[] input) {
    method encode (line 91) | public static String encode(String input) {
    method decode (line 106) | public static byte[] decode(String input) {
    method decodeToString (line 165) | public static String decodeToString(String input) {
    method getBase64Value (line 181) | private static int getBase64Value(char c) {

FILE: src/main/java/com/thealgorithms/conversions/BinaryToDecimal.java
  class BinaryToDecimal (line 6) | final class BinaryToDecimal {
    method BinaryToDecimal (line 9) | private BinaryToDecimal() {
    method binaryToDecimal (line 19) | public static long binaryToDecimal(long binaryNumber) {
    method binaryStringToDecimal (line 41) | public static long binaryStringToDecimal(String binary) {

FILE: src/main/java/com/thealgorithms/conversions/BinaryToHexadecimal.java
  class BinaryToHexadecimal (line 11) | public final class BinaryToHexadecimal {
    method BinaryToHexadecimal (line 18) | private BinaryToHexadecimal() {
    method binToHex (line 28) | public static String binToHex(int binary) {
    method initializeHexMap (line 53) | private static Map<Integer, String> initializeHexMap() {

FILE: src/main/java/com/thealgorithms/conversions/BinaryToOctal.java
  class BinaryToOctal (line 3) | public final class BinaryToOctal {
    method BinaryToOctal (line 8) | private BinaryToOctal() {
    method convertBinaryToOctal (line 18) | public static String convertBinaryToOctal(int binary) {

FILE: src/main/java/com/thealgorithms/conversions/CoordinateConverter.java
  class CoordinateConverter (line 14) | public final class CoordinateConverter {
    method CoordinateConverter (line 16) | private CoordinateConverter() {
    method cartesianToPolar (line 28) | public static double[] cartesianToPolar(double x, double y) {
    method polarToCartesian (line 45) | public static double[] polarToCartesian(double r, double thetaDegrees) {

FILE: src/main/java/com/thealgorithms/conversions/DecimalToAnyBase.java
  class DecimalToAnyBase (line 12) | public final class DecimalToAnyBase {
    method DecimalToAnyBase (line 19) | private DecimalToAnyBase() {
    method convertToAnyBase (line 31) | public static String convertToAnyBase(int decimal, int base) {
    method convertToChar (line 62) | private static char convertToChar(int value) {

FILE: src/main/java/com/thealgorithms/conversions/DecimalToBinary.java
  class DecimalToBinary (line 6) | final class DecimalToBinary {
    method DecimalToBinary (line 10) | private DecimalToBinary() {
    method convertUsingConventionalAlgorithm (line 18) | public static int convertUsingConventionalAlgorithm(int decimalNumber) {
    method convertUsingBitwiseAlgorithm (line 37) | public static int convertUsingBitwiseAlgorithm(int decimalNumber) {

FILE: src/main/java/com/thealgorithms/conversions/DecimalToHexadecimal.java
  class DecimalToHexadecimal (line 6) | final class DecimalToHexadecimal {
    method DecimalToHexadecimal (line 12) | private DecimalToHexadecimal() {
    method decToHex (line 20) | public static String decToHex(int decimal) {
    method removeLeadingZeros (line 30) | private static String removeLeadingZeros(String str) {

FILE: src/main/java/com/thealgorithms/conversions/DecimalToOctal.java
  class DecimalToOctal (line 6) | public final class DecimalToOctal {
    method DecimalToOctal (line 11) | private DecimalToOctal() {
    method convertToOctal (line 21) | public static int convertToOctal(int decimal) {

FILE: src/main/java/com/thealgorithms/conversions/EndianConverter.java
  class EndianConverter (line 24) | public final class EndianConverter {
    method EndianConverter (line 25) | private EndianConverter() {
    method bigToLittleEndian (line 34) | public static int bigToLittleEndian(int value) {
    method littleToBigEndian (line 44) | public static int littleToBigEndian(int value) {

FILE: src/main/java/com/thealgorithms/conversions/HexToOct.java
  class HexToOct (line 8) | public final class HexToOct {
    method HexToOct (line 9) | private HexToOct() {
    method hexToDecimal (line 18) | public static int hexToDecimal(String hex) {
    method decimalToOctal (line 38) | public static int decimalToOctal(int decimal) {
    method hexToOctal (line 58) | public static int hexToOctal(String hex) {

FILE: src/main/java/com/thealgorithms/conversions/HexaDecimalToBinary.java
  class HexaDecimalToBinary (line 23) | public class HexaDecimalToBinary {
    method convert (line 40) | public String convert(String numHex) {
    method completeDigits (line 53) | public String completeDigits(String binNum) {

FILE: src/main/java/com/thealgorithms/conversions/HexaDecimalToDecimal.java
  class HexaDecimalToDecimal (line 18) | public final class HexaDecimalToDecimal {
    method HexaDecimalToDecimal (line 19) | private HexaDecimalToDecimal() {
    method getHexaToDec (line 30) | public static int getHexaToDec(String hex) {

FILE: src/main/java/com/thealgorithms/conversions/IPConverter.java
  class IPConverter (line 13) | public final class IPConverter {
    method IPConverter (line 14) | private IPConverter() {
    method ipToBinary (line 22) | public static String ipToBinary(String ip) {
    method octetToBinary (line 35) | private static String octetToBinary(int octet) {
    method binaryToIP (line 51) | public static String binaryToIP(String binary) {

FILE: src/main/java/com/thealgorithms/conversions/IPv6Converter.java
  class IPv6Converter (line 16) | public final class IPv6Converter {
    method IPv6Converter (line 17) | private IPv6Converter() {
    method ipv4ToIpv6 (line 29) | public static String ipv4ToIpv6(String ipv4Address) throws UnknownHost...
    method ipv6ToIpv4 (line 62) | public static String ipv6ToIpv4(String ipv6Address) throws UnknownHost...
    method isValidIpv6MappedIpv4 (line 83) | private static boolean isValidIpv6MappedIpv4(byte[] ipv6Bytes) {

FILE: src/main/java/com/thealgorithms/conversions/IntegerToEnglish.java
  class IntegerToEnglish (line 25) | public final class IntegerToEnglish {
    method IntegerToEnglish (line 33) | private IntegerToEnglish() {
    method convertToWords (line 42) | private static String convertToWords(int number) {
    method integerToEnglishWords (line 78) | public static String integerToEnglishWords(int number) {

FILE: src/main/java/com/thealgorithms/conversions/IntegerToRoman.java
  class IntegerToRoman (line 27) | public final class IntegerToRoman {
    method IntegerToRoman (line 35) | private IntegerToRoman() {
    method integerToRoman (line 54) | public static String integerToRoman(int num) {

FILE: src/main/java/com/thealgorithms/conversions/MorseCodeConverter.java
  class MorseCodeConverter (line 18) | public final class MorseCodeConverter {
    method MorseCodeConverter (line 19) | private MorseCodeConverter() {
    method textToMorse (line 64) | public static String textToMorse(String text) {
    method morseToText (line 85) | public static String morseToText(String morse) {

FILE: src/main/java/com/thealgorithms/conversions/NumberToWords.java
  class NumberToWords (line 12) | public final class NumberToWords {
    method NumberToWords (line 14) | private NumberToWords() {
    method convert (line 27) | public static String convert(BigDecimal number) {
    method convertWholeNumberToWords (line 59) | private static String convertWholeNumberToWords(BigDecimal number) {
    method convertChunk (line 87) | private static String convertChunk(int number) {

FILE: src/main/java/com/thealgorithms/conversions/OctalToBinary.java
  class OctalToBinary (line 25) | public final class OctalToBinary {
    method OctalToBinary (line 26) | private OctalToBinary() {
    method convertOctalToBinary (line 38) | public static long convertOctalToBinary(int octalNumber) {
    method convertOctalDigitToBinary (line 68) | public static long convertOctalDigitToBinary(int octalDigit) {

FILE: src/main/java/com/thealgorithms/conversions/OctalToDecimal.java
  class OctalToDecimal (line 7) | public final class OctalToDecimal {
    method OctalToDecimal (line 10) | private OctalToDecimal() {
    method convertOctalToDecimal (line 22) | public static int convertOctalToDecimal(String inputOctal) {

FILE: src/main/java/com/thealgorithms/conversions/OctalToHexadecimal.java
  class OctalToHexadecimal (line 8) | public final class OctalToHexadecimal {
    method OctalToHexadecimal (line 13) | private OctalToHexadecimal() {
    method octalToDecimal (line 23) | public static int octalToDecimal(String octalNumber) {
    method decimalToHexadecimal (line 47) | public static String decimalToHexadecimal(int decimalNumber) {

FILE: src/main/java/com/thealgorithms/conversions/PhoneticAlphabetConverter.java
  class PhoneticAlphabetConverter (line 16) | public final class PhoneticAlphabetConverter {
    method PhoneticAlphabetConverter (line 17) | private PhoneticAlphabetConverter() {
    method textToPhonetic (line 74) | public static String textToPhonetic(String text) {

FILE: src/main/java/com/thealgorithms/conversions/RgbHsvConversion.java
  class RgbHsvConversion (line 16) | public final class RgbHsvConversion {
    method RgbHsvConversion (line 17) | private RgbHsvConversion() {
    method main (line 20) | public static void main(String[] args) {
    method hsvToRgb (line 58) | public static int[] hsvToRgb(double hue, double saturation, double val...
    method rgbToHsv (line 87) | public static double[] rgbToHsv(int red, int green, int blue) {
    method approximatelyEqualHsv (line 123) | private static boolean approximatelyEqualHsv(double[] hsv1, double[] h...
    method getRgbBySection (line 131) | private static int[] getRgbBySection(double hueSection, double chroma,...
    method convertToInt (line 165) | private static int convertToInt(double input) {

FILE: src/main/java/com/thealgorithms/conversions/RomanToInteger.java
  class RomanToInteger (line 26) | public final class RomanToInteger {
    method RomanToInteger (line 40) | private RomanToInteger() {
    method romanSymbolToInt (line 50) | private static int romanSymbolToInt(final char symbol) {
    method romanToInt (line 71) | public static int romanToInt(String roman) {

FILE: src/main/java/com/thealgorithms/conversions/TemperatureConverter.java
  class TemperatureConverter (line 18) | public final class TemperatureConverter {
    method TemperatureConverter (line 20) | private TemperatureConverter() {
    method celsiusToFahrenheit (line 23) | public static double celsiusToFahrenheit(double celsius) {
    method celsiusToKelvin (line 27) | public static double celsiusToKelvin(double celsius) {
    method fahrenheitToCelsius (line 31) | public static double fahrenheitToCelsius(double fahrenheit) {
    method fahrenheitToKelvin (line 35) | public static double fahrenheitToKelvin(double fahrenheit) {
    method kelvinToCelsius (line 39) | public static double kelvinToCelsius(double kelvin) {
    method kelvinToFahrenheit (line 43) | public static double kelvinToFahrenheit(double kelvin) {

FILE: src/main/java/com/thealgorithms/conversions/TimeConverter.java
  class TimeConverter (line 27) | public final class TimeConverter {
    method TimeConverter (line 29) | private TimeConverter() {
    type TimeUnit (line 36) | private enum TimeUnit {
      method TimeUnit (line 47) | TimeUnit(double seconds) {
      method toSeconds (line 51) | public double toSeconds(double value) {
      method fromSeconds (line 55) | public double fromSeconds(double secondsValue) {
    method convertTime (line 73) | public static double convertTime(double timeValue, String unitFrom, St...
    method resolveUnit (line 87) | private static TimeUnit resolveUnit(String unit) {

FILE: src/main/java/com/thealgorithms/conversions/TurkishToLatinConversion.java
  class TurkishToLatinConversion (line 8) | public final class TurkishToLatinConversion {
    method TurkishToLatinConversion (line 9) | private TurkishToLatinConversion() {
    method convertTurkishToLatin (line 22) | public static String convertTurkishToLatin(String param) {

FILE: src/main/java/com/thealgorithms/conversions/UnitConversions.java
  class UnitConversions (line 34) | public final class UnitConversions {
    method UnitConversions (line 35) | private UnitConversions() {

FILE: src/main/java/com/thealgorithms/conversions/UnitsConverter.java
  class UnitsConverter (line 47) | public final class UnitsConverter {
    method putIfNeeded (line 51) | private static void putIfNeeded(Map<Pair<String, String>, AffineConver...
    method addInversions (line 58) | private static Map<Pair<String, String>, AffineConverter> addInversion...
    method addCompositions (line 69) | private static Map<Pair<String, String>, AffineConverter> addCompositi...
    method addAll (line 85) | private static Map<Pair<String, String>, AffineConverter> addAll(final...
    method computeAllConversions (line 90) | private static Map<Pair<String, String>, AffineConverter> computeAllCo...
    method extractUnits (line 100) | private static Set<String> extractUnits(final Map<Pair<String, String>...
    method UnitsConverter (line 116) | public UnitsConverter(final Map<Pair<String, String>, AffineConverter>...
    method convert (line 131) | public double convert(final String inputUnit, final String outputUnit,...
    method availableUnits (line 144) | public Set<String> availableUnits() {

FILE: src/main/java/com/thealgorithms/conversions/WordsToNumber.java
  class WordsToNumber (line 19) | public final class WordsToNumber {
    method WordsToNumber (line 21) | private WordsToNumber() {
    type NumberWord (line 24) | private enum NumberWord {
      method NumberWord (line 57) | NumberWord(String word, int value) {
      method getValue (line 62) | public static Integer getValue(String word) {
    type PowerOfTen (line 72) | private enum PowerOfTen {
      method PowerOfTen (line 81) | PowerOfTen(String word, BigDecimal value) {
      method getValue (line 86) | public static BigDecimal getValue(String word) {
    method convert (line 96) | public static String convert(String numberInWords) {
    method convertToBigDecimal (line 107) | public static BigDecimal convertToBigDecimal(String numberInWords) {
    method preprocessWords (line 112) | private static ArrayDeque<String> preprocessWords(String numberInWords) {
    method handleConjunction (line 127) | private static void handleConjunction(boolean prevNumWasHundred, boole...
    method handleHundred (line 147) | private static BigDecimal handleHundred(BigDecimal currentChunk, Strin...
    method handlePowerOfTen (line 158) | private static void handlePowerOfTen(List<BigDecimal> chunks, BigDecim...
    method handleNumber (line 171) | private static BigDecimal handleNumber(Collection<BigDecimal> chunks, ...
    method handlePoint (line 184) | private static void handlePoint(Collection<BigDecimal> chunks, BigDeci...
    method handleNegative (line 194) | private static void handleNegative(boolean isNegative) {
    method convertWordQueueToBigDecimal (line 201) | private static BigDecimal convertWordQueueToBigDecimal(ArrayDeque<Stri...
    method isAdditionSafe (line 274) | private static boolean isAdditionSafe(BigDecimal currentChunk, BigDeci...
    method convertDecimalPart (line 280) | private static String convertDecimalPart(ArrayDeque<String> wordDeque) {
    method combineChunks (line 299) | private static BigDecimal combineChunks(List<BigDecimal> chunks) {
  class WordsToNumberException (line 308) | class WordsToNumberException extends RuntimeException {
    type ErrorType (line 312) | enum ErrorType {
      method ErrorType (line 324) | ErrorType(String message) {
      method formatMessage (line 328) | public String formatMessage(String details) {
    method WordsToNumberException (line 335) | WordsToNumberException(ErrorType errorType, String details) {
    method getErrorType (line 340) | public ErrorType getErrorType() {

FILE: src/main/java/com/thealgorithms/datastructures/Node.java
  class Node (line 6) | public class Node<T> {
    method Node (line 11) | public Node(final T value) {
    method Node (line 16) | public Node(final T value, final List<Node<T>> children) {
    method getValue (line 21) | public T getValue() {
    method addChild (line 25) | public void addChild(Node<T> child) {
    method getChildren (line 29) | public List<Node<T>> getChildren() {

FILE: src/main/java/com/thealgorithms/datastructures/bags/Bag.java
  class Bag (line 15) | public class Bag<E> implements Iterable<E> {
    class Node (line 21) | private static final class Node<E> {
    method Bag (line 30) | public Bag() {
    method isEmpty (line 40) | public boolean isEmpty() {
    method size (line 49) | public int size() {
    method add (line 61) | public void add(E element) {
    method contains (line 77) | public boolean contains(E element) {
    method iterator (line 93) | @Override
    class ListIterator (line 99) | private static class ListIterator<E> implements Iterator<E> {
      method ListIterator (line 108) | ListIterator(Node<E> firstElement) {
      method hasNext (line 117) | @Override
      method next (line 128) | @Override

FILE: src/main/java/com/thealgorithms/datastructures/bloomfilter/BloomFilter.java
  class BloomFilter (line 18) | @SuppressWarnings("rawtypes")
    method BloomFilter (line 35) | @SuppressWarnings("unchecked")
    method initializeHashFunctions (line 50) | private void initializeHashFunctions() {
    method insert (line 66) | public void insert(T key) {
    method contains (line 87) | public boolean contains(T key) {
    class Hash (line 106) | private static class Hash<T> {
      method Hash (line 115) | Hash(int index) {
      method compute (line 129) | public int compute(T key) {
      method asciiString (line 143) | private int asciiString(String word) {
      method contentHash (line 154) | private int contentHash(Object key) {

FILE: src/main/java/com/thealgorithms/datastructures/buffers/CircularBuffer.java
  class CircularBuffer (line 13) | @SuppressWarnings("unchecked")
    method CircularBuffer (line 26) | public CircularBuffer(int size) {
    method isEmpty (line 42) | public boolean isEmpty() {
    method isFull (line 52) | public boolean isFull() {
    method get (line 62) | public Item get() {
    method put (line 80) | public boolean put(Item item) {
    class CircularPointer (line 106) | private static class CircularPointer {
      method CircularPointer (line 116) | CircularPointer(int pointer, int max) {
      method getAndIncrement (line 127) | public int getAndIncrement() {

FILE: src/main/java/com/thealgorithms/datastructures/caches/FIFOCache.java
  class FIFOCache (line 36) | public final class FIFOCache<K, V> {
    class CacheEntry (line 53) | private static class CacheEntry<V> {
      method CacheEntry (line 65) | CacheEntry(V value, long ttlMillis) {
      method isExpired (line 79) | boolean isExpired() {
    method FIFOCache (line 92) | private FIFOCache(Builder<K, V> builder) {
    method get (line 113) | public V get(K key) {
    method put (line 147) | public void put(K key, V value) {
    method put (line 164) | public void put(K key, V value, long ttlMillis) {
    method evictExpired (line 207) | private int evictExpired() {
    method removeKey (line 229) | public V removeKey(K key) {
    method notifyEviction (line 254) | private void notifyEviction(K key, V value) {
    method getHits (line 269) | public long getHits() {
    method getMisses (line 283) | public long getMisses() {
    method size (line 297) | public int size() {
    method clear (line 323) | public void clear() {
    method getAllKeys (line 348) | public Set<K> getAllKeys() {
    method getEvictionStrategy (line 370) | public EvictionStrategy<K, V> getEvictionStrategy() {
    method toString (line 383) | @Override
    type EvictionStrategy (line 409) | public interface EvictionStrategy<K, V> {
      method onAccess (line 416) | int onAccess(FIFOCache<K, V> cache);
    class ImmediateEvictionStrategy (line 425) | public static class ImmediateEvictionStrategy<K, V> implements Evictio...
      method onAccess (line 426) | @Override
    class PeriodicEvictionStrategy (line 441) | public static class PeriodicEvictionStrategy<K, V> implements Eviction...
      method PeriodicEvictionStrategy (line 451) | public PeriodicEvictionStrategy(int interval) {
      method onAccess (line 458) | @Override
    class Builder (line 477) | public static class Builder<K, V> {
      method Builder (line 488) | public Builder(int capacity) {
      method defaultTTL (line 502) | public Builder<K, V> defaultTTL(long ttlMillis) {
      method evictionListener (line 517) | public Builder<K, V> evictionListener(BiConsumer<K, V> listener) {
      method build (line 530) | public FIFOCache<K, V> build() {
      method evictionStrategy (line 541) | public Builder<K, V> evictionStrategy(EvictionStrategy<K, V> strateg...

FILE: src/main/java/com/thealgorithms/datastructures/caches/LFUCache.java
  class LFUCache (line 26) | public class LFUCache<K, V> {
    class Node (line 33) | private class Node {
      method Node (line 47) | Node(K key, V value, int frequency) {
    method LFUCache (line 63) | public LFUCache() {
    method LFUCache (line 73) | public LFUCache(int capacity) {
    method get (line 89) | public V get(K key) {
    method put (line 108) | public void put(K key, V value) {
    method addNodeWithUpdatedFrequency (line 132) | private void addNodeWithUpdatedFrequency(Node node) {
    method removeNode (line 172) | private void removeNode(Node node) {

FILE: src/main/java/com/thealgorithms/datastructures/caches/LIFOCache.java
  class LIFOCache (line 39) | public final class LIFOCache<K, V> {
    class CacheEntry (line 56) | private static class CacheEntry<V> {
      method CacheEntry (line 68) | CacheEntry(V value, long ttlMillis) {
      method isExpired (line 82) | boolean isExpired() {
    method LIFOCache (line 96) | private LIFOCache(Builder<K, V> builder) {
    method get (line 118) | public V get(K key) {
    method put (line 153) | public void put(K key, V value) {
    method put (line 170) | public void put(K key, V value, long ttlMillis) {
    method evictExpired (line 212) | private int evictExpired() {
    method removeKey (line 236) | public V removeKey(K key) {
    method notifyEviction (line 267) | private void notifyEviction(K key, V value) {
    method getHits (line 282) | public long getHits() {
    method getMisses (line 296) | public long getMisses() {
    method size (line 310) | public int size() {
    method clear (line 336) | public void clear() {
    method getAllKeys (line 362) | public Set<K> getAllKeys() {
    method getEvictionStrategy (line 384) | public EvictionStrategy<K, V> getEvictionStrategy() {
    method toString (line 397) | @Override
    type EvictionStrategy (line 423) | public interface EvictionStrategy<K, V> {
      method onAccess (line 430) | int onAccess(LIFOCache<K, V> cache);
    class ImmediateEvictionStrategy (line 439) | public static class ImmediateEvictionStrategy<K, V> implements Evictio...
      method onAccess (line 440) | @Override
    class PeriodicEvictionStrategy (line 455) | public static class PeriodicEvictionStrategy<K, V> implements Eviction...
      method PeriodicEvictionStrategy (line 465) | public PeriodicEvictionStrategy(int interval) {
      method onAccess (line 472) | @Override
    class Builder (line 491) | public static class Builder<K, V> {
      method Builder (line 502) | public Builder(int capacity) {
      method defaultTTL (line 516) | public Builder<K, V> defaultTTL(long ttlMillis) {
      method evictionListener (line 531) | public Builder<K, V> evictionListener(BiConsumer<K, V> listener) {
      method build (line 544) | public LIFOCache<K, V> build() {
      method evictionStrategy (line 555) | public Builder<K, V> evictionStrategy(EvictionStrategy<K, V> strateg...

FILE: src/main/java/com/thealgorithms/datastructures/caches/LRUCache.java
  class LRUCache (line 42) | public class LRUCache<K, V> {
    method LRUCache (line 50) | public LRUCache() {
    method LRUCache (line 54) | public LRUCache(int cap) {
    method setCapacity (line 63) | private void setCapacity(int newCapacity) {
    method evict (line 77) | private Entry<K, V> evict() {
    method checkCapacity (line 93) | private void checkCapacity(int capacity) {
    method get (line 107) | public V get(K key) {
    method moveNodeToLast (line 121) | private void moveNodeToLast(Entry<K, V> entry) {
    method put (line 148) | public void put(K key, V value) {
    method addNewEntry (line 174) | private void addNewEntry(Entry<K, V> newEntry) {
    class Entry (line 186) | static final class Entry<I, J> {
      method Entry (line 193) | Entry() {
      method Entry (line 196) | Entry(Entry<I, J> preEntry, Entry<I, J> nextEntry, I key, J value) {
      method getPreEntry (line 203) | public Entry<I, J> getPreEntry() {
      method setPreEntry (line 207) | public void setPreEntry(Entry<I, J> preEntry) {
      method getNextEntry (line 211) | public Entry<I, J> getNextEntry() {
      method setNextEntry (line 215) | public void setNextEntry(Entry<I, J> nextEntry) {
      method getKey (line 219) | public I getKey() {
      method setKey (line 223) | public void setKey(I key) {
      method getValue (line 227) | public J getValue() {
      method setValue (line 231) | public void setValue(J value) {

FILE: src/main/java/com/thealgorithms/datastructures/caches/MRUCache.java
  class MRUCache (line 19) | public class MRUCache<K, V> {
    method MRUCache (line 30) | public MRUCache() {
    method MRUCache (line 39) | public MRUCache(int cap) {
    method setCapacity (line 49) | private void setCapacity(int newCapacity) {
    method checkCapacity (line 64) | private void checkCapacity(int capacity) {
    method evict (line 76) | private Entry<K, V> evict() {
    method get (line 95) | public V get(K key) {
    method put (line 112) | public void put(K key, V value) {
    method addNewEntry (line 137) | private void addNewEntry(Entry<K, V> newEntry) {
    method moveEntryToLast (line 154) | private void moveEntryToLast(Entry<K, V> entry) {
    class Entry (line 182) | static final class Entry<I, J> {
      method Entry (line 188) | Entry() {
      method Entry (line 191) | Entry(Entry<I, J> preEntry, Entry<I, J> nextEntry, I key, J value) {
      method getPreEntry (line 198) | public Entry<I, J> getPreEntry() {
      method setPreEntry (line 202) | public void setPreEntry(Entry<I, J> preEntry) {
      method getNextEntry (line 206) | public Entry<I, J> getNextEntry() {
      method setNextEntry (line 210) | public void setNextEntry(Entry<I, J> nextEntry) {
      method getKey (line 214) | public I getKey() {
      method setKey (line 218) | public void setKey(I key) {
      method getValue (line 222) | public J getValue() {
      method setValue (line 226) | public void setValue(J value) {

FILE: src/main/java/com/thealgorithms/datastructures/caches/RRCache.java
  class RRCache (line 36) | public final class RRCache<K, V> {
    class CacheEntry (line 55) | private static class CacheEntry<V> {
      method CacheEntry (line 65) | CacheEntry(V value, long ttlMillis) {
      method isExpired (line 75) | boolean isExpired() {
    method RRCache (line 89) | private RRCache(Builder<K, V> builder) {
    method get (line 112) | public V get(K key) {
    method put (line 146) | public void put(K key, V value) {
    method put (line 163) | public void put(K key, V value, long ttlMillis) {
    method evictExpired (line 201) | private int evictExpired() {
    method removeKey (line 225) | private void removeKey(K key) {
    method notifyEviction (line 240) | private void notifyEviction(K key, V value) {
    method getHits (line 255) | public long getHits() {
    method getMisses (line 269) | public long getMisses() {
    method size (line 283) | public int size() {
    method getEvictionStrategy (line 310) | public EvictionStrategy<K, V> getEvictionStrategy() {
    method toString (line 323) | @Override
    type EvictionStrategy (line 349) | public interface EvictionStrategy<K, V> {
      method onAccess (line 356) | int onAccess(RRCache<K, V> cache);
    class NoEvictionStrategy (line 365) | public static class NoEvictionStrategy<K, V> implements EvictionStrate...
      method onAccess (line 366) | @Override
    class PeriodicEvictionStrategy (line 381) | public static class PeriodicEvictionStrategy<K, V> implements Eviction...
      method PeriodicEvictionStrategy (line 391) | public PeriodicEvictionStrategy(int interval) {
      method onAccess (line 398) | @Override
    class Builder (line 417) | public static class Builder<K, V> {
      method Builder (line 429) | public Builder(int capacity) {
      method defaultTTL (line 443) | public Builder<K, V> defaultTTL(long ttlMillis) {
      method random (line 458) | public Builder<K, V> random(Random r) {
      method evictionListener (line 473) | public Builder<K, V> evictionListener(BiConsumer<K, V> listener) {
      method build (line 486) | public RRCache<K, V> build() {
      method evictionStrategy (line 497) | public Builder<K, V> evictionStrategy(EvictionStrategy<K, V> strateg...

FILE: src/main/java/com/thealgorithms/datastructures/crdt/GCounter.java
  class GCounter (line 19) | class GCounter {
    method GCounter (line 29) | GCounter(int myId, int n) {
    method increment (line 42) | public void increment() {
    method value (line 51) | public int value() {
    method compare (line 65) | public boolean compare(GCounter other) {
    method merge (line 79) | public void merge(GCounter other) {

FILE: src/main/java/com/thealgorithms/datastructures/crdt/GSet.java
  class GSet (line 17) | public class GSet<T> {
    method GSet (line 23) | public GSet() {
    method addElement (line 32) | public void addElement(T e) {
    method lookup (line 42) | public boolean lookup(T e) {
    method compare (line 52) | public boolean compare(GSet<T> other) {
    method merge (line 62) | public void merge(GSet<T> other) {

FILE: src/main/java/com/thealgorithms/datastructures/crdt/LWWElementSet.java
  class LWWElementSet (line 23) | class LWWElementSet<T> {
    method LWWElementSet (line 32) | LWWElementSet() {
    method add (line 44) | public void add(T key) {
    method remove (line 54) | public void remove(T key) {
    method lookup (line 68) | public boolean lookup(T key) {
    method merge (line 83) | public void merge(LWWElementSet<T> other) {
    method resolveConflict (line 101) | private Element<T> resolveConflict(Element<T> e1, Element<T> e2) {
  class Element (line 112) | class Element<T> {
    method Element (line 122) | Element(T key, Instant timestamp) {

FILE: src/main/java/com/thealgorithms/datastructures/crdt/ORSet.java
  class ORSet (line 24) | public class ORSet<T> {
    method ORSet (line 32) | public ORSet() {
    method contains (line 43) | public boolean contains(T element) {
    method elements (line 52) | public Set<T> elements() {
    method add (line 63) | public void add(T element) {
    method remove (line 73) | public void remove(T element) {
    method prepare (line 84) | private Set<Pair<T>> prepare(T element) {
    method prepare (line 99) | private String prepare() {
    method effect (line 109) | private void effect(T element, String n) {
    method effect (line 120) | private void effect(Set<Pair<T>> pairsToRemove) {
    method generateUniqueTag (line 130) | private String generateUniqueTag() {
    method compare (line 140) | public boolean compare(ORSet<T> other) {
    method merge (line 155) | public void merge(ORSet<T> other) {
    class Pair (line 167) | public static class Pair<T> {
      method Pair (line 177) | public Pair(T element, String uniqueTag) {
      method getElement (line 187) | public T getElement() {

FILE: src/main/java/com/thealgorithms/datastructures/crdt/PNCounter.java
  class PNCounter (line 19) | class PNCounter {
    method PNCounter (line 31) | PNCounter(int myId, int n) {
    method increment (line 46) | public void increment() {
    method decrement (line 53) | public void decrement() {
    method value (line 62) | public int value() {
    method compare (line 74) | public boolean compare(PNCounter other) {
    method merge (line 91) | public void merge(PNCounter other) {

FILE: src/main/java/com/thealgorithms/datastructures/crdt/TwoPSet.java
  class TwoPSet (line 18) | public class TwoPSet<T> {
    method TwoPSet (line 25) | public TwoPSet() {
    method lookup (line 36) | public boolean lookup(T element) {
    method add (line 45) | public void add(T element) {
    method remove (line 54) | public void remove(T element) {
    method compare (line 66) | public boolean compare(TwoPSet<T> otherSet) {
    method merge (line 76) | public TwoPSet<T> merge(TwoPSet<T> otherSet) {

FILE: src/main/java/com/thealgorithms/datastructures/disjointsetunion/DisjointSetUnion.java
  class DisjointSetUnion (line 14) | public class DisjointSetUnion<T> {
    method makeSet (line 22) | public Node<T> makeSet(final T value) {
    method findSet (line 33) | public Node<T> findSet(Node<T> node) {
    method unionSets (line 47) | public void unionSets(Node<T> x, Node<T> y) {

FILE: src/main/java/com/thealgorithms/datastructures/disjointsetunion/DisjointSetUnionBySize.java
  class DisjointSetUnionBySize (line 18) | public class DisjointSetUnionBySize<T> {
    class Node (line 23) | public static class Node<T> {
      method Node (line 28) | public Node(T value) {
    method makeSet (line 40) | public Node<T> makeSet(final T value) {
    method findSet (line 50) | public Node<T> findSet(Node<T> node) {
    method unionSets (line 63) | public void unionSets(Node<T> x, Node<T> y) {

FILE: src/main/java/com/thealgorithms/datastructures/disjointsetunion/Node.java
  class Node (line 3) | public class Node<T> {
    method Node (line 21) | public Node(final T data) {

FILE: src/main/java/com/thealgorithms/datastructures/dynamicarray/DynamicArray.java
  class DynamicArray (line 20) | public class DynamicArray<E> implements Iterable<E> {
    method DynamicArray (line 33) | public DynamicArray(final int capacity) {
    method DynamicArray (line 45) | public DynamicArray() {
    method add (line 55) | public void add(final E element) {
    method put (line 69) | public void put(final int index, E element) {
    method get (line 89) | @SuppressWarnings("unchecked")
    method remove (line 105) | public E remove(final int index) {
    method getSize (line 120) | public int getSize() {
    method isEmpty (line 129) | public boolean isEmpty() {
    method contains (line 139) | public boolean contains(final E element) {
    method stream (line 153) | public Stream<E> stream() {
    method ensureCapacity (line 163) | private void ensureCapacity(int minCapacity) {
    method fastRemove (line 177) | private void fastRemove(int index) {
    method toString (line 191) | @Override
    method iterator (line 201) | @Override
    class DynamicArrayIterator (line 209) | private final class DynamicArrayIterator implements Iterator<E> {
      method DynamicArrayIterator (line 217) | DynamicArrayIterator() {
      method hasNext (line 226) | @Override
      method next (line 238) | @Override
      method remove (line 255) | @Override
      method checkForComodification (line 271) | private void checkForComodification() {
      method forEachRemaining (line 284) | @Override

FILE: src/main/java/com/thealgorithms/datastructures/graphs/AStar.java
  class AStar (line 14) | public final class AStar {
    method AStar (line 15) | private AStar() {
    class Graph (line 21) | static class Graph {
      method Graph (line 24) | Graph(int size) {
      method getNeighbours (line 31) | private ArrayList<Edge> getNeighbours(int from) {
      method addEdge (line 36) | private void addEdge(Edge edge) {
    class Edge (line 45) | private static class Edge {
      method Edge (line 50) | Edge(int from, int to, int weight) {
      method getFrom (line 56) | public int getFrom() {
      method getTo (line 60) | public int getTo() {
      method getWeight (line 64) | public int getWeight() {
    class PathAndDistance (line 72) | static class PathAndDistance {
      method PathAndDistance (line 77) | PathAndDistance(int distance, ArrayList<Integer> path, int estimated) {
      method getDistance (line 83) | public int getDistance() {
      method getPath (line 87) | public ArrayList<Integer> getPath() {
      method getEstimated (line 91) | public int getEstimated() {
    method initializeGraph (line 97) | static void initializeGraph(Graph graph, List<Integer> data) {
    method aStar (line 112) | public static PathAndDistance aStar(int from, int to, Graph graph, int...

FILE: src/main/java/com/thealgorithms/datastructures/graphs/BellmanFord.java
  class BellmanFord (line 5) | class BellmanFord /*
    method BellmanFord (line 19) | BellmanFord(int v, int e) {
    class Edge (line 25) | class Edge {
      method Edge (line 36) | Edge(int a, int b, int c) {
    method printPath (line 47) | void printPath(int[] p, int i) {
    method main (line 55) | public static void main(String[] args) {
    method go (line 60) | public void go() {
    method show (line 129) | public void show(int source, int end,
    method addEdge (line 177) | public void addEdge(int x, int y, int z) { // Adds unidirectional edge
    method getEdgeArray (line 181) | public Edge[] getEdgeArray() {

FILE: src/main/java/com/thealgorithms/datastructures/graphs/BipartiteGraphDFS.java
  class BipartiteGraphDFS (line 31) | public final class BipartiteGraphDFS {
    method BipartiteGraphDFS (line 32) | private BipartiteGraphDFS() {
    method bipartite (line 47) | private static boolean bipartite(int v, ArrayList<ArrayList<Integer>> ...
    method isBipartite (line 71) | public static boolean isBipartite(int v, ArrayList<ArrayList<Integer>>...

FILE: src/main/java/com/thealgorithms/datastructures/graphs/BoruvkaAlgorithm.java
  class BoruvkaAlgorithm (line 13) | final class BoruvkaAlgorithm {
    method BoruvkaAlgorithm (line 14) | private BoruvkaAlgorithm() {
    class Edge (line 20) | static class Edge {
      method Edge (line 25) | Edge(final int src, final int dest, final int weight) {
    class Graph (line 35) | static class Graph {
      method Graph (line 45) | Graph(final int vertex, final List<Edge> edges) {
    class Component (line 65) | private static class Component {
      method Component (line 69) | Component(final int parent, final int rank) {
    class BoruvkaState (line 78) | private static class BoruvkaState {
      method BoruvkaState (line 83) | BoruvkaState(final Graph graph) {
      method merge (line 94) | void merge(final Edge[] cheapest) {
      method hasMoreEdgesToAdd (line 113) | boolean hasMoreEdgesToAdd() {
      method computeCheapestEdges (line 122) | private Edge[] computeCheapestEdges() {
      method initializeComponents (line 146) | private static Component[] initializeComponents(final Graph graph) {
    method find (line 162) | static int find(final Component[] components, final int i) {
    method union (line 176) | static void union(Component[] components, final int x, final int y) {
    method boruvkaMST (line 196) | static List<Edge> boruvkaMST(final Graph graph) {
    method checkEdgeVertices (line 212) | private static void checkEdgeVertices(final int vertex, final int uppe...

FILE: src/main/java/com/thealgorithms/datastructures/graphs/ConnectedComponent.java
  class Graph (line 12) | class Graph<E extends Comparable<E>> {
    class Node (line 14) | class Node {
      method Node (line 18) | Node(E name) {
    class Edge (line 23) | class Edge {
      method Edge (line 28) | Edge(Node startNode, Node endNode) {
    method Graph (line 37) | Graph() {
    method addEdge (line 49) | public void addEdge(E startNode, E endNode) {
    method countGraphs (line 79) | public int countGraphs() {
    method depthFirstSearch (line 100) | public ArrayList<Node> depthFirstSearch(Node n, ArrayList<Node> visite...
  class ConnectedComponent (line 111) | public final class ConnectedComponent {
    method ConnectedComponent (line 112) | private ConnectedComponent() {
    method main (line 115) | public static void main(String[] args) {

FILE: src/main/java/com/thealgorithms/datastructures/graphs/Cycles.java
  class Cycle (line 6) | class Cycle {
    method Cycle (line 13) | Cycle() {
    method start (line 39) | public void start() {
    method dfs (line 50) | private void dfs(Integer start, Integer curr, ArrayList<Integer> temp) {
    method printAll (line 71) | public void printAll() {
  class Cycles (line 82) | public final class Cycles {
    method Cycles (line 83) | private Cycles() {
    method main (line 86) | public static void main(String[] args) {

FILE: src/main/java/com/thealgorithms/datastructures/graphs/DialsAlgorithm.java
  class DialsAlgorithm (line 23) | public final class DialsAlgorithm {
    method DialsAlgorithm (line 27) | private DialsAlgorithm() {
    class Edge (line 32) | public static class Edge {
      method Edge (line 36) | public Edge(int destination, int weight) {
      method getDestination (line 41) | public int getDestination() {
      method getWeight (line 45) | public int getWeight() {
    method run (line 60) | public static int[] run(List<List<Edge>> graph, int source, int maxEdg...

FILE: src/main/java/com/thealgorithms/datastructures/graphs/DijkstraAlgorithm.java
  class DijkstraAlgorithm (line 8) | public class DijkstraAlgorithm {
    method DijkstraAlgorithm (line 17) | public DijkstraAlgorithm(int vertexCount) {
    method run (line 32) | public int[] run(int[][] graph, int source) {
    method getMinDistanceVertex (line 66) | private int getMinDistanceVertex(int[] distances, boolean[] processed) {
    method printDistances (line 85) | private void printDistances(int[] distances) {

FILE: src/main/java/com/thealgorithms/datastructures/graphs/DijkstraOptimizedAlgorithm.java
  class DijkstraOptimizedAlgorithm (line 11) | public class DijkstraOptimizedAlgorithm {
    method DijkstraOptimizedAlgorithm (line 20) | public DijkstraOptimizedAlgorithm(int vertexCount) {
    method run (line 35) | public int[] run(int[][] graph, int source) {

FILE: src/main/java/com/thealgorithms/datastructures/graphs/EdmondsBlossomAlgorithm.java
  class EdmondsBlossomAlgorithm (line 19) | public final class EdmondsBlossomAlgorithm {
    method EdmondsBlossomAlgorithm (line 21) | private EdmondsBlossomAlgorithm() {
    method maximumMatching (line 33) | public static List<int[]> maximumMatching(Iterable<int[]> edges, int v...
    method updateMatching (line 134) | private static void updateMatching(int[] match, int[] parent, int u) {
    method findBase (line 153) | private static int findBase(int[] base, int[] parent, int u, int v) {
    method contractBlossom (line 183) | private static void contractBlossom(BlossomData blossomData) {
    class BlossomAuxData (line 217) | static class BlossomAuxData {
      method BlossomAuxData (line 225) | BlossomAuxData(Queue<Integer> queue, int[] parent, int[] base, boole...
    class BlossomData (line 238) | static class BlossomData {
      method BlossomData (line 244) | BlossomData(BlossomAuxData auxData, int u, int v, int lca) {

FILE: src/main/java/com/thealgorithms/datastructures/graphs/FloydWarshall.java
  class FloydWarshall (line 17) | public class FloydWarshall {
    method FloydWarshall (line 29) | public FloydWarshall(int numberofvertices) {
    method floydwarshall (line 42) | public void floydwarshall(int[][] adjacencyMatrix) {
    method printDistanceMatrix (line 65) | private void printDistanceMatrix() {
    method getDistanceMatrix (line 82) | public Object[] getDistanceMatrix() {

FILE: src/main/java/com/thealgorithms/datastructures/graphs/FordFulkerson.java
  class FordFulkerson (line 14) | public final class FordFulkerson {
    method FordFulkerson (line 17) | private FordFulkerson() {
    method networkFlow (line 30) | public static int networkFlow(int vertexCount, int[][] capacity, int[]...

FILE: src/main/java/com/thealgorithms/datastructures/graphs/Graphs.java
  class AdjacencyListGraph (line 5) | class AdjacencyListGraph<E extends Comparable<E>> {
    method AdjacencyListGraph (line 9) | AdjacencyListGraph() {
    class Vertex (line 13) | private class Vertex {
      method Vertex (line 18) | Vertex(E data) {
      method addAdjacentVertex (line 23) | public boolean addAdjacentVertex(Vertex to) {
      method removeAdjacentVertex (line 32) | public boolean removeAdjacentVertex(E to) {
    method removeEdge (line 55) | public boolean removeEdge(E from, E to) {
    method addEdge (line 77) | public boolean addEdge(E from, E to) {
    method toString (line 106) | @Override
  class Graphs (line 124) | public final class Graphs {
    method Graphs (line 125) | private Graphs() {
    method main (line 128) | public static void main(String[] args) {

FILE: src/main/java/com/thealgorithms/datastructures/graphs/HamiltonianCycle.java
  class HamiltonianCycle (line 15) | public class HamiltonianCycle {
    method findHamiltonianCycle (line 30) | public int[] findHamiltonianCycle(int[][] graph) {
    method isPathFound (line 60) | public boolean isPathFound(int vertex) {
    method isPresent (line 98) | public boolean isPresent(int vertex) {

FILE: src/main/java/com/thealgorithms/datastructures/graphs/JohnsonsAlgorithm.java
  class JohnsonsAlgorithm (line 22) | public final class JohnsonsAlgorithm {
    method JohnsonsAlgorithm (line 26) | private JohnsonsAlgorithm() {
    method johnsonAlgorithm (line 40) | public static double[][] johnsonAlgorithm(double[][] graph) {
    method convertToEdgeList (line 62) | public static double[][] convertToEdgeList(double[][] graph) {
    method bellmanFord (line 86) | private static double[] bellmanFord(double[][] edges, int numVertices) {
    method reweightGraph (line 129) | public static double[][] reweightGraph(double[][] graph, double[] modi...
    method dijkstra (line 153) | public static double[] dijkstra(double[][] reweightedGraph, int source...
    method minDistance (line 189) | public static int minDistance(double[] dist, boolean[] visited) {

FILE: src/main/java/com/thealgorithms/datastructures/graphs/KahnsAlgorithm.java
  class AdjacencyList (line 18) | class AdjacencyList<E extends Comparable<E>> {
    method AdjacencyList (line 25) | AdjacencyList() {
    method addEdge (line 36) | void addEdge(E from, E to) {
    method getAdjacents (line 52) | ArrayList<E> getAdjacents(E v) {
    method getVertices (line 61) | Set<E> getVertices() {
  class TopologicalSort (line 72) | class TopologicalSort<E extends Comparable<E>> {
    method TopologicalSort (line 82) | TopologicalSort(AdjacencyList<E> graph) {
    method calculateInDegree (line 90) | void calculateInDegree() {
    method topSortOrder (line 108) | ArrayList<E> topSortOrder() {
  class KahnsAlgorithm (line 145) | public final class KahnsAlgorithm {
    method KahnsAlgorithm (line 146) | private KahnsAlgorithm() {
    method main (line 149) | public static void main(String[] args) {

FILE: src/main/java/com/thealgorithms/datastructures/graphs/Kosaraju.java
  class Kosaraju (line 58) | public class Kosaraju {
    method kosaraju (line 81) | public List<List<Integer>> kosaraju(int v, List<List<Integer>> list) {
    method sortEdgesByLowestFinishTime (line 93) | private void sortEdgesByLowestFinishTime(int v, List<List<Integer>> li...
    method createTransposeMatrix (line 108) | private List<List<Integer>> createTransposeMatrix(int v, List<List<Int...
    method findStronglyConnectedComponents (line 126) | public void findStronglyConnectedComponents(int v, List<List<Integer>>...
    method dfs (line 144) | private void dfs(int node, int[] vis, List<List<Integer>> list) {
    method dfs2 (line 160) | private void dfs2(int node, int[] vis, List<List<Integer>> list) {

FILE: src/main/java/com/thealgorithms/datastructures/graphs/Kruskal.java
  class Kruskal (line 22) | @SuppressWarnings({"rawtypes", "unchecked"})
    class Edge (line 28) | static class Edge {
      method Edge (line 34) | Edge(int from, int to, int weight) {
    method addEdge (line 49) | static void addEdge(HashSet<Edge>[] graph, int from, int to, int weigh...
    method kruskal (line 59) | public HashSet<Edge>[] kruskal(HashSet<Edge>[] graph) {

FILE: src/main/java/com/thealgorithms/datastructures/graphs/MatrixGraphs.java
  class MatrixGraphs (line 15) | public final class MatrixGraphs {
    method MatrixGraphs (line 16) | private MatrixGraphs() {
    method main (line 19) | public static void main(String[] args) {
  class AdjacencyMatrixGraph (line 46) | class AdjacencyMatrixGraph {
    method AdjacencyMatrixGraph (line 73) | AdjacencyMatrixGraph(int givenNumberOfVertices) {
    method setNumberOfVertices (line 89) | private void setNumberOfVertices(int newNumberOfVertices) {
    method numberOfVertices (line 98) | public int numberOfVertices() {
    method setNumberOfEdges (line 108) | private void setNumberOfEdges(int newNumberOfEdges) {
    method numberOfEdges (line 117) | public int numberOfEdges() {
    method setAdjacency (line 126) | private void setAdjacency(int[][] newAdjacency) {
    method adjacency (line 135) | private int[][] adjacency() {
    method adjacencyOfEdgeDoesExist (line 146) | private boolean adjacencyOfEdgeDoesExist(int from, int to) {
    method vertexDoesExist (line 156) | public boolean vertexDoesExist(int aVertex) {
    method edgeDoesExist (line 167) | public boolean edgeDoesExist(int from, int to) {
    method addEdge (line 183) | public boolean addEdge(int from, int to) {
    method removeEdge (line 204) | public boolean removeEdge(int from, int to) {
    method depthFirstOrder (line 223) | public List<Integer> depthFirstOrder(int startVertex) {
    method depthFirstOrder (line 250) | private void depthFirstOrder(int currentVertex, boolean[] visited, Lis...
    method breadthFirstOrder (line 278) | public List<Integer> breadthFirstOrder(int startVertex) {
    method toString (line 329) | public String toString() {

FILE: src/main/java/com/thealgorithms/datastructures/graphs/PrimMST.java
  class PrimMST (line 7) | public class PrimMST {
    method minKey (line 14) | int minKey(int[] key, Boolean[] mstSet) {
    method primMST (line 29) | public int[] primMST(int[][] graph) {

FILE: src/main/java/com/thealgorithms/datastructures/graphs/TarjansAlgorithm.java
  class TarjansAlgorithm (line 58) | public class TarjansAlgorithm {
    method stronglyConnectedComponents (line 73) | public List<List<Integer>> stronglyConnectedComponents(int v, List<Lis...
    method stronglyConnCompsUtil (line 107) | private void stronglyConnCompsUtil(int u, int[] lowTime, int[] inserti...

FILE: src/main/java/com/thealgorithms/datastructures/graphs/TwoSat.java
  class TwoSat (line 67) | class TwoSat {
    method TwoSat (line 93) | @SuppressWarnings({"unchecked", "rawtypes"})
    method addClause (line 127) | void addClause(int a, boolean isNegateA, int b, boolean isNegateB) {
    method solve (line 153) | void solve() {
    method isSolutionExists (line 198) | boolean isSolutionExists() {
    method getSolutions (line 212) | boolean[] getSolutions() {
    method dfsForTopologicalOrder (line 223) | private void dfsForTopologicalOrder(int u, boolean[] visited, Stack<In...
    method dfsForScc (line 234) | private void dfsForScc(int u, boolean[] visited, int[] component, int ...
    method negate (line 262) | private int negate(int a) {

FILE: src/main/java/com/thealgorithms/datastructures/graphs/UndirectedAdjacencyListGraph.java
  class UndirectedAdjacencyListGraph (line 7) | public class UndirectedAdjacencyListGraph {
    method addNode (line 14) | public int addNode() {
    method addEdge (line 27) | public boolean addEdge(int orig, int dest, int weight) {
    method getNeighbors (line 47) | public HashSet<Integer> getNeighbors(int node) {
    method getEdgeWeight (line 58) | public Integer getEdgeWeight(int orig, int dest) {
    method size (line 66) | public int size() {

FILE: src/main/java/com/thealgorithms/datastructures/graphs/WelshPowell.java
  class WelshPowell (line 25) | @SuppressWarnings({"rawtypes", "unchecked"})
    method WelshPowell (line 29) | private WelshPowell() {
    class Graph (line 35) | static final class Graph {
      method Graph (line 44) | private Graph(int vertices) {
      method addEdge (line 60) | private void addEdge(int nodeA, int nodeB) {
      method validateVertex (line 76) | private void validateVertex(int vertex) {
      method getAdjacencyList (line 88) | HashSet<Integer> getAdjacencyList(int vertex) {
      method getNumVertices (line 97) | int getNumVertices() {
    method makeGraph (line 110) | public static Graph makeGraph(int numberOfVertices, int[][] listOfEdge...
    method findColoring (line 127) | public static int[] findColoring(Graph graph) {
    method isBlank (line 151) | private static boolean isBlank(int color) {
    method isAdjacentToColored (line 163) | private static boolean isAdjacentToColored(Graph graph, int vertex, in...
    method initializeColors (line 173) | private static int[] initializeColors(int numberOfVertices) {
    method getSortedNodes (line 185) | private static Integer[] getSortedNodes(final Graph graph) {
    method computeUsedColors (line 197) | private static boolean[] computeUsedColors(final Graph graph, final in...
    method firstUnusedColor (line 209) | private static int firstUnusedColor(boolean[] usedColors) {

FILE: src/main/java/com/thealgorithms/datastructures/hashmap/hashing/GenericHashMapUsingArray.java
  class GenericHashMapUsingArray (line 26) | @SuppressWarnings({"rawtypes", "unchecked"})
    method GenericHashMapUsingArray (line 35) | public GenericHashMapUsingArray() {
    method initBuckets (line 45) | private void initBuckets(int n) {
    method put (line 59) | public void put(K key, V value) {
    method hashFunction (line 88) | private int hashFunction(K key) {
    method reHash (line 95) | private void reHash() {
    method remove (line 112) | public void remove(K key) {
    method size (line 135) | public int size() {
    method get (line 145) | public V get(K key) {
    method toString (line 156) | @Override
    method containsKey (line 182) | public boolean containsKey(K key) {
    class Node (line 189) | public class Node {
      method Node (line 199) | public Node(K key, V value) {

FILE: src/main/java/com/thealgorithms/datastructures/hashmap/hashing/GenericHashMapUsingArrayList.java
  class GenericHashMapUsingArrayList (line 26) | public class GenericHashMapUsingArrayList<K, V> {
    method GenericHashMapUsingArrayList (line 34) | public GenericHashMapUsingArrayList() {
    method put (line 49) | public void put(K key, V value) {
    method reHash (line 73) | private void reHash() {
    method get (line 93) | public V get(K key) {
    method remove (line 109) | public void remove(K key) {
    method containsKey (line 132) | public boolean containsKey(K key) {
    method size (line 141) | public int size() {
    method toString (line 150) | @Override
    class Node (line 173) | private class Node {
      method Node (line 183) | Node(K key, V val) {

FILE: src/main/java/com/thealgorithms/datastructures/hashmap/hashing/HashMap.java
  class HashMap (line 11) | @SuppressWarnings("rawtypes")
    method HashMap (line 21) | @SuppressWarnings("unchecked")
    method computeHash (line 38) | private int computeHash(K key) {
    method insert (line 53) | public void insert(K key, V value) {
    method delete (line 63) | public void delete(K key) {
    method search (line 74) | public V search(K key) {
    method display (line 83) | public void display() {
    method clear (line 92) | public void clear() {
    method size (line 103) | public int size() {
    class LinkedList (line 117) | public static class LinkedList<K, V> {
      method insert (line 128) | public void insert(K key, V value) {
      method findEnd (line 148) | private Node<K, V> findEnd(Node<K, V> node) {
      method findKey (line 161) | public Node<K, V> findKey(K key) {
      method delete (line 178) | public void delete(K key) {
      method display (line 205) | public String display() {
      method display (line 215) | private String display(Node<K, V> node) {
      method isEmpty (line 232) | public boolean isEmpty() {
    class Node (line 243) | public static class Node<K, V> {
      method Node (line 254) | public Node(K key, V value) {
      method getKey (line 264) | public K getKey() {
      method getValue (line 273) | public V getValue() {
      method setValue (line 277) | public void setValue(V value) { // This method allows updating the v...
      method getNext (line 286) | public Node<K, V> getNext() {
      method setNext (line 295) | public void setNext(Node<K, V> next) {

FILE: src/main/java/com/thealgorithms/datastructures/hashmap/hashing/HashMapCuckooHashing.java
  class HashMapCuckooHashing (line 14) | public class HashMapCuckooHashing {
    method HashMapCuckooHashing (line 27) | public HashMapCuckooHashing(int tableSize) {
    method hashFunction1 (line 41) | public int hashFunction1(int key) {
    method hashFunction2 (line 55) | public int hashFunction2(int key) {
    method insertKey2HashTable (line 73) | public void insertKey2HashTable(int key) {
    method reHashTableIncreasesTableSize (line 127) | public void reHashTableIncreasesTableSize() {
    method deleteKeyFromHashTable (line 145) | public void deleteKeyFromHashTable(int key) {
    method displayHashtable (line 170) | public void displayHashtable() {
    method findKeyInTable (line 188) | public int findKeyInTable(int key) {
    method checkTableContainsKey (line 214) | public boolean checkTableContainsKey(int key) {
    method checkLoadFactor (line 224) | public double checkLoadFactor() {
    method isFull (line 238) | public boolean isFull() {
    method isEmpty (line 252) | public boolean isEmpty() {
    method getNumberOfKeysInTable (line 266) | public int getNumberOfKeysInTable() {

FILE: src/main/java/com/thealgorithms/datastructures/hashmap/hashing/ImmutableHashMap.java
  class ImmutableHashMap (line 12) | public final class ImmutableHashMap<K, V> {
    method ImmutableHashMap (line 22) | private ImmutableHashMap(Node<K, V>[] table, int size) {
    method empty (line 34) | @SuppressWarnings({"unchecked", "rawtypes"})
    method put (line 47) | public ImmutableHashMap<K, V> put(K key, V value) {
    method get (line 61) | public V get(K key) {
    method containsKey (line 80) | public boolean containsKey(K key) {
    method size (line 89) | public int size() {
    method hash (line 96) | private int hash(K key) {
    class Node (line 103) | private static final class Node<K, V> {
      method Node (line 109) | private Node(K key, V value, Node<K, V> next) {

FILE: src/main/java/com/thealgorithms/datastructures/hashmap/hashing/Intersection.java
  class Intersection (line 34) | public final class Intersection {
    method Intersection (line 36) | private Intersection() {
    method intersection (line 53) | public static List<Integer> intersection(int[] arr1, int[] arr2) {

FILE: src/main/java/com/thealgorithms/datastructures/hashmap/hashing/LinearProbingHashMap.java
  class LinearProbingHashMap (line 37) | @SuppressWarnings("rawtypes")
    method LinearProbingHashMap (line 45) | public LinearProbingHashMap() {
    method LinearProbingHashMap (line 49) | @SuppressWarnings("unchecked")
    method put (line 57) | @Override
    method get (line 81) | @Override
    method delete (line 96) | @Override
    method contains (line 130) | @Override
    method size (line 135) | @Override
    method keys (line 140) | @Override
    method increment (line 153) | private int increment(int i) {
    method resize (line 157) | private void resize(int newSize) {

FILE: src/main/java/com/thealgorithms/datastructures/hashmap/hashing/MainCuckooHashing.java
  class MainCuckooHashing (line 5) | public final class MainCuckooHashing {
    method MainCuckooHashing (line 6) | private MainCuckooHashing() {
    method main (line 9) | public static void main(String[] args) {

FILE: src/main/java/com/thealgorithms/datastructures/hashmap/hashing/MajorityElement.java
  class MajorityElement (line 15) | public final class MajorityElement {
    method MajorityElement (line 16) | private MajorityElement() {
    method majority (line 25) | public static List<Integer> majority(int[] nums) {

FILE: src/main/java/com/thealgorithms/datastructures/hashmap/hashing/Map.java
  class Map (line 3) | public abstract class Map<Key, Value> {
    method put (line 5) | abstract boolean put(Key key, Value value);
    method get (line 7) | abstract Value get(Key key);
    method delete (line 9) | abstract boolean delete(Key key);
    method keys (line 11) | abstract Iterable<Key> keys();
    method size (line 13) | abstract int size();
    method contains (line 15) | public boolean contains(Key key) {
    method hash (line 19) | protected int hash(Key key, int size) {

FILE: src/main/java/com/thealgorithms/datastructures/heaps/EmptyHeapException.java
  class EmptyHeapException (line 7) | @SuppressWarnings("serial")
    method EmptyHeapException (line 10) | public EmptyHeapException(String message) {
    method EmptyHeapException (line 14) | public EmptyHeapException(String message, Throwable cause) {

FILE: src/main/java/com/thealgorithms/datastructures/heaps/FibonacciHeap.java
  class FibonacciHeap (line 28) | public class FibonacciHeap {
    method FibonacciHeap (line 42) | public FibonacciHeap() {
    method FibonacciHeap (line 52) | public FibonacciHeap(int key) {
    method empty (line 62) | public boolean empty() {
    method insert (line 74) | public HeapNode insert(int key) {
    method deleteMin (line 93) | public void deleteMin() {
    method findMin (line 131) | public HeapNode findMin() {
    method meld (line 141) | public void meld(FibonacciHeap heap2) {
    method size (line 159) | public int size() {
    method countersRep (line 167) | public int[] countersRep() {
    method delete (line 187) | public void delete(HeapNode x) {
    method decreaseKey (line 198) | private void decreaseKey(HeapNode x, int delta) {
    method potential (line 217) | public int potential() {
    method totalLinks (line 226) | public static int totalLinks() {
    method totalCuts (line 235) | public static int totalCuts() {
    method updateMin (line 243) | private void updateMin(HeapNode posMin) {
    method cascadingCuts (line 256) | private void cascadingCuts(HeapNode curr) {
    method cut (line 277) | private void cut(HeapNode curr) {
    method successiveLink (line 304) | private void successiveLink(HeapNode curr) {
    method toBuckets (line 312) | private HeapNode[] toBuckets(HeapNode curr) {
    method fromBuckets (line 333) | private HeapNode fromBuckets(HeapNode[] buckets) {
    method link (line 358) | private HeapNode link(HeapNode c1, HeapNode c2) {
    class HeapNode (line 379) | public class HeapNode {
      method HeapNode (line 394) | public HeapNode(int key) {
      method getKey (line 404) | public int getKey() {
      method isMarked (line 412) | private boolean isMarked() {
      method mark (line 420) | private void mark() {
      method setNext (line 431) | private void setNext(HeapNode newNext) {
      method getNext (line 442) | private HeapNode getNext() {
      method isRoot (line 450) | private boolean isRoot() {

FILE: src/main/java/com/thealgorithms/datastructures/heaps/GenericHeap.java
  class GenericHeap (line 11) | public class GenericHeap<T extends Comparable<T>> {
    method add (line 21) | public void add(T item) {
    method upHeapify (line 36) | private void upHeapify(int ci) {
    method size (line 49) | public int size() {
    method isEmpty (line 58) | public boolean isEmpty() {
    method remove (line 67) | public T remove() {
    method downHeapify (line 83) | private void downHeapify(int pi) {
    method get (line 104) | public T get() {
    method isLarger (line 118) | private int isLarger(T t, T o) {
    method swap (line 128) | private void swap(int i, int j) {
    method updatePriority (line 142) | public void updatePriority(T item) {

FILE: src/main/java/com/thealgorithms/datastructures/heaps/Heap.java
  type Heap (line 21) | public interface Heap {
    method getElement (line 27) | HeapElement getElement() throws EmptyHeapException;
    method insertElement (line 35) | void insertElement(HeapElement element);
    method deleteElement (line 43) | void deleteElement(int elementIndex) throws EmptyHeapException;

FILE: src/main/java/com/thealgorithms/datastructures/heaps/HeapElement.java
  class HeapElement (line 25) | public class HeapElement {
    method HeapElement (line 37) | public HeapElement(double key, Object info) {
    method HeapElement (line 48) | public HeapElement(int key, Object info) {
    method HeapElement (line 59) | public HeapElement(Integer key, Object info) {
    method HeapElement (line 70) | public HeapElement(Double key, Object info) {
    method HeapElement (line 80) | public HeapElement(double key) {
    method HeapElement (line 90) | public HeapElement(int key) {
    method HeapElement (line 100) | public HeapElement(Integer key) {
    method HeapElement (line 110) | public HeapElement(Double key) {
    method getInfo (line 121) | public Object getInfo() {
    method getKey (line 130) | public double getKey() {
    method toString (line 140) | @Override
    method equals (line 150) | @Override
    method hashCode (line 163) | @Override
    method getValue (line 170) | public String getValue() {

FILE: src/main/java/com/thealgorithms/datastructures/heaps/IndexedPriorityQueue.java
  class IndexedPriorityQueue (line 42) | public class IndexedPriorityQueue<E> {
    method IndexedPriorityQueue (line 67) | public IndexedPriorityQueue() {
    method IndexedPriorityQueue (line 71) | public IndexedPriorityQueue(Comparator<? super E> cmp) {
    method IndexedPriorityQueue (line 75) | public IndexedPriorityQueue(int initialCapacity, Comparator<? super E>...
    method size (line 85) | public int size() {
    method isEmpty (line 90) | public boolean isEmpty() {
    method peek (line 98) | @SuppressWarnings("unchecked")
    method offer (line 109) | public boolean offer(E e) {
    method poll (line 123) | @SuppressWarnings("unchecked")
    method remove (line 137) | public boolean remove(Object o) {
    method contains (line 147) | public boolean contains(Object o) {
    method clear (line 152) | public void clear() {
    method changeKey (line 171) | public void changeKey(E e, Consumer<E> mutator) {
    method decreaseKey (line 188) | public void decreaseKey(E e, Consumer<E> mutator) {
    method increaseKey (line 201) | public void increaseKey(E e, Consumer<E> mutator) {
    method grow (line 215) | private void grow(int minCapacity) {
    method compare (line 222) | @SuppressWarnings("unchecked")
    method siftUp (line 234) | @SuppressWarnings("unchecked")
    method siftUp (line 254) | @SuppressWarnings("unchecked")
    method siftDown (line 277) | @SuppressWarnings("unchecked")
    method removeAt (line 307) | @SuppressWarnings("unchecked")

FILE: src/main/java/com/thealgorithms/datastructures/heaps/KthElementFinder.java
  class KthElementFinder (line 13) | public final class KthElementFinder {
    method KthElementFinder (line 14) | private KthElementFinder() {
    method findKthLargest (line 28) | public static int findKthLargest(int[] nums, int k) {
    method findKthSmallest (line 50) | public static int findKthSmallest(int[] nums, int k) {

FILE: src/main/java/com/thealgorithms/datastructures/heaps/LeftistHeap.java
  class LeftistHeap (line 23) | public class LeftistHeap {
    class Node (line 25) | private static final class Node {
      method Node (line 32) | private Node(int element) {
    method LeftistHeap (line 43) | public LeftistHeap() {
    method isEmpty (line 52) | public boolean isEmpty() {
    method clear (line 59) | public void clear() {
    method merge (line 68) | public void merge(LeftistHeap h1) {
    method merge (line 81) | public Node merge(Node a, Node b) {
    method insert (line 120) | public void insert(int a) {
    method extractMin (line 129) | public int extractMin() {
    method inOrder (line 144) | public ArrayList<Integer> inOrder() {
    method inOrderAux (line 156) | private void inOrderAux(Node n, ArrayList<Integer> lst) {

FILE: src/main/java/com/thealgorithms/datastructures/heaps/MaxHeap.java
  class MaxHeap (line 29) | public class MaxHeap implements Heap {
    method MaxHeap (line 41) | public MaxHeap(List<HeapElement> listElements) {
    method heapifyDown (line 67) | private void heapifyDown(int elementIndex) {
    method getElement (line 97) | public HeapElement getElement(int elementIndex) {
    method getElementKey (line 111) | private double getElementKey(int elementIndex) {
    method swap (line 124) | private void swap(int index1, int index2) {
    method toggleUp (line 136) | private void toggleUp(int elementIndex) {
    method toggleDown (line 150) | private void toggleDown(int elementIndex) {
    method extractMax (line 175) | private HeapElement extractMax() throws EmptyHeapException {
    method insertElement (line 187) | @Override
    method deleteElement (line 199) | @Override
    method getElement (line 226) | @Override
    method size (line 236) | public int size() {
    method isEmpty (line 245) | public boolean isEmpty() {

FILE: src/main/java/com/thealgorithms/datastructures/heaps/MedianFinder.java
  class MedianFinder (line 19) | public final class MedianFinder {
    method MedianFinder (line 20) | MedianFinder() {
    method addNum (line 32) | public void addNum(int num) {
    method findMedian (line 53) | public double findMedian() {

FILE: src/main/java/com/thealgorithms/datastructures/heaps/MergeKSortedArrays.java
  class MergeKSortedArrays (line 17) | public final class MergeKSortedArrays {
    method MergeKSortedArrays (line 18) | private MergeKSortedArrays() {
    method mergeKArrays (line 36) | public static int[] mergeKArrays(int[][] arrays) {

FILE: src/main/java/com/thealgorithms/datastructures/heaps/MinHeap.java
  class MinHeap (line 29) | public class MinHeap implements Heap {
    method MinHeap (line 40) | public MinHeap(List<HeapElement> listElements) {
    method getElement (line 74) | public HeapElement getElement(int elementIndex) {
    method getElementKey (line 88) | private double getElementKey(int elementIndex) {
    method swap (line 101) | private void swap(int index1, int index2) {
    method heapifyDown (line 113) | private void heapifyDown(int elementIndex) {
    method toggleUp (line 145) | private void toggleUp(int elementIndex) {
    method toggleDown (line 166) | private void toggleDown(int elementIndex) {
    method extractMin (line 198) | private HeapElement extractMin() throws EmptyHeapException {
    method insertElement (line 210) | @Override
    method deleteElement (line 222) | @Override
    method getElement (line 249) | @Override
    method size (line 259) | public int size() {
    method isEmpty (line 268) | public boolean isEmpty() {

FILE: src/main/java/com/thealgorithms/datastructures/heaps/MinPriorityQueue.java
  class MinPriorityQueue (line 22) | public class MinPriorityQueue {
    method MinPriorityQueue (line 33) | public MinPriorityQueue(int c) {
    method insert (line 44) | public void insert(int key) {
    method peek (line 67) | public int peek() {
    method isEmpty (line 79) | public boolean isEmpty() {
    method isFull (line 88) | public boolean isFull() {
    method print (line 95) | public void print() {
    method heapSort (line 105) | public void heapSort() {
    method sink (line 114) | private void sink() {
    method delete (line 145) | public int delete() {

FILE: src/main/java/com/thealgorithms/datastructures/lists/CircleLinkedList.java
  class CircleLinkedList (line 13) | @SuppressWarnings("rawtypes")
    class Node (line 21) | static final class Node<E> {
      method Node (line 26) | private Node(E value, Node<E> next) {
    method CircleLinkedList (line 40) | public CircleLinkedList() {
    method getSize (line 51) | public int getSize() {
    method append (line 62) | public void append(E value) {
    method toString (line 82) | public String toString() {
    method remove (line 107) | public E remove(int pos) {

FILE: src/main/java/com/thealgorithms/datastructures/lists/CircularDoublyLinkedList.java
  class CircularDoublyLinkedList (line 17) | public class CircularDoublyLinkedList<E> {
    class Node (line 18) | static final class Node<E> {
      method Node (line 23) | private Node(E value, Node<E> next, Node<E> prev) {
    method CircularDoublyLinkedList (line 38) | public CircularDoublyLinkedList() {
    method getSize (line 50) | public int getSize() {
    method append (line 62) | public void append(E value) {
    method toString (line 79) | public String toString() {
    method remove (line 104) | public E remove(int pos) {

FILE: src/main/java/com/thealgorithms/datastructures/lists/CountSinglyLinkedListRecursion.java
  class CountSinglyLinkedListRecursion (line 7) | public class CountSinglyLinkedListRecursion extends SinglyLinkedList {
    method countRecursion (line 15) | private int countRecursion(SinglyLinkedListNode head) {
    method count (line 25) | @Override

FILE: src/main/java/com/thealgorithms/datastructures/lists/CreateAndDetectLoop.java
  class CreateAndDetectLoop (line 9) | public final class CreateAndDetectLoop {
    method CreateAndDetectLoop (line 14) | private CreateAndDetectLoop() {
    class Node (line 22) | static final class Node {
      method Node (line 26) | Node(int data) {
    method createLoop (line 42) | static void createLoop(Node head, int position1, int position2) {
    method detectLoop (line 79) | static boolean detectLoop(Node head) {

FILE: src/main/java/com/thealgorithms/datastructures/lists/CursorLinkedList.java
  class CursorLinkedList (line 13) | @SuppressWarnings({"rawtypes", "unchecked"})
    class Node (line 20) | private static class Node<T> {
      method Node (line 24) | Node(T element, int next) {
    method CursorLinkedList (line 48) | public CursorLinkedList() {
    method printList (line 57) | public void printList() {
    method indexOf (line 75) | public int indexOf(T element) {
    method get (line 100) | public T get(int position) {
    method removeByIndex (line 121) | public void removeByIndex(int index) {
    method remove (line 134) | public void remove(T element) {
    method alloc (line 164) | private int alloc() {
    method free (line 179) | private void free(int index) {
    method append (line 193) | public void append(T element) {

FILE: src/main/java/com/thealgorithms/datastructures/lists/DoublyLinkedList.java
  class DoublyLinkedList (line 16) | public final class DoublyLinkedList {
    method DoublyLinkedList (line 34) | public DoublyLinkedList() {
    method DoublyLinkedList (line 45) | public DoublyLinkedList(int[] array) {
    method isEmpty (line 59) | public boolean isEmpty() {
    method display (line 66) | public void display() { // Prints contents of the list
    method displayBackwards (line 78) | public void displayBackwards() {
  class Link (line 93) | class Link {
    method Link (line 113) | Link(int value) {
    method displayLink (line 120) | public void displayLink() {
    method main (line 129) | public static void main(String[] args) {
  class LinkOperations (line 172) | class LinkOperations {
    method insertHead (line 193) | public void insertHead(int x, DoublyLinkedList doublyLinkedList) {
    method insertTail (line 210) | public void insertTail(int x, DoublyLinkedList doublyLinkedList) {
    method insertElementByIndex (line 230) | public void insertElementByIndex(int x, int index, DoublyLinkedList do...
    method deleteHead (line 260) | public Link deleteHead() {
    method deleteTail (line 279) | public Link deleteTail() {
    method delete (line 298) | public void delete(int x) {
    method insertOrdered (line 325) | public void insertOrdered(int x, DoublyLinkedList doublyLinkedList) {
    method deleteNode (line 350) | public void deleteNode(Link z) {
    method removeDuplicates (line 362) | public void removeDuplicates(DoublyLinkedList l) {
    method reverse (line 379) | public void reverse() {
    method clearList (line 405) | public void clearList() {

FILE: src/main/java/com/thealgorithms/datastructures/lists/FlattenMultilevelLinkedList.java
  class FlattenMultilevelLinkedList (line 16) | public final class FlattenMultilevelLinkedList {
    method FlattenMultilevelLinkedList (line 20) | private FlattenMultilevelLinkedList() {
    class Node (line 27) | static class Node {
      method Node (line 32) | Node(int data) {
    method merge (line 47) | private static Node merge(Node a, Node b) {
    method flatten (line 77) | public static Node flatten(Node head) {

FILE: src/main/java/com/thealgorithms/datastructures/lists/MergeKSortedLinkedList.java
  class MergeKSortedLinkedList (line 28) | public class MergeKSortedLinkedList {
    method mergeKList (line 41) | Node mergeKList(Node[] a, int n) {
    class Node (line 80) | static class Node {
      method Node (line 84) | Node(int data) {
      method Node (line 89) | Node(int data, Node next) {

FILE: src/main/java/com/thealgorithms/datastructures/lists/MergeSortedArrayList.java
  class MergeSortedArrayList (line 30) | public final class MergeSortedArrayList {
    method MergeSortedArrayList (line 32) | private MergeSortedArrayList() {
    method merge (line 46) | public static void merge(List<Integer> listA, List<Integer> listB, Col...

FILE: src/main/java/com/thealgorithms/datastructures/lists/MergeSortedSinglyLinkedList.java
  class MergeSortedSinglyLinkedList (line 27) | public class MergeSortedSinglyLinkedList extends SinglyLinkedList {
    method merge (line 40) | public static SinglyLinkedList merge(SinglyLinkedList listA, SinglyLin...

FILE: src/main/java/com/thealgorithms/datastructures/lists/MiddleOfLinkedList.java
  class MiddleOfLinkedList (line 20) | public final class MiddleOfLinkedList {
    method MiddleOfLinkedList (line 22) | private MiddleOfLinkedList() {
    method middleNode (line 31) | public static SinglyLinkedListNode middleNode(final SinglyLinkedListNo...

FILE: src/main/java/com/thealgorithms/datastructures/lists/QuickSortLinkedList.java
  class QuickSortLinkedList (line 105) | public class QuickSortLinkedList {
    method QuickSortLinkedList (line 115) | public QuickSortLinkedList(SinglyLinkedList list) {
    method sortList (line 124) | public void sortList() {
    method sortList (line 139) | private SinglyLinkedListNode sortList(SinglyLinkedListNode head) {

FILE: src/main/java/com/thealgorithms/datastructures/lists/RandomNode.java
  class RandomNode (line 30) | public class RandomNode {
    class ListNode (line 36) | static class ListNode {
      method ListNode (line 41) | ListNode(int val) {
    method RandomNode (line 46) | public RandomNode(ListNode head) {
    method getRandom (line 59) | public int getRandom() {
    method main (line 78) | public static void main(String[] args) {

FILE: src/main/java/com/thealgorithms/datastructures/lists/ReverseKGroup.java
  class ReverseKGroup (line 33) | public class ReverseKGroup {
    method length (line 41) | public int length(SinglyLinkedListNode head) {
    method reverse (line 59) | public SinglyLinkedListNode reverse(SinglyLinkedListNode head, int cou...
    method reverseKGroup (line 88) | public SinglyLinkedListNode reverseKGroup(SinglyLinkedListNode head, i...

FILE: src/main/java/com/thealgorithms/datastructures/lists/RotateSinglyLinkedLists.java
  class RotateSinglyLinkedLists (line 32) | public class RotateSinglyLinkedLists {
    method rotateRight (line 41) | public SinglyLinkedListNode rotateRight(SinglyLinkedListNode head, int...

FILE: src/main/java/com/thealgorithms/datastructures/lists/SearchSinglyLinkedListRecursion.java
  class SearchSinglyLinkedListRecursion (line 24) | public class SearchSinglyLinkedListRecursion extends SinglyLinkedList {
    method searchRecursion (line 33) | private boolean searchRecursion(SinglyLinkedListNode node, int key) {
    method search (line 43) | @Override

FILE: src/main/java/com/thealgorithms/datastructures/lists/SinglyLinkedList.java
  class SinglyLinkedList (line 10) | public class SinglyLinkedList implements Iterable<Integer> {
    method SinglyLinkedList (line 25) | public SinglyLinkedList() {
    method SinglyLinkedList (line 36) | public SinglyLinkedList(SinglyLinkedListNode head, int size) {
    method detectLoop (line 46) | public boolean detectLoop() {
    method middle (line 64) | public SinglyLinkedListNode middle() {
    method swapNodes (line 81) | public void swapNodes(int valueFirst, int valueSecond) {
    method reverseListIter (line 129) | public SinglyLinkedListNode reverseListIter(SinglyLinkedListNode node) {
    method reverseListRec (line 152) | public SinglyLinkedListNode reverseListRec(SinglyLinkedListNode head) {
    method clear (line 169) | public void clear() {
    method isEmpty (line 183) | public boolean isEmpty() {
    method size (line 192) | public int size() {
    method getHead (line 201) | public SinglyLinkedListNode getHead() {
    method setHead (line 209) | public void setHead(SinglyLinkedListNode head) {
    method count (line 218) | public int count() {
    method search (line 233) | public boolean search(final int key) {
    method toString (line 242) | @Override
    method deleteDuplicates (line 251) | public void deleteDuplicates() {
    method print (line 275) | public void print() {
    method insertHead (line 292) | public void insertHead(int x) {
    method insert (line 301) | public void insert(int data) {
    method insertNth (line 311) | public void insertNth(int data, int position) {
    method deleteHead (line 340) | public void deleteHead() {
    method delete (line 347) | public void delete() {
    method deleteNth (line 354) | public void deleteNth(int position) {
    method getNth (line 377) | public int getNth(int index) {
    method checkBounds (line 393) | public void checkBounds(int position, int low, int high) {
    method main (line 402) | public static void main(String[] arg) {
    method iterator (line 449) | @Override
    class SinglyLinkedListIterator (line 454) | private class SinglyLinkedListIterator implements Iterator<Integer> {
      method SinglyLinkedListIterator (line 457) | SinglyLinkedListIterator() {
      method hasNext (line 461) | @Override
      method next (line 466) | @Override

FILE: src/main/java/com/thealgorithms/datastructures/lists/SinglyLinkedListNode.java
  class SinglyLinkedListNode (line 7) | class SinglyLinkedListNode {
    method SinglyLinkedListNode (line 12) | SinglyLinkedListNode() {
    method SinglyLinkedListNode (line 20) | SinglyLinkedListNode(int value) {
    method SinglyLinkedListNode (line 30) | SinglyLinkedListNode(int value, SinglyLinkedListNode next) {

FILE: src/main/java/com/thealgorithms/datastructures/lists/SkipList.java
  class SkipList (line 32) | @SuppressWarnings({"rawtypes", "unchecked"})
    method SkipList (line 59) | public SkipList() {
    method SkipList (line 63) | public SkipList(int expectedCapacity, HeightStrategy heightStrategy) {
    method add (line 70) | public void add(E e) {
    method get (line 99) | public E get(int index) {
    method remove (line 109) | public void remove(E e) {
    method contains (line 145) | public boolean contains(E e) {
    method size (line 163) | public int size() {
    method toString (line 179) | @Override
    class Node (line 223) | private static class Node<E> {
      method Node (line 230) | @SuppressWarnings("unchecked")
      method next (line 240) | public Node<E> next(int layer) {
      method setNext (line 245) | public void setNext(int layer, Node<E> node) {
      method setPrevious (line 249) | public void setPrevious(int layer, Node<E> node) {
      method previous (line 253) | public Node<E> previous(int layer) {
      method getValue (line 258) | public E getValue() {
      method checkLayer (line 262) | private void checkLayer(int layer) {
    type HeightStrategy (line 274) | public interface HeightStrategy {
      method height (line 275) | int height(int expectedSize);
      method nodeHeight (line 276) | int nodeHeight(int heightCap);
    class BernoulliHeightStrategy (line 290) | public static class BernoulliHeightStrategy implements HeightStrategy {
      method BernoulliHeightStrategy (line 297) | public BernoulliHeightStrategy() {
      method BernoulliHeightStrategy (line 301) | public BernoulliHeightStrategy(double probability) {
      method height (line 308) | @Override
      method nodeHeight (line 317) | @Override

FILE: src/main/java/com/thealgorithms/datastructures/lists/SortedLinkedList.java
  class SortedLinkedList (line 27) | public class SortedLinkedList {
    method SortedLinkedList (line 34) | public SortedLinkedList() {
    method insert (line 44) | public void insert(int value) {
    method delete (line 74) | public boolean delete(int value) {
    method search (line 107) | public boolean search(int value) {
    method isEmpty (line 123) | public boolean isEmpty() {
    method toString (line 132) | @Override
    class Node (line 150) | public final class Node {
      method Node (line 154) | public Node(int value) {

FILE: src/main/java/com/thealgorithms/datastructures/lists/TortoiseHareAlgo.java
  class TortoiseHareAlgo (line 3) | public class TortoiseHareAlgo<E> {
    class Node (line 4) | static final class Node<E> {
      method Node (line 8) | private Node(E value, Node<E> next) {
    method TortoiseHareAlgo (line 16) | public TortoiseHareAlgo() {
    method append (line 20) | public void append(E value) {
    method getMiddle (line 33) | public E getMiddle() {
    method toString (line 49) | @Override

FILE: src/main/java/com/thealgorithms/datastructures/queues/CircularQueue.java
  class CircularQueue (line 25) | public class CircularQueue<T> {
    method CircularQueue (line 38) | @SuppressWarnings("unchecked")
    method isEmpty (line 55) | public boolean isEmpty() {
    method isFull (line 64) | public boolean isFull() {
    method enQueue (line 74) | public void enQueue(T value) {
    method deQueue (line 92) | public T deQueue() {
    method peek (line 113) | public T peek() {
    method deleteQueue (line 123) | public void deleteQueue() {
    method size (line 135) | public int size() {

FILE: src/main/java/com/thealgorithms/datastructures/queues/Deque.java
  class Deque (line 14) | public class Deque<T> {
    class DequeNode (line 19) | private static class DequeNode<S> {
      method DequeNode (line 24) | DequeNode(S val) {
    method addFirst (line 38) | public void addFirst(T val) {
    method addLast (line 58) | public void addLast(T val) {
    method pollFirst (line 77) | public T pollFirst() {
    method pollLast (line 100) | public T pollLast() {
    method peekFirst (line 122) | public T peekFirst() {
    method peekLast (line 131) | public T peekLast() {
    method size (line 140) | public int size() {
    method isEmpty (line 149) | public boolean isEmpty() {
    method toString (line 161) | @Override
    method main (line 176) | public static void main(String[] args) {

FILE: src/main/java/com/thealgorithms/datastructures/queues/GenericArrayListQueue.java
  class GenericArrayListQueue (line 17) | public class GenericArrayListQueue<T> {
    method isEmpty (line 29) | public boolean isEmpty() {
    method peek (line 38) | public T peek() {
    method add (line 48) | public boolean add(T element) {
    method poll (line 57) | public T poll() {

FILE: src/main/java/com/thealgorithms/datastructures/queues/LinkedQueue.java
  class LinkedQueue (line 6) | public class LinkedQueue<T> implements Iterable<T> {
    class Node (line 11) | private static class Node<T> {
      method Node (line 15) | Node(T data) {
    method LinkedQueue (line 28) | public LinkedQueue() {
    method isEmpty (line 39) | public boolean isEmpty() {
    method enqueue (line 49) | public void enqueue(T data) {
    method dequeue (line 71) | public T dequeue() {
    method peekFront (line 93) | public T peekFront() {
    method peekRear (line 106) | public T peekRear() {
    method peek (line 120) | public T peek(int pos) {
    method iterator (line 137) | @Override
    method size (line 165) | public int size() {
    method clear (line 172) | public void clear() {
    method toString (line 183) | @Override

FILE: src/main/java/com/thealgorithms/datastructures/queues/PriorityQueues.java
  class PriorityQueue (line 14) | class PriorityQueue {
    method PriorityQueue (line 33) | PriorityQueue() {
    method PriorityQueue (line 53) | PriorityQueue(int size) {
    method swim (line 66) | private void swim(int pos) {
    method sink (line 85) | private void sink(int pos) {
    method insert (line 111) | public void insert(int value) {
    method remove (line 126) | public int remove() {
    method peek (line 149) | public int peek() {
    method isEmpty (line 158) | public boolean isEmpty() {
    method isFull (line 167) | public boolean isFull() {
    method getSize (line 176) | public int getSize() {

FILE: src/main/java/com/thealgorithms/datastructures/queues/Queue.java
  class Queue (line 10) | public final class Queue<T> {
    method Queue (line 23) | public Queue() {
    method Queue (line 33) | public Queue(int capacity) {
    method insert (line 50) | public boolean insert(T element) {
    method remove (line 66) | @SuppressWarnings("unchecked")
    method peekFront (line 84) | @SuppressWarnings("unchecked")
    method peekRear (line 98) | @SuppressWarnings("unchecked")
    method isEmpty (line 111) | public boolean isEmpty() {
    method isFull (line 120) | public boolean isFull() {
    method getSize (line 129) | public int getSize() {
    method toString (line 138) | @Override

FILE: src/main/java/com/thealgorithms/datastructures/queues/QueueByTwoStacks.java
  class QueueByTwoStacks (line 14) | @SuppressWarnings("unchecked")
    method QueueByTwoStacks (line 25) | public QueueByTwoStacks() {
    method put (line 36) | public void put(T item) {
    method get (line 49) | public T get() {
    method size (line 67) | public int size() {
    method toString (line 80) | @Override

FILE: src/main/java/com/thealgorithms/datastructures/queues/ReverseQueueRecursion.java
  class ReverseQueueRecursion (line 8) | public final class ReverseQueueRecursion {
    method ReverseQueueRecursion (line 9) | private ReverseQueueRecursion() {
    method reverseQueue (line 19) | public static <T> void reverseQueue(final Queue<T> queue) {

FILE: src/main/java/com/thealgorithms/datastructures/queues/SlidingWindowMaximum.java
  class SlidingWindowMaximum (line 16) | public final class SlidingWindowMaximum {
    method SlidingWindowMaximum (line 17) | private SlidingWindowMaximum() {
    method maxSlidingWindow (line 33) | public static int[] maxSlidingWindow(int[] nums, int k) {

FILE: src/main/java/com/thealgorithms/datastructures/queues/TokenBucket.java
  class TokenBucket (line 15) | public final class TokenBucket {
    method TokenBucket (line 27) | public TokenBucket(int maxTokens, int refillRate) {
    method allowRequest (line 41) | public synchronized boolean allowRequest() {
    method refillTokens (line 55) | private void refillTokens() {

FILE: src/main/java/com/thealgorithms/datastructures/stacks/NodeStack.java
  class NodeStack (line 14) | public class NodeStack<Item> {
    class Node (line 19) | private class Node {
      method Node (line 23) | Node(Item data) {
    method NodeStack (line 35) | public NodeStack() {
    method push (line 45) | public void push(Item item) {
    method pop (line 58) | public Item pop() {
    method peek (line 74) | public Item peek() {
    method isEmpty (line 86) | public boolean isEmpty() {
    method size (line 95) | public int size() {

FILE: src/main/java/com/thealgorithms/datastructures/stacks/ReverseStack.java
  class ReverseStack (line 26) | public final class ReverseStack {
    method ReverseStack (line 27) | private ReverseStack() {
    method reverseStack (line 40) | public static void reverseStack(Stack<Integer> stack) {
    method insertAtBottom (line 67) | private static void insertAtBottom(Stack<Integer> stack, int element) {

FILE: src/main/java/com/thealgorithms/datastructures/stacks/Stack.java
  type Stack (line 8) | public interface Stack<T> {
    method push (line 15) | void push(T value);
    method pop (line 23) | T pop();
    method peek (line 31) | T peek();
    method isEmpty (line 38) | boolean isEmpty();
    method size (line 45) | int size();
    method makeEmpty (line 50) | void makeEmpty();

FILE: src/main/java/com/thealgorithms/datastructures/stacks/StackArray.java
  class StackArray (line 14) | public class StackArray<T> implements Stack<T> {
    method StackArray (line 25) | @SuppressWarnings("unchecked")
    method StackArray (line 36) | @SuppressWarnings("unchecked")
    method push (line 51) | @Override
    method pop (line 66) | @Override
    method peek (line 84) | @Override
    method resize (line 97) | private void resize(int newSize) {
    method isFull (line 109) | public boolean isFull() {
    method isEmpty (line 118) | @Override
    method makeEmpty (line 127) | @Override
    method size (line 137) | @Override
    method toString (line 147) | @Override

FILE: src/main/java/com/thealgorithms/datastructures/stacks/StackArrayList.java
  class StackArrayList (line 15) | public class StackArrayList<T> implements Stack<T> {
    method StackArrayList (line 22) | public StackArrayList() {
    method push (line 31) | @Override
    method pop (line 42) | @Override
    method peek (line 56) | @Override
    method isEmpty (line 69) | @Override
    method makeEmpty (line 77) | @Override
    method size (line 87) | @Override

FILE: src/main/java/com/thealgorithms/datastructures/stacks/StackOfLinkedList.java
  class StackOfLinkedList (line 13) | final class StackOfLinkedList {
    method StackOfLinkedList (line 14) | private StackOfLinkedList() {
  class Node (line 19) | class Node {
    method Node (line 23) | Node(int data) {
  class LinkedListStack (line 41) | class LinkedListStack {
    method LinkedListStack (line 49) | LinkedListStack() {
    method push (line 60) | public boolean push(int x) {
    method pop (line 74) | public int pop() {
    method peek (line 92) | public int peek() {
    method toString (line 99) | @Override
    method isEmpty (line 115) | public boolean isEmpty() {
    method getSize (line 124) | public int getSize() {
    method makeEmpty (line 131) | public void makeEmpty() {

FILE: src/main/java/com/thealgorithms/datastructures/trees/AVLSimple.java
  class AVLSimple (line 29) | public class AVLSimple {
    class Node (line 31) | private class Node {
      method Node (line 38) | Node(int data) {
    method insert (line 46) | public void insert(int data) {
    method insert (line 50) | private Node insert(Node node, int item) {
    method display (line 84) | public void display() {
    method display (line 89) | private void display(Node node) {
    method height (line 111) | private int height(Node node) {
    method bf (line 118) | private int bf(Node node) {
    method rightRotate (line 125) | private Node rightRotate(Node c) {
    method leftRotate (line 136) | private Node leftRotate(Node c) {

FILE: src/main/java/com/thealgorithms/datastructures/trees/AVLTree.java
  class AVLTree (line 12) | public class AVLTree {
    class Node (line 16) | private static class Node {
      method Node (line 24) | Node(int k, Node p) {
      method getBalance (line 29) | public Integer getBalance() {
    method insert (line 40) | public boolean insert(int key) {
    method delete (line 74) | public void delete(int delKey) {
    method delete (line 92) | private void delete(Node node) {
    method returnBalance (line 131) | public List<Integer> returnBalance() {
    method returnBalance (line 137) | private void returnBalance(Node n, List<Integer> balances) {
    method search (line 151) | public boolean search(int key) {
    method searchHelper (line 156) | private Node searchHelper(Node root, int key) {
    method rebalance (line 167) | private void rebalance(Node n) {
    method rotateLeft (line 190) | private Node rotateLeft(Node a) {
    method rotateRight (line 215) | private Node rotateRight(Node a) {
    method rotateLeftThenRight (line 240) | private Node rotateLeftThenRight(Node n) {
    method rotateRightThenLeft (line 245) | private Node rotateRightThenLeft(Node n) {
    method height (line 250) | private int height(Node n) {
    method setBalance (line 257) | private void setBalance(Node... nodes) {
    method reheight (line 264) | private void reheight(Node node) {

FILE: src/main/java/com/thealgorithms/datastructures/trees/BSTFromSortedArray.java
  class BSTFromSortedArray (line 12) | public final class BSTFromSortedArray {
    method BSTFromSortedArray (line 13) | private BSTFromSortedArray() {
    method createBST (line 15) | public static Node createBST(int[] array) {
    method createBST (line 22) | private static Node createBST(int[] array, int startIdx, int endIdx) {

FILE: src/main/java/com/thealgorithms/datastructures/trees/BSTIterative.java
  class BSTIterative (line 19) | public class BSTIterative {
    method BSTIterative (line 29) | BSTIterative() {
    method getRoot (line 33) | public Node getRoot() {
    method add (line 43) | public void add(int data) {
    method remove (line 91) | public void remove(int data) {
    method find (line 172) | public boolean find(int data) {

FILE: src/main/java/com/thealgorithms/datastructures/trees/BSTRecursive.java
  class BSTRecursive (line 22) | public class BSTRecursive {
    method BSTRecursive (line 32) | BSTRecursive() {
    method getRoot (line 36) | public Node getRoot() {
    method delete (line 47) | private Node delete(Node node, int data) {
    method insert (line 86) | private Node insert(Node node, int data) {
    method search (line 104) | private boolean search(Node node, int data) {
    method add (line 122) | public void add(int data) {
    method remove (line 131) | public void remove(int data) {
    method find (line 140) | public boolean find(int data) {

FILE: src/main/java/com/thealgorithms/datastructures/trees/BSTRecursiveGeneric.java
  class BSTRecursiveGeneric (line 18) | public class BSTRecursiveGeneric<T extends Comparable<T>> {
    method BSTRecursiveGeneric (line 28) | public BSTRecursiveGeneric() {
    method prettyDisplay (line 35) | public void prettyDisplay() {
    method prettyDisplay (line 39) | private void prettyDisplay(Node<T> node, int level) {
    method main (line 58) | public static void main(String[] args) {
    method delete (line 135) | private Node<T> delete(Node<T> node, T data) {
    method insert (line 174) | private Node<T> insert(Node<T> node, T data) {
    method preOrder (line 190) | private void preOrder(Node<T> node) {
    method postOrder (line 208) | private void postOrder(Node<T> node) {
    method inOrder (line 226) | private void inOrder(Node<T> node) {
    method inOrderSort (line 246) | private void inOrderSort(Node<T> node, List<T> sortedList) {
    method search (line 266) | private boolean search(Node<T> node, T data) {
    method add (line 284) | public void add(T data) {
    method remove (line 293) | public void remove(T data) {
    method inorder (line 300) | public void inorder() {
    method inorderSort (line 310) | public List<T> inorderSort() {
    method postorder (line 319) | public void postorder() {
    method preorder (line 328) | public void preorder() {
    method find (line 339) | public boolean find(T data) {
    class Node (line 351) | private static class Node<T> {
      method Node (line 360) | Node(T d) {

FILE: src/main/java/com/thealgorithms/datastructures/trees/BTree.java
  class BTree (line 15) | public class BTree {
    class BTreeNode (line 16) | static class BTreeNode {
      method BTreeNode (line 23) | BTreeNode(int t, boolean leaf) {
      method traverse (line 31) | void traverse(ArrayList<Integer> result) {
      method search (line 43) | BTreeNode search(int key) {
      method insertNonFull (line 57) | void insertNonFull(int key) {
      method splitChild (line 80) | void splitChild(int i, BTreeNode y) {
      method remove (line 102) | void remove(int key) {
      method findKey (line 129) | private int findKey(int key) {
      method removeFromLeaf (line 137) | private void removeFromLeaf(int idx) {
      method removeFromNonLeaf (line 144) | private void removeFromNonLeaf(int idx) {
      method getPredecessor (line 160) | private int getPredecessor(int idx) {
      method getSuccessor (line 168) | private int getSuccessor(int idx) {
      method fill (line 176) | private void fill(int idx) {
      method borrowFromPrev (line 190) | private void borrowFromPrev(int idx) {
      method borrowFromNext (line 216) | private void borrowFromNext(int idx) {
      method merge (line 242) | private void merge(int idx) {
    method BTree (line 274) | public BTree(int t) {
    method traverse (line 279) | public void traverse(ArrayList<Integer> result) {
    method search (line 285) | public boolean search(int key) {
    method insert (line 289) | public void insert(int key) {
    method delete (line 314) | public void delete(int key) {

FILE: src/main/java/com/thealgorithms/datastructures/trees/BinaryTree.java
  class BinaryTree (line 17) | public class BinaryTree {
    class Node (line 26) | static class Node {
      method Node (line 50) | Node(int value) {
    method BinaryTree (line 66) | public BinaryTree() {
    method BinaryTree (line 73) | public BinaryTree(Node root) {
    method find (line 83) | public Node find(int key) {
    method put (line 108) | public void put(int value) {
    method remove (line 133) | public boolean remove(int value) {
    method findSuccessor (line 234) | public Node findSuccessor(Node n) {
    method getRoot (line 252) | public Node getRoot() {
    method inOrder (line 262) | public void inOrder(Node localRoot) {
    method preOrder (line 275) | public void preOrder(Node localRoot) {
    method postOrder (line 288) | public void postOrder(Node localRoot) {
    method bfs (line 303) | public void bfs(Node localRoot) {

FILE: src/main/java/com/thealgorithms/datastructures/trees/BinaryTreeToString.java
  class BinaryTreeToString (line 47) | public class BinaryTreeToString {
    method tree2str (line 59) | public String tree2str(BinaryTree.Node root) {
    method dfs (line 78) | private void dfs(BinaryTree.Node node) {

FILE: src/main/java/com/thealgorithms/datastructures/trees/BoundaryTraversal.java
  class BoundaryTraversal (line 25) | public final class BoundaryTraversal {
    method BoundaryTraversal (line 26) | private BoundaryTraversal() {
    method boundaryTraversal (line 30) | public static List<Integer> boundaryTraversal(BinaryTree.Node root) {
    method addLeftBoundary (line 54) | private static void addLeftBoundary(BinaryTree.Node node, List<Integer...
    method addLeaves (line 77) | private static void addLeaves(BinaryTree.Node node, List<Integer> resu...
    method addRightBoundary (line 90) | private static void addRightBoundary(BinaryTree.Node node, List<Intege...
    method isLeaf (line 118) | private static boolean isLeaf(BinaryTree.Node node) {
    method iterativeBoundaryTraversal (line 123) | public static List<Integer> iterativeBoundaryTraversal(BinaryTree.Node...

FILE: src/main/java/com/thealgorithms/datastructures/trees/CeilInBinarySearchTree.java
  class CeilInBinarySearchTree (line 43) | public final class CeilInBinarySearchTree {
    method CeilInBinarySearchTree (line 44) | private CeilInBinarySearchTree() {
    method getCeil (line 47) | public static Node getCeil(Node root, int key) {

FILE: src/main/java/com/thealgorithms/datastructures/trees/CentroidDecomposition.java
  class CentroidDecomposition (line 26) | public final class CentroidDecomposition {
    method CentroidDecomposition (line 28) | private CentroidDecomposition() {
    class CentroidTree (line 34) | public static final class CentroidTree {
      method CentroidTree (line 48) | public CentroidTree(List<List<Integer>> adj) {
      method decompose (line 71) | private int decompose(int u, int p) {
      method getSubtreeSize (line 95) | private int getSubtreeSize(int u, int p) {
      method findCentroid (line 114) | private int findCentroid(int u, int p, int totalSize) {
      method getParent (line 129) | public int getParent(int node) {
      method getRoot (line 141) | public int getRoot() {
      method size (line 150) | public int size() {
      method toString (line 160) | @Override
    method buildFromEdges (line 184) | public static CentroidTree buildFromEdges(int n, int[][] edges) {

FILE: src/main/java/com/thealgorithms/datastructures/trees/CheckBinaryTreeIsValidBST.java
  class CheckBinaryTreeIsValidBST (line 11) | public final class CheckBinaryTreeIsValidBST {
    method CheckBinaryTreeIsValidBST (line 12) | private CheckBinaryTreeIsValidBST() {
    method isBST (line 14) | public static boolean isBST(BinaryTree.Node root) {
    method isBSTUtil (line 18) | private static boolean isBSTUtil(BinaryTree.Node node, int min, int ma...

FILE: src/main/java/com/thealgorithms/datastructures/trees/CheckIfBinaryTreeBalanced.java
  class CheckIfBinaryTreeBalanced (line 17) | public final class CheckIfBinaryTreeBalanced {
    method CheckIfBinaryTreeBalanced (line 18) | private CheckIfBinaryTreeBalanced() {
    method isBalancedRecursive (line 25) | public static boolean isBalancedRecursive(BinaryTree.Node root) {
    method isBalancedRecursive (line 48) | private static int isBalancedRecursive(BinaryTree.Node node, int depth...
    method isBalancedIterative (line 74) | public static boolean isBalancedIterative(BinaryTree.Node root) {

FILE: src/main/java/com/thealgorithms/datastructures/trees/CheckTreeIsSymmetric.java
  class CheckTreeIsSymmetric (line 33) | public final class CheckTreeIsSymmetric {
    method CheckTreeIsSymmetric (line 34) | private CheckTreeIsSymmetric() {
    method isSymmetric (line 37) | public static boolean isSymmetric(Node root) {
    method isSymmetric (line 44) | private static boolean isSymmetric(Node leftSubtreeRoot, Node rightSub...
    method isInvalidSubtree (line 56) | private static boolean isInvalidSubtree(Node leftSubtreeRoot, Node rig...

FILE: src/main/java/com/thealgorithms/datastructures/trees/CreateBinaryTreeFromInorderPreorder.java
  class CreateBinaryTreeFromInorderPreorder (line 20) | public final class CreateBinaryTreeFromInorderPreorder {
    method CreateBinaryTreeFromInorderPreorder (line 21) | private CreateBinaryTreeFromInorderPreorder() {
    method createTree (line 23) | public static Node createTree(final Integer[] preorder, final Integer[...
    method createTreeOptimized (line 30) | public static Node createTreeOptimized(final Integer[] preorder, final...
    method createTree (line 41) | private static Node createTree(final Integer[] preorder, final Integer...
    method createTreeOptimized (line 58) | private static Node createTreeOptimized(final Integer[] preorder, fina...

FILE: src/main/java/com/thealgorithms/datastructures/trees/FenwickTree.java
  class FenwickTree (line 3) | public class FenwickTree {
    method FenwickTree (line 9) | public FenwickTree(int n) {
    method update (line 15) | public void update(int i, int val) {
    method query (line 25) | public int query(int i) {

FILE: src/main/java/com/thealgorithms/datastructures/trees/GenericTree.java
  class GenericTree (line 17) | public class GenericTree {
    class Node (line 19) | private static final class Node {
    method GenericTree (line 27) | public GenericTree() { // Constructor
    method createTreeG (line 32) | private Node createTreeG(Node node, int childIndex, Scanner scanner) {
    method display (line 54) | public void display() { // Helper function
    method display1 (line 58) | private void display1(Node parent) {
    method size2call (line 75) | public int size2call() {
    method size2 (line 79) | public int size2(Node roott) {
    method maxcall (line 92) | public int maxcall() {
    method max (line 97) | private int max(Node roott, int maxi) {
    method heightcall (line 113) | public int heightcall() {
    method height (line 117) | private int height(Node node) {
    method findcall (line 134) | public boolean findcall(int info) {
    method find (line 138) | private boolean find(Node node, int info) {
    method depthcaller (line 155) | public void depthcaller(int dep) {
    method depth (line 159) | public void depth(Node node, int dep) {
    method preordercall (line 172) | public void preordercall() {
    method preorder (line 177) | private void preorder(Node node) {
    method postordercall (line 187) | public void postordercall() {
    method postorder (line 192) | private void postorder(Node node) {
    method levelorder (line 202) | public void levelorder() {
    method removeleavescall (line 220) | public void removeleavescall() {
    method removeleaves (line 224) | private void removeleaves(Node node) {

FILE: src/main/java/com/thealgorithms/datastructures/trees/InorderTraversal.java
  class InorderTraversal (line 28) | public final class InorderTraversal {
    method InorderTraversal (line 29) | private InorderTraversal() {
    method recursiveInorder (line 31) | public static List<Integer> recursiveInorder(BinaryTree.Node root) {
    method iterativeInorder (line 37) | public static List<Integer> iterativeInorder(BinaryTree.Node root) {
    method recursiveInorder (line 56) | private static void recursiveInorder(BinaryTree.Node root, List<Intege...

FILE: src/main/java/com/thealgorithms/datastructures/trees/KDTree.java
  class KDTree (line 16) | public class KDTree {
    method KDTree (line 27) | KDTree(int k) {
    method KDTree (line 36) | KDTree(Point[] points) {
    method KDTree (line 55) | KDTree(int[][] pointsCoordinates) {
    class Point (line 69) | static class Point {
      method getCoordinate (line 73) | public int getCoordinate(int i) {
      method getDimension (line 77) | public int getDimension() {
      method Point (line 81) | Point(int[] coordinates) {
      method equals (line 85) | @Override
      method hashCode (line 93) | @Override
      method toString (line 98) | @Override
      method comparableDistance (line 111) | public static int comparableDistance(Point p1, Point p2) {
      method comparableDistanceExceptAxis (line 129) | public static int comparableDistanceExceptAxis(Point p1, Point p2, i...
    class Node (line 142) | static class Node {
      method Node (line 150) | Node(Point point, int axis) {
      method getPoint (line 155) | public Point getPoint() {
      method getLeft (line 159) | public Node getLeft() {
      method getRight (line 163) | public Node getRight() {
      method getAxis (line 167) | public int getAxis() {
      method getNearChild (line 178) | public Node getNearChild(Point point) {
      method getFarChild (line 193) | public Node getFarChild(Point point) {
      method getAxisCoordinate (line 206) | public int getAxisCoordinate() {
    method getRoot (line 211) | public Node getRoot() {
    method build (line 223) | private Node build(Point[] points, int depth) {
    method insert (line 245) | public void insert(Point point) {
    method insert (line 261) | private Node insert(Node root, Point point, int depth) {
    method search (line 282) | public Optional<Node> search(Point point) {
    method search (line 297) | public Optional<Node> search(Node root, Point point) {
    method findMin (line 314) | public Point findMin(int axis) {
    method findMin (line 326) | public Node findMin(Node root, int axis) {
    method findMax (line 350) | public Point findMax(int axis) {
    method findMax (line 362) | public Node findMax(Node root, int axis) {
    method delete (line 384) | public void delete(Point point) {
    method delete (line 397) | private Node delete(Node root, Node node) {
    method findNearest (line 427) | public Point findNearest(Point point) {
    method findNearest (line 438) | private Node findNearest(Node root, Point point, Node nearest) {

FILE: src/main/java/com/thealgorithms/datastructures/trees/LCA.java
  class LCA (line 6) | public final class LCA {
    method LCA (line 7) | private LCA() {
    method main (line 12) | public static void main(String[] args) {
    method dfs (line 61) | private static void dfs(ArrayList<ArrayList<Integer>> adj, int s, int ...
    method getLCA (line 80) | private static int getLCA(int v1, int v2, int[] depth, int[] parent) {

FILE: src/main/java/com/thealgorithms/datastructures/trees/LazySegmentTree.java
  class LazySegmentTree (line 3) | public class LazySegmentTree {
    class Node (line 11) | static class Node {
      method Node (line 20) | Node(int start, int end, int value) {
      method applyUpdate (line 34) | public void applyUpdate(int diff) {
      method shift (line 42) | public void shift() {
      method merge (line 66) | static Node merge(Node left, Node right) {
      method getValue (line 79) | public int getValue() {
      method getLeft (line 83) | public Node getLeft() {
      method getRight (line 87) | public Node getRight() {
    method LazySegmentTree (line 99) | public LazySegmentTree(int[] array) {
    method buildTree (line 111) | private Node buildTree(int[] array, int start, int end) {
    method updateRange (line 129) | private void updateRange(int left, int right, int diff, Node curr) {
    method getRange (line 151) | private Node getRange(int left, int right, Node curr) {
    method getRange (line 162) | public int getRange(int left, int right) {
    method updateRange (line 167) | public void updateRange(int left, int right, int diff) {
    method getRoot (line 171) | public Node getRoot() {

FILE: src/main/java/com/thealgorithms/datastructures/trees/LevelOrderTraversal.java
  class LevelOrderTraversal (line 8) | public final class LevelOrderTraversal {
    method LevelOrderTraversal (line 9) | private LevelOrderTraversal() {
    method traverse (line 12) | public static List<List<Integer>> traverse(BinaryTree.Node root) {
    method printGivenLevel (line 42) | public static void printGivenLevel(BinaryTree.Node root, int level) {

FILE: src/main/java/com/thealgorithms/datastructures/trees/PostOrderTraversal.java
  class PostOrderTraversal (line 29) | public final class PostOrderTraversal {
    method PostOrderTraversal (line 30) | private PostOrderTraversal() {
    method recursivePostOrder (line 32) | public static List<Integer> recursivePostOrder(BinaryTree.Node root) {
    method iterativePostOrder (line 38) | public static List<Integer> iterativePostOrder(BinaryTree.Node root) {
    method recursivePostOrder (line 60) | private static void recursivePostOrder(BinaryTree.Node root, List<Inte...

FILE: src/main/java/com/thealgorithms/datastructures/trees/PreOrderTraversal.java
  class PreOrderTraversal (line 28) | public final class PreOrderTraversal {
    method PreOrderTraversal (line 29) | private PreOrderTraversal() {
    method recursivePreOrder (line 31) | public static List<Integer> recursivePreOrder(BinaryTree.Node root) {
    method iterativePreOrder (line 37) | public static List<Integer> iterativePreOrder(BinaryTree.Node root) {
    method recursivePreOrder (line 59) | private static void recursivePreOrder(BinaryTree.Node root, List<Integ...

FILE: src/main/java/com/thealgorithms/datastructures/trees/PrintTopViewofTree.java
  class TreeNode (line 8) | class TreeNode {
    method TreeNode (line 17) | TreeNode(int key) {
  class QItem (line 27) | class QItem {
    method QItem (line 32) | QItem(TreeNode n, int h) {
  class Tree (line 39) | class Tree {
    method Tree (line 44) | Tree() {
    method Tree (line 48) | Tree(TreeNode n) {
    method printTopView (line 53) | public void printTopView() {
  class PrintTopViewofTree (line 92) | public final class PrintTopViewofTree {
    method PrintTopViewofTree (line 93) | private PrintTopViewofTree() {
    method main (line 96) | public static void main(String[] args) {

FILE: src/main/java/com/thealgorithms/datastructures/trees/QuadTree.java
  class Point (line 12) | class Point {
    method Point (line 16) | Point(double x, double y) {
  class BoundingBox (line 28) | class BoundingBox {
    method BoundingBox (line 32) | BoundingBox(Point center, double halfWidth) {
    method containsPoint (line 43) | public boolean containsPoint(Point point) {
    method intersectsBoundingBox (line 53) | public boolean intersectsBoundingBox(BoundingBox otherBoundingBox) {
  class QuadTree (line 68) | public class QuadTree {
    method QuadTree (line 79) | public QuadTree(BoundingBox boundary, int capacity) {
    method insert (line 97) | public boolean insert(Point point) {
    method subDivide (line 141) | private void subDivide() {
    method query (line 157) | public List<Point> query(BoundingBox otherBoundingBox) {

FILE: src/main/java/com/thealgorithms/datastructures/trees/RedBlackBST.java
  class RedBlackBST (line 8) | public class RedBlackBST {
    class Node (line 13) | private class Node {
      method Node (line 21) | Node(int key) {
    method printTree (line 29) | public void printTree(Node node) {
    method printTreepre (line 38) | public void printTreepre(Node node) {
    method findNode (line 47) | private Node findNode(Node findNode, Node node) {
    method insert (line 65) | private void insert(Node node) {
    method fixTree (line 96) | private void fixTree(Node node) {
    method rotateLeft (line 137) | void rotateLeft(Node node) {
    method rotateRight (line 162) | void rotateRight(Node node) {
    method transplant (line 188) | void transplant(Node target, Node with) {
    method treeMinimum (line 199) | Node treeMinimum(Node subTreeRoot) {
    method delete (line 206) | boolean delete(Node z) {
    method deleteFixup (line 243) | void deleteFixup(Node x) {
    method insertDemo (line 300) | public void insertDemo() {
    method deleteDemo (line 319) | public void deleteDemo() {

FILE: src/main/java/com/thealgorithms/datastructures/trees/SameTreesCheck.java
  class SameTreesCheck (line 35) | public final class SameTreesCheck {
    method SameTreesCheck (line 36) | private SameTreesCheck() {
    method check (line 38) | public static boolean check(BinaryTree.Node p, BinaryTree.Node q) {
    method equalNodes (line 80) | private static boolean equalNodes(BinaryTree.Node p, BinaryTree.Node q) {

FILE: src/main/java/com/thealgorithms/datastructures/trees/SegmentTree.java
  class SegmentTree (line 3) | public class SegmentTree {
    method SegmentTree (line 10) | public SegmentTree(int n, int[] arr) {
    method constructTree (line 22) | public final int constructTree(int[] arr, int start, int end, int inde...
    method updateTree (line 35) | private void updateTree(int start, int end, int index, int diff, int s...
    method update (line 49) | public void update(int index, int value) {
    method getSumTree (line 61) | private int getSumTree(int start, int end, int qStart, int qEnd, int s...
    method getSum (line 75) | public int getSum(int start, int end) {

FILE: src/main/java/com/thealgorithms/datastructures/trees/SplayTree.java
  class SplayTree (line 27) | public class SplayTree {
    method isEmpty (line 39) | public boolean isEmpty() {
    method insert (line 48) | public void insert(final int key) {
    method search (line 59) | public boolean search(int key) {
    method delete (line 70) | public void delete(final int key) {
    method traverse (line 96) | public List<Integer> traverse(TreeTraversal traversal) {
    method findMax (line 113) | private Node findMax(Node root) {
    method rotateRight (line 134) | private Node rotateRight(Node x) {
    method rotateLeft (line 155) | private Node rotateLeft(Node x) {
    method splay (line 194) | private Node splay(Node root, final int key) {
    method insertRec (line 232) | private Node insertRec(Node root, final int key) {
    class EmptyTreeException (line 248) | public static class EmptyTreeException extends RuntimeException {
      method EmptyTreeException (line 251) | public EmptyTreeException(String message) {
    class DuplicateKeyException (line 256) | public static class DuplicateKeyException extends RuntimeException {
      method DuplicateKeyException (line 259) | public DuplicateKeyException(String message) {
    class Node (line 264) | private static class Node {
      method Node (line 269) | Node(int key) {
    type TreeTraversal (line 276) | public interface TreeTraversal {
      method traverse (line 283) | void traverse(Node root, List<Integer> result);
    class InOrderTraversal (line 286) | private static final class InOrderTraversal implements TreeTraversal {
      method InOrderTraversal (line 287) | private InOrderTraversal() {
      method traverse (line 290) | public void traverse(Node root, List<Integer> result) {
    class PreOrderTraversal (line 299) | private static final class PreOrderTraversal implements TreeTraversal {
      method PreOrderTraversal (line 300) | private PreOrderTraversal() {
      method traverse (line 303) | public void traverse(Node root, List<Integer> result) {
    class PostOrderTraversal (line 312) | private static final class PostOrderTraversal implements TreeTraversal {
      method PostOrderTraversal (line 313) | private PostOrderTraversal() {
      method traverse (line 316) | public void traverse(Node root, List<Integer> result) {

FILE: src/main/java/com/thealgorithms/datastructures/trees/ThreadedBinaryTree.java
  class ThreadedBinaryTree (line 23) | public final class ThreadedBinaryTree {
    class Node (line 27) | private static final class Node {
      method Node (line 34) | Node(int value) {
    method ThreadedBinaryTree (line 43) | public ThreadedBinaryTree() {
    method insert (line 53) | public void insert(int value) {
    method inorderTraversal (line 107) | public List<Integer> inorderTraversal() {
    method isEmpty (line 142) | public boolean isEmpty() {

FILE: src/main/java/com/thealgorithms/datastructures/trees/Treap.java
  class Treap (line 13) | public class Treap {
    class TreapNode (line 15) | public static class TreapNode {
      method TreapNode (line 37) | public TreapNode(int valueParam, int priorityParam) {
      method updateSize (line 48) | private void updateSize() {
    method Treap (line 72) | public Treap() {
    method merge (line 83) | private TreapNode merge(TreapNode left, TreapNode right) {
    method split (line 111) | private TreapNode[] split(TreapNode node, int key) {
    method insert (line 139) | public TreapNode insert(int value) {
    method delete (line 166) | public TreapNode delete(int value) {
    method deleteNode (line 171) | private TreapNode deleteNode(TreapNode root, int value) {
    method inOrder (line 193) | public void inOrder() {
    method printInorder (line 199) | private void printInorder(TreapNode root) {
    method preOrder (line 211) | public void preOrder() {
    method printPreOrder (line 217) | private void printPreOrder(TreapNode root) {
    method postOrder (line 229) | public void postOrder() {
    method printPostOrder (line 235) | private void printPostOrder(TreapNode root) {
    method search (line 251) | public TreapNode search(int value) {
    method searchVal (line 255) | private TreapNode searchVal(TreapNode root, int value) {
    method lowerBound (line 275) | public TreapNode lowerBound(int value) {
    method upperBound (line 297) | public TreapNode upperBound(int value) {
    method size (line 316) | public int size() {
    method isEmpty (line 326) | public boolean isEmpty() {
    method getRoot (line 333) | public TreapNode getRoot() {
    method getLeft (line 340) | public TreapNode getLeft(TreapNode node) {
    method getRight (line 347) | public TreapNode getRight(TreapNode node) {
    method toString (line 354) | public String toString(TreapNode node) {

FILE: src/main/java/com/thealgorithms/datastructures/trees/TreeRandomNode.java
  class TreeRandomNode (line 27) | public class TreeRandomNode {
    class Node (line 29) | private final class Node {
    method TreeRandomNode (line 41) | TreeRandomNode() {
    method inOrder (line 46) | static void inOrder(Node node) {
    method getRandom (line 59) | public void getRandom(Node val) {

FILE: src/main/java/com/thealgorithms/datastructures/trees/Trie.java
  class TrieNode (line 10) | class TrieNode {
    method TrieNode (line 19) | TrieNode(char value) {
  class Trie (line 43) | public class Trie {
    method Trie (line 52) | public Trie() {
    method insert (line 64) | public void insert(String word) {
    method search (line 89) | public boolean search(String word) {
    method delete (line 114) | public boolean delete(String word) {
    method countWords (line 140) | public int countWords() {
    method countWords (line 144) | private int countWords(TrieNode node) {
    method startsWithPrefix (line 167) | public boolean startsWithPrefix(String prefix) {
    method countWordsWithPrefix (line 188) | public int countWordsWithPrefix(String prefix) {

FILE: src/main/java/com/thealgorithms/datastructures/trees/VerticalOrderTraversal.java
  class VerticalOrderTraversal (line 23) | public final class VerticalOrderTraversal {
    method VerticalOrderTraversal (line 24) | private VerticalOrderTraversal() {
    method verticalTraversal (line 29) | public static ArrayList<Integer> verticalTraversal(BinaryTree.Node roo...

FILE: src/main/java/com/thealgorithms/datastructures/trees/ZigzagTraversal.java
  class ZigzagTraversal (line 37) | public final class ZigzagTraversal {
    method ZigzagTraversal (line 38) | private ZigzagTraversal() {
    method traverse (line 40) | public static List<List<Integer>> traverse(BinaryTree.Node root) {

FILE: src/main/java/com/thealgorithms/datastructures/trees/nearestRightKey.java
  class NearestRightKey (line 6) | final class NearestRightKey {
    method NearestRightKey (line 7) | private NearestRightKey() {
    method main (line 10) | public static void main(String[] args) {
    method buildTree (line 20) | public static NRKTree buildTree() {
    method nearestRightKey (line 32) | public static int nearestRightKey(NRKTree root, int x0) {
  class NRKTree (line 52) | class NRKTree {
    method NRKTree (line 58) | NRKTree(int x) {
    method NRKTree (line 64) | NRKTree(NRKTree right, NRKTree left, int x) {
    method insertKey (line 70) | public NRKTree insertKey(NRKTree current, int value) {

FILE: src/main/java/com/thealgorithms/devutils/entities/ProcessDetails.java
  class ProcessDetails (line 3) | public class ProcessDetails {
    method ProcessDetails (line 11) | public ProcessDetails(final String processId, final int arrivalTime, f...
    method ProcessDetails (line 18) | public ProcessDetails(final String processId, final int arrivalTime, f...
    method getProcessId (line 24) | public String getProcessId() {
    method getArrivalTime (line 28) | public int getArrivalTime() {
    method getBurstTime (line 32) | public int getBurstTime() {
    method getWaitingTime (line 36) | public int getWaitingTime() {
    method getTurnAroundTimeTime (line 40) | public int getTurnAroundTimeTime() {
    method getPriority (line 44) | public int getPriority() {
    method setProcessId (line 48) | public void setProcessId(final String processId) {
    method setArrivalTime (line 52) | public void setArrivalTime(final int arrivalTime) {
    method setBurstTime (line 56) | public void setBurstTime(final int burstTime) {
    method setWaitingTime (line 60) | public void setWaitingTime(final int waitingTime) {
    method setTurnAroundTimeTime (line 64) | public void setTurnAroundTimeTime(final int turnAroundTime) {

FILE: src/main/java/com/thealgorithms/devutils/nodes/LargeTreeNode.java
  class LargeTreeNode (line 13) | public class LargeTreeNode<E> extends TreeNode<E> {
    method LargeTreeNode (line 23) | public LargeTreeNode() {
    method LargeTreeNode (line 33) | public LargeTreeNode(E data) {
    method LargeTreeNode (line 44) | public LargeTreeNode(E data, LargeTreeNode<E> parentNode) {
    method LargeTreeNode (line 56) | public LargeTreeNode(E data, LargeTreeNode<E> parentNode, Collection<L...
    method isLeafNode (line 65) | @Override
    method getChildNodes (line 70) | public Collection<LargeTreeNode<E>> getChildNodes() {
    method setChildNodes (line 74) | public void setChildNodes(Collection<LargeTreeNode<E>> childNodes) {

FILE: src/main/java/com/thealgorithms/devutils/nodes/Node.java
  class Node (line 13) | public abstract class Node<E> {
    method Node (line 23) | public Node() {
    method Node (line 31) | public Node(E data) {
    method getData (line 35) | public E getData() {
    method setData (line 39) | public void setData(E data) {

FILE: src/main/java/com/thealgorithms/devutils/nodes/SimpleNode.java
  class SimpleNode (line 10) | public class SimpleNode<E> extends Node<E> {
    method SimpleNode (line 20) | public SimpleNode() {
    method SimpleNode (line 30) | public SimpleNode(E data) {
    method SimpleNode (line 40) | public SimpleNode(E data, SimpleNode<E> nextNode) {
    method hasNext (line 48) | public boolean hasNext() {
    method getNextNode (line 52) | public SimpleNode<E> getNextNode() {
    method setNextNode (line 56) | public void setNextNode(SimpleNode<E> nextNode) {

FILE: src/main/java/com/thealgorithms/devutils/nodes/SimpleTreeNode.java
  class SimpleTreeNode (line 11) | public class SimpleTreeNode<E> extends TreeNode<E> {
    method SimpleTreeNode (line 25) | public SimpleTreeNode() {
    method SimpleTreeNode (line 35) | public SimpleTreeNode(E data) {
    method SimpleTreeNode (line 46) | public SimpleTreeNode(E data, SimpleTreeNode<E> parentNode) {
    method SimpleTreeNode (line 60) | public SimpleTreeNode(E data, SimpleTreeNode<E> parentNode, SimpleTree...
    method isLeafNode (line 70) | @Override
    method getLeftNode (line 75) | public SimpleTreeNode<E> getLeftNode() {
    method setLeftNode (line 79) | public void setLeftNode(SimpleTreeNode<E> leftNode) {
    method getRightNode (line 83) | public SimpleTreeNode<E> getRightNode() {
    method setRightNode (line 87) | public void setRightNode(SimpleTreeNode<E> rightNode) {

FILE: src/main/java/com/thealgorithms/devutils/nodes/TreeNode.java
  class TreeNode (line 12) | public abstract class TreeNode<E> extends Node<E> {
    method TreeNode (line 26) | public TreeNode() {
    method TreeNode (line 37) | public TreeNode(E data) {
    method TreeNode (line 48) | public TreeNode(E data, TreeNode<E> parentNode) {
    method isLeafNode (line 57) | public abstract boolean isLeafNode();
    method isRootNode (line 62) | public boolean isRootNode() {
    method getParent (line 66) | public TreeNode<E> getParent() {
    method setParent (line 70) | public void setParent(TreeNode<E> parentNode) {
    method getDepth (line 75) | public int getDepth() {

FILE: src/main/java/com/thealgorithms/devutils/searches/MatrixSearchAlgorithm.java
  type MatrixSearchAlgorithm (line 8) | public interface MatrixSearchAlgorithm {
    method find (line 15) | <T extends Comparable<T>> int[] find(T[][] matrix, T key);

FILE: src/main/java/com/thealgorithms/devutils/searches/SearchAlgorithm.java
  type SearchAlgorithm (line 8) | public interface SearchAlgorithm {
    method find (line 15) | <T extends Comparable<T>> int find(T[] array, T key);

FILE: src/main/java/com/thealgorithms/divideandconquer/BinaryExponentiation.java
  class BinaryExponentiation (line 15) | public class BinaryExponentiation {
    method calculatePower (line 18) | public static long calculatePower(long x, long y) {
    method power (line 30) | long power(long n, long m) {

FILE: src/main/java/com/thealgorithms/divideandconquer/ClosestPair.java
  class ClosestPair (line 7) | public final class ClosestPair {
    method setMinNum (line 30) | public static void setMinNum(double minNum) {
    method setSecondCount (line 34) | public static void setSecondCount(int secondCount) {
    method ClosestPair (line 46) | ClosestPair(int points) {
    class Location (line 54) | public static class Location {
      method Location (line 63) | Location(final double xpar, final double ypar) { // Save x, y coordi...
    method buildLocation (line 69) | public Location buildLocation(double x, double y) {
    method xPartition (line 81) | public int xPartition(final Location[] a, final int first, final int l...
    method yPartition (line 108) | public int yPartition(final Location[] a, final int first, final int l...
    method xQuickSort (line 134) | public void xQuickSort(final Location[] a, final int first, final int ...
    method yQuickSort (line 149) | public void yQuickSort(final Location[] a, final int first, final int ...
    method closestPair (line 164) | public double closestPair(final Location[] a, final int indexNum) {
    method bruteForce (line 250) | public double bruteForce(final Location[] arrayParam) {
    method main (line 304) | public static void main(final String[] args) {

FILE: src/main/java/com/thealgorithms/divideandconquer/CountingInversions.java
  class CountingInversions (line 23) | public final class CountingInversions {
    method CountingInversions (line 24) | private CountingInversions() {
    method countInversions (line 33) | public static int countInversions(int[] arr) {
    method mergeSortAndCount (line 46) | private static int mergeSortAndCount(int[] arr, int left, int right) {
    method mergeAndCount (line 71) | private static int mergeAndCount(int[] arr, int left, int mid, int rig...

FILE: src/main/java/com/thealgorithms/divideandconquer/MedianOfTwoSortedArrays.java
  class MedianOfTwoSortedArrays (line 3) | public final class MedianOfTwoSortedArrays {
    method MedianOfTwoSortedArrays (line 5) | private MedianOfTwoSortedArrays() {
    method findMedianSortedArrays (line 16) | public static double findMedianSortedArrays(int[] nums1, int[] nums2) {

FILE: src/main/java/com/thealgorithms/divideandconquer/SkylineAlgorithm.java
  class SkylineAlgorithm (line 12) | public class SkylineAlgorithm {
    method SkylineAlgorithm (line 20) | public SkylineAlgorithm() {
    method getPoints (line 27) | public ArrayList<Point> getPoints() {
    method produceSubSkyLines (line 47) | public ArrayList<Point> produceSubSkyLines(ArrayList<Point> list) {
    method produceFinalSkyLine (line 95) | public ArrayList<Point> produceFinalSkyLine(ArrayList<Point> left, Arr...
    class Point (line 128) | public static class Point {
      method Point (line 140) | public Point(int x, int y) {
      method getX (line 148) | public int getX() {
      method getY (line 155) | public int getY() {
      method dominates (line 167) | public boolean dominates(Point p1) {
    class XComparator (line 177) | class XComparator implements Comparator<Point> {
      method compare (line 179) | @Override

FILE: src/main/java/com/thealgorithms/divideandconquer/StrassenMatrixMultiplication.java
  class StrassenMatrixMultiplication (line 18) | public class StrassenMatrixMultiplication {
    method multiply (line 21) | public int[][] multiply(int[][] a, int[][] b) {
    method sub (line 96) | public int[][] sub(int[][] a, int[][] b) {
    method add (line 111) | public int[][] add(int[][] a, int[][] b) {
    method split (line 126) | public void split(int[][] p, int[][] c, int iB, int jB) {
    method join (line 135) | public void join(int[][] c, int[][] p, int iB, int jB) {

FILE: src/main/java/com/thealgorithms/divideandconquer/TilingProblem.java
  class TilingProblem (line 17) | public final class TilingProblem {
    method TilingProblem (line 18) | private TilingProblem() {
    method solveTiling (line 39) | public static int[][] solveTiling(int size, int missingRow, int missin...
    method fillBoard (line 59) | private static void fillBoard(int size, int row, int col, int missingR...

FILE: src/main/java/com/thealgorithms/dynamicprogramming/Abbreviation.java
  class Abbreviation (line 15) | public final class Abbreviation {
    method Abbreviation (line 16) | private Abbreviation() {
    method abbr (line 31) | public static boolean abbr(String a, String b) {

FILE: src/main/java/com/thealgorithms/dynamicprogramming/AllConstruct.java
  class AllConstruct (line 15) | public final class AllConstruct {
    method AllConstruct (line 16) | private AllConstruct() {
    method allConstruct (line 32) | public static List<List<String>> allConstruct(String target, Iterable<...

FILE: src/main/java/com/thealgorithms/dynamicprogramming/AssignmentUsingBitmask.java
  class AssignmentUsingBitmask (line 14) | public final class AssignmentUsingBitmask {
    method AssignmentUsingBitmask (line 27) | public AssignmentUsingBitmask(List<List<Integer>> taskPerformed, int t...
    method countWaysUntil (line 57) | private int countWaysUntil(int mask, int taskNo) {
    method countNoOfWays (line 88) | public int countNoOfWays() {

FILE: src/main/java/com/thealgorithms/dynamicprogramming/BoardPath.java
  class BoardPath (line 3) | public final class BoardPath {
    method BoardPath (line 4) | private BoardPath() {
    method bpR (line 14) | public static int bpR(int start, int end) {
    method bpRS (line 35) | public static int bpRS(int curr, int end, int[] strg) {
    method bpIS (line 60) | public static int bpIS(int curr, int end, int[] strg) {

FILE: src/main/java/com/thealgorithms/dynamicprogramming/BoundaryFill.java
  class BoundaryFill (line 7) | public final class BoundaryFill {
    method BoundaryFill (line 8) | private BoundaryFill() {
    method getPixel (line 18) | public static int getPixel(int[][] image, int xCoordinate, int yCoordi...
    method putPixel (line 29) | public static void putPixel(int[][] image, int xCoordinate, int yCoord...
    method boundaryFill (line 42) | public static void boundaryFill(int[][] image, int xCoordinate, int yC...

FILE: src/main/java/com/thealgorithms/dynamicprogramming/BruteForceKnapsack.java
  class BruteForceKnapsack (line 22) | public final class BruteForceKnapsack {
    method BruteForceKnapsack (line 23) | private BruteForceKnapsack() {
    method knapSack (line 56) | static int knapSack(int w, int[] wt, int[] val, int n) {

FILE: src/main/java/com/thealgorithms/dynamicprogramming/CatalanNumber.java
  class CatalanNumber (line 12) | public final class CatalanNumber {
    method CatalanNumber (line 13) | private CatalanNumber() {
    method findNthCatalan (line 25) | static long findNthCatalan(int n) {
    method main (line 48) | public static void main(String[] args) {

FILE: src/main/java/com/thealgorithms/dynamicprogramming/ClimbingStairs.java
  class ClimbingStairs (line 20) | public final class ClimbingStairs {
    method ClimbingStairs (line 22) | private ClimbingStairs() {
    method numberOfWays (line 34) | public static int numberOfWays(int n) {

FILE: src/main/java/com/thealgorithms/dynamicprogramming/CoinChange.java
  class CoinChange (line 6) | public final class CoinChange {
    method CoinChange (line 7) | private CoinChange() {
    method change (line 18) | public static int change(int[] coins, int amount) {
    method minimumCoins (line 38) | public static int minimumCoins(int[] coins, int amount) {

FILE: src/main/java/com/thealgorithms/dynamicprogramming/CountFriendsPairing.java
  class CountFriendsPairing (line 12) | public final class CountFriendsPairing {
    method CountFriendsPairing (line 13) | private CountFriendsPairing() {
    method countFriendsPairing (line 16) | public static boolean countFriendsPairing(int n, int[] a) {

FILE: src/main/java/com/thealgorithms/dynamicprogramming/DamerauLevenshteinDistance.java
  class DamerauLevenshteinDistance (line 19) | public final class DamerauLevenshteinDistance {
    method DamerauLevenshteinDistance (line 21) | private DamerauLevenshteinDistance() {
    method distance (line 33) | public static int distance(String s1, String s2) {
    method validateInputs (line 54) | private static void validateInputs(String s1, String s2) {
    method buildCharacterMap (line 71) | private static Map<Character, Integer> buildCharacterMap(String s1, St...
    method initializeTable (line 97) | private static int[][] initializeTable(int n, int m) {
    method fillTable (line 132) | private static void fillTable(String s1, String s2, int[][] dp, Map<Ch...
    method computeMinimumCost (line 177) | private static int computeMinimumCost(int[][] dp, int i, int j, int la...

FILE: src/main/java/com/thealgorithms/dynamicprogramming/DiceThrow.java
  class DP (line 17) | final class DP {
    method DP (line 18) | private DP() {
    method findWays (line 23) | public static long findWays(int m, int n, int x) {

FILE: src/main/java/com/thealgorithms/dynamicprogramming/EditDistance.java
  class EditDistance (line 25) | public final class EditDistance {
    method EditDistance (line 26) | private EditDistance() {
    method minDistance (line 29) | public static int minDistance(String word1, String word2) {
    method editDistance (line 71) | public static int editDistance(String s1, String s2) {
    method editDistance (line 76) | public static int editDistance(String s1, String s2, int[][] storage) {

FILE: src/main/java/com/thealgorithms/dynamicprogramming/EggDropping.java
  class EggDropping (line 6) | public final class EggDropping {
    method EggDropping (line 7) | private EggDropping() {
    method minTrials (line 11) | public static int minTrials(int n, int m) {
    method main (line 44) | public static void main(String[] args) {

FILE: src/main/java/com/thealgorithms/dynamicprogramming/Fibonacci.java
  class Fibonacci (line 9) | public final class Fibonacci {
    method Fibonacci (line 10) | private Fibonacci() {
    method fibMemo (line 22) | public static int fibMemo(int n) {
    method fibBotUp (line 48) | public static int fibBotUp(int n) {
    method fibOptimized (line 81) | public static int fibOptimized(int n) {
    method fibBinet (line 111) | public static int fibBinet(int n) {

FILE: src/main/java/com/thealgorithms/dynamicprogramming/KadaneAlgorithm.java
  class KadaneAlgorithm (line 10) | public final class KadaneAlgorithm {
    method KadaneAlgorithm (line 11) | private KadaneAlgorithm() {
    method maxSum (line 38) | public static boolean maxSum(int[] a, int predictedAnswer) {

FILE: src/main/java/com/thealgorithms/dynamicprogramming/Knapsack.java
  class Knapsack (line 24) | public final class Knapsack {
    method Knapsack (line 26) | private Knapsack() {
    method throwIfInvalidInput (line 32) | private static void throwIfInvalidInput(final int weightCapacity, fina...
    method knapSack (line 52) | public static int knapSack(final int weightCapacity, final int[] weigh...

FILE: src/main/java/com/thealgorithms/dynamicprogramming/KnapsackMemoization.java
  class KnapsackMemoization (line 12) | public class KnapsackMemoization {
    method knapSack (line 14) | int knapSack(int capacity, int[] weights, int[] profits, int numOfItem...
    method solveKnapsackRecursive (line 28) | int solveKnapsackRecursive(int capacity, int[] weights, int[] profits,...

FILE: src/main/java/com/thealgorithms/dynamicprogramming/KnapsackZeroOne.java
  class KnapsackZeroOne (line 13) | public final class KnapsackZeroOne {
    method KnapsackZeroOne (line 15) | private KnapsackZeroOne() {
    method compute (line 30) | public static int compute(final int[] values, final int[] weights, fin...

FILE: src/main/java/com/thealgorithms/dynamicprogramming/KnapsackZeroOneTabulation.java
  class KnapsackZeroOneTabulation (line 21) | public final class KnapsackZeroOneTabulation {
    method KnapsackZeroOneTabulation (line 23) | private KnapsackZeroOneTabulation() {
    method compute (line 36) | public static int compute(final int[] values, final int[] weights, fin...

FILE: src/main/java/com/thealgorithms/dynamicprogramming/LevenshteinDistance.java
  class LevenshteinDistance (line 11) | public final class LevenshteinDistance {
    method LevenshteinDistance (line 12) | private LevenshteinDistance() {
    method naiveLevenshteinDistance (line 33) | public static int naiveLevenshteinDistance(final String string1, final...
    method optimizedLevenshteinDistance (line 62) | public static int optimizedLevenshteinDistance(final String string1, f...

FILE: src/main/java/com/thealgorithms/dynamicprogramming/LongestAlternatingSubsequence.java
  class LongestAlternatingSubsequence (line 18) | public final class LongestAlternatingSubsequence {
    method LongestAlternatingSubsequence (line 19) | private LongestAlternatingSubsequence() {
    method alternatingLength (line 42) | static int alternatingLength(int[] arr, int n) {

FILE: src/main/java/com/thealgorithms/dynamicprogramming/LongestArithmeticSubsequence.java
  class LongestArithmeticSubsequence (line 5) | @SuppressWarnings({"rawtypes", "unchecked"})
    method LongestArithmeticSubsequence (line 7) | private LongestArithmeticSubsequence() {
    method getLongestArithmeticSubsequenceLength (line 19) | public static int getLongestArithmeticSubsequenceLength(int[] nums) {

FILE: src/main/java/com/thealgorithms/dynamicprogramming/LongestCommonSubsequence.java
  class LongestCommonSubsequence (line 11) | final class LongestCommonSubsequence {
    method LongestCommonSubsequence (line 13) | private LongestCommonSubsequence() {
    method getLCS (line 23) | public static String getLCS(String str1, String str2) {
    method lcsString (line 75) | public static String lcsString(String str1, String str2, int[][] lcsMa...

FILE: src/main/java/com/thealgorithms/dynamicprogramming/LongestIncreasingSubsequence.java
  class LongestIncreasingSubsequence (line 6) | public final class LongestIncreasingSubsequence {
    method LongestIncreasingSubsequence (line 7) | private LongestIncreasingSubsequence() {
    method upperBound (line 10) | private static int upperBound(int[] ar, int l, int r, int key) {
    method lis (line 23) | public static int lis(int[] array) {
    method findLISLen (line 59) | public static int findLISLen(int[] a) {
    method binarySearchBetween (line 79) | private static int binarySearchBetween(int[] t, int end, int key) {

FILE: src/main/java/com/thealgorithms/dynamicprogramming/LongestIncreasingSubsequenceNLogN.java
  class LongestIncreasingSubsequenceNLogN (line 9) | public final class LongestIncreasingSubsequenceNLogN {
    method LongestIncreasingSubsequenceNLogN (line 10) | private LongestIncreasingSubsequenceNLogN() {
    method lowerBound (line 23) | private static int lowerBound(int[] arr, int target, int size) {
    method lengthOfLIS (line 49) | public static int lengthOfLIS(int[] arr) {

FILE: src/main/java/com/thealgorithms/dynamicprogramming/LongestPalindromicSubsequence.java
  class LongestPalindromicSubsequence (line 7) | public final class LongestPalindromicSubsequence {
    method LongestPalindromicSubsequence (line 8) | private LongestPalindromicSubsequence() {
    method main (line 11) | public static void main(String[] args) {
    method lps (line 22) | public static String lps(String original) throws IllegalArgumentExcept...
    method recursiveLPS (line 28) | private static String recursiveLPS(String original, String reverse) {

FILE: src/main/java/com/thealgorithms/dynamicprogramming/LongestPalindromicSubstring.java
  class LongestPalindromicSubstring (line 10) | public final class LongestPalindromicSubstring {
    method LongestPalindromicSubstring (line 11) | private LongestPalindromicSubstring() {
    method lps (line 14) | public static String lps(String input) {

FILE: src/main/java/com/thealgorithms/dynamicprogramming/LongestValidParentheses.java
  class LongestValidParentheses (line 10) | public final class LongestValidParentheses {
    method LongestValidParentheses (line 11) | private LongestValidParentheses() {
    method getLongestValidParentheses (line 14) | public static int getLongestValidParentheses(String s) {

FILE: src/main/java/com/thealgorithms/dynamicprogramming/MatrixChainMultiplication.java
  class MatrixChainMultiplication (line 12) | public final class MatrixChainMultiplication {
    method MatrixChainMultiplication (line 13) | private MatrixChainMultiplication() {
    method calculateMatrixChainOrder (line 29) | public static Result calculateMatrixChainOrder(ArrayList<Matrix> matri...
    method matrixChainOrder (line 54) | private static void matrixChainOrder(int size) {
    class Result (line 79) | public static class Result {
      method Result (line 90) | public Result(int[][] m, int[][] s) {
      method getM (line 100) | public int[][] getM() {
      method getS (line 109) | public int[][] getS() {
    class Matrix (line 117) | public static class Matrix {
      method Matrix (line 130) | public Matrix(int count, int col, int row) {
      method count (line 141) | public int count() {
      method col (line 150) | public int col() {
      method row (line 159) | public int row() {

FILE: src/main/java/com/thealgorithms/dynamicprogramming/MatrixChainRecursiveTopDownMemoisation.java
  class MatrixChainRecursiveTopDownMemoisation (line 16) | public final class MatrixChainRecursiveTopDownMemoisation {
    method MatrixChainRecursiveTopDownMemoisation (line 17) | private MatrixChainRecursiveTopDownMemoisation() {
    method memoizedMatrixChain (line 29) | static int memoizedMatrixChain(int[] p) {
    method lookupChain (line 51) | static int lookupChain(int[][] m, int[] p, int i, int j) {

FILE: src/main/java/com/thealgorithms/dynamicprogramming/MaximumProductSubarray.java
  class MaximumProductSubarray (line 17) | public final class MaximumProductSubarray {
    method MaximumProductSubarray (line 19) | private MaximumProductSubarray() {
    method maxProduct (line 31) | public static int maxProduct(int[] nums) {

FILE: src/main/java/com/thealgorithms/dynamicprogramming/MaximumSumOfNonAdjacentElements.java
  class MaximumSumOfNonAdjacentElements (line 9) | final class MaximumSumOfNonAdjacentElements {
    method MaximumSumOfNonAdjacentElements (line 11) | private MaximumSumOfNonAdjacentElements() {
    method getMaxSumApproach1 (line 21) | public static int getMaxSumApproach1(int[] arr) {
    method getMaxSumApproa
Condensed preview — 1570 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (4,964K chars).
[
  {
    "path": ".clang-format",
    "chars": 3930,
    "preview": "---\nLanguage: Java\nAccessModifierOffset: -4\nAlignAfterOpenBracket: DontAlign\nAlignConsecutiveMacros: false\nAlignConsecut"
  },
  {
    "path": ".devcontainer/Dockerfile",
    "chars": 1446,
    "preview": "# See here for image contents: https://github.com/microsoft/vscode-dev-containers/tree/v0.238.0/containers/java/.devcont"
  },
  {
    "path": ".devcontainer/devcontainer.json",
    "chars": 1402,
    "preview": "// For format details, see https://aka.ms/devcontainer.json. For config options, see the README at:\n// https://github.co"
  },
  {
    "path": ".github/CODEOWNERS",
    "chars": 36,
    "preview": "* @DenizAltunkapan @yanglbme @alxkm\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.yml",
    "chars": 1239,
    "preview": "name: \"Bug report\"\ndescription: \"Create a report to help us improve\"\ntitle: \"[BUG] <title>\"\nlabels: [\"bug\"]\nbody:\n  - ty"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/config.yml",
    "chars": 195,
    "preview": "blank_issues_enabled: false\ncontact_links:\n  - name: Discord community\n    url: https://the-algorithms.com/discord/\n    "
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature_request.yml",
    "chars": 1139,
    "preview": "name: \"Feature Request\"\ndescription: \"Suggest an idea for this project\"\ntitle: \"[FEATURE REQUEST] <title>\"\nlabels: [\"enh"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/other.yml",
    "chars": 552,
    "preview": "name: Other\ndescription: Use this for any other issues. Do NOT create blank issues\ntitle: \"[OTHER]\"\nlabels: [\"awaiting t"
  },
  {
    "path": ".github/dependabot.yml",
    "chars": 323,
    "preview": "---\nversion: 2\nupdates:\n  - package-ecosystem: \"docker\"\n    directory: \"/\"\n    schedule:\n      interval: \"weekly\"\n\n  - p"
  },
  {
    "path": ".github/pull_request_template.md",
    "chars": 1240,
    "preview": "<!--\nThank you for your contribution!\nIn order to reduce the number of notifications sent to the maintainers, please:\n- "
  },
  {
    "path": ".github/workflows/build.yml",
    "chars": 1203,
    "preview": "name: Build\non: [push, pull_request]\n\npermissions:\n  contents: read\n\njobs:\n  build:\n    runs-on: ubuntu-latest\n    steps"
  },
  {
    "path": ".github/workflows/clang-format-lint.yml",
    "chars": 322,
    "preview": "name: Clang format linter\non:\n  push: {}\n  pull_request: {}\n\npermissions:\n  contents: read\n\njobs:\n  build:\n    runs-on: "
  },
  {
    "path": ".github/workflows/close-failed-prs.yml",
    "chars": 6656,
    "preview": "name: Close stale PRs with failed workflows\n\non:\n  schedule:\n    - cron: '0 3 * * *' # runs daily at 03:00 UTC\n  workflo"
  },
  {
    "path": ".github/workflows/codeql.yml",
    "chars": 1361,
    "preview": "---\nname: \"CodeQL\"\n\non:\n  workflow_dispatch:\n  push:\n    branches:\n      - master\n  pull_request:\n  schedule:\n    - cron"
  },
  {
    "path": ".github/workflows/infer.yml",
    "chars": 1394,
    "preview": "---\nname: Infer\n\n'on':\n  workflow_dispatch:\n  push:\n    branches:\n      - master\n  pull_request:\n\npermissions:\n  content"
  },
  {
    "path": ".github/workflows/project_structure.yml",
    "chars": 431,
    "preview": "---\nname: ProjectStructure\n\n'on':\n  workflow_dispatch:\n  push:\n    branches:\n      - master\n  pull_request:\n\npermissions"
  },
  {
    "path": ".github/workflows/scripts/check_structure.py",
    "chars": 783,
    "preview": "import pathlib\nimport sys\n\n\ndef _is_java_file_properly_located(java_file: pathlib.Path) -> bool:\n    main_parents = java"
  },
  {
    "path": ".github/workflows/stale.yml",
    "chars": 1362,
    "preview": "name: 'Close stale issues and PRs'\non:\n  schedule:\n    - cron: '0 0 * * *'\npermissions:\n  contents: read\njobs:\n  stale:\n"
  },
  {
    "path": ".github/workflows/update-directorymd.yml",
    "chars": 1213,
    "preview": "name: Generate Directory Markdown\n\non:\n  push:\n    branches: [master]\n  workflow_dispatch:\n\npermissions:\n  contents: wr"
  },
  {
    "path": ".gitignore",
    "chars": 721,
    "preview": "/gradle/wrapper/gradle-wrapper.properties\n\n##----------Android----------\n*.apk\n*.ap_\n*.dex\n*.class\nbin/\ngen/\nbuild/\nout/"
  },
  {
    "path": ".gitpod.dockerfile",
    "chars": 554,
    "preview": "FROM gitpod/workspace-java-21:2025-11-14-10-05-32\n\nENV LLVM_SCRIPT=\"tmp_llvm.sh\"\n\nRUN test ! -f  \"$LLVM_SCRIPT\" \\\n  && w"
  },
  {
    "path": ".gitpod.yml",
    "chars": 154,
    "preview": "---\nimage:\n  file: .gitpod.dockerfile\n\ntasks:\n  - init: |\n      mvn dependency:resolve\n      mvn compile\n\nvscode:\n  exte"
  },
  {
    "path": ".inferconfig",
    "chars": 2011,
    "preview": "{\n    \"report-block-list-path-regex\": [\n        \"src/main/java/com/thealgorithms/ciphers/a5/CompositeLFSR.java\",\n       "
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 2027,
    "preview": "## How to contribute?\n\nNOTE: *We DO NOT add leetcode problems. They are just applications of basic principles that can b"
  },
  {
    "path": "DIRECTORY.md",
    "chars": 154965,
    "preview": "# Project Structure\n\n## src\n\n- 📁 **main**\n  - 📁 **java**\n    - 📁 **com**\n      - 📁 **thealgorithms**\n        - 📁 **audio"
  },
  {
    "path": "LICENSE",
    "chars": 1071,
    "preview": "MIT License\n\nCopyright (c) 2021 The Algorithms\n\nPermission is hereby granted, free of charge, to any person obtaining a "
  },
  {
    "path": "README.md",
    "chars": 1292,
    "preview": "# The Algorithms - Java\n\n[![Build](https://github.com/TheAlgorithms/Java/actions/workflows/build.yml/badge.svg?branch=ma"
  },
  {
    "path": "checkstyle.xml",
    "chars": 7813,
    "preview": "<?xml version=\"1.0\"?>\n<!DOCTYPE module PUBLIC\n          \"-//Checkstyle//DTD Checkstyle Configuration 1.3//EN\"\n          "
  },
  {
    "path": "pmd-custom_ruleset.xml",
    "chars": 892,
    "preview": "<?xml version=\"1.0\"?>\n<ruleset name=\"TheAlgorithms/Java ruleset\"\n    xmlns=\"http://pmd.sf.net/ruleset/1.0.0\"\n    xmlns:x"
  },
  {
    "path": "pmd-exclude.properties",
    "chars": 7349,
    "preview": "com.thealgorithms.ciphers.AES=UselessMainMethod\ncom.thealgorithms.ciphers.AESEncryption=UselessMainMethod\ncom.thealgorit"
  },
  {
    "path": "pom.xml",
    "chars": 6396,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\n    xmlns:xsi=\"http://www.w3.o"
  },
  {
    "path": "spotbugs-exclude.xml",
    "chars": 4549,
    "preview": "<FindBugsFilter>\n    <Match>\n        <Bug pattern=\"DM_DEFAULT_ENCODING\" />\n    </Match>\n    <Match>\n        <Bug pattern"
  },
  {
    "path": "src/main/java/com/thealgorithms/audiofilters/EMAFilter.java",
    "chars": 1643,
    "preview": "package com.thealgorithms.audiofilters;\n\n/**\n * Exponential Moving Average (EMA) Filter for smoothing audio signals.\n *\n"
  },
  {
    "path": "src/main/java/com/thealgorithms/audiofilters/IIRFilter.java",
    "chars": 2708,
    "preview": "package com.thealgorithms.audiofilters;\n\n/**\n * N-Order IIR Filter Assumes inputs are normalized to [-1, 1]\n *\n * Based "
  },
  {
    "path": "src/main/java/com/thealgorithms/backtracking/AllPathsFromSourceToTarget.java",
    "chars": 3826,
    "preview": "package com.thealgorithms.backtracking;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\n/**\n * Finds all possible s"
  },
  {
    "path": "src/main/java/com/thealgorithms/backtracking/ArrayCombination.java",
    "chars": 1908,
    "preview": "package com.thealgorithms.backtracking;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\n/**\n * This class provides "
  },
  {
    "path": "src/main/java/com/thealgorithms/backtracking/Combination.java",
    "chars": 2172,
    "preview": "package com.thealgorithms.backtracking;\n\nimport java.util.Arrays;\nimport java.util.Collections;\nimport java.util.LinkedL"
  },
  {
    "path": "src/main/java/com/thealgorithms/backtracking/CombinationSum.java",
    "chars": 1703,
    "preview": "package com.thealgorithms.backtracking;\n\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.List;\n\n/*"
  },
  {
    "path": "src/main/java/com/thealgorithms/backtracking/CrosswordSolver.java",
    "chars": 4568,
    "preview": "package com.thealgorithms.backtracking;\n\nimport java.util.ArrayList;\nimport java.util.Collection;\nimport java.util.List;"
  },
  {
    "path": "src/main/java/com/thealgorithms/backtracking/FloodFill.java",
    "chars": 2347,
    "preview": "package com.thealgorithms.backtracking;\n\n/**\n * Java program for Flood fill algorithm.\n * @author Akshay Dubey (<a href="
  },
  {
    "path": "src/main/java/com/thealgorithms/backtracking/KnightsTour.java",
    "chars": 5052,
    "preview": "package com.thealgorithms.backtracking;\n\nimport java.util.ArrayList;\nimport java.util.Comparator;\nimport java.util.List;"
  },
  {
    "path": "src/main/java/com/thealgorithms/backtracking/MColoring.java",
    "chars": 3650,
    "preview": "package com.thealgorithms.backtracking;\n\nimport java.util.ArrayList;\nimport java.util.HashSet;\nimport java.util.LinkedLi"
  },
  {
    "path": "src/main/java/com/thealgorithms/backtracking/MazeRecursion.java",
    "chars": 3914,
    "preview": "package com.thealgorithms.backtracking;\n\n/**\n * This class contains methods to solve a maze using recursive backtracking"
  },
  {
    "path": "src/main/java/com/thealgorithms/backtracking/NQueens.java",
    "chars": 4649,
    "preview": "package com.thealgorithms.backtracking;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\n/**\n * Problem statement: G"
  },
  {
    "path": "src/main/java/com/thealgorithms/backtracking/ParenthesesGenerator.java",
    "chars": 1830,
    "preview": "package com.thealgorithms.backtracking;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\n/**\n * This class generates"
  },
  {
    "path": "src/main/java/com/thealgorithms/backtracking/Permutation.java",
    "chars": 1629,
    "preview": "package com.thealgorithms.backtracking;\n\nimport java.util.LinkedList;\nimport java.util.List;\n\n/**\n * Finds all permutati"
  },
  {
    "path": "src/main/java/com/thealgorithms/backtracking/PowerSum.java",
    "chars": 2103,
    "preview": "package com.thealgorithms.backtracking;\n\n/**\n * Problem Statement:\n * Find the number of ways that a given integer, N, c"
  },
  {
    "path": "src/main/java/com/thealgorithms/backtracking/SubsequenceFinder.java",
    "chars": 1962,
    "preview": "package com.thealgorithms.backtracking;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\n/**\n * Class generates all "
  },
  {
    "path": "src/main/java/com/thealgorithms/backtracking/SudokuSolver.java",
    "chars": 4875,
    "preview": "package com.thealgorithms.backtracking;\n\n/**\n * Sudoku Solver using Backtracking Algorithm\n * Solves a 9x9 Sudoku puzzle"
  },
  {
    "path": "src/main/java/com/thealgorithms/backtracking/UniquePermutation.java",
    "chars": 1653,
    "preview": "package com.thealgorithms.backtracking;\n\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.List;\n\n/*"
  },
  {
    "path": "src/main/java/com/thealgorithms/backtracking/WordPatternMatcher.java",
    "chars": 3042,
    "preview": "package com.thealgorithms.backtracking;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\n/**\n * Class to determine if a"
  },
  {
    "path": "src/main/java/com/thealgorithms/backtracking/WordSearch.java",
    "chars": 3216,
    "preview": "package com.thealgorithms.backtracking;\n\n/**\n * Word Search Problem\n *\n * This class solves the word search problem wher"
  },
  {
    "path": "src/main/java/com/thealgorithms/bitmanipulation/BcdConversion.java",
    "chars": 3087,
    "preview": "package com.thealgorithms.bitmanipulation;\n\n/**\n * This class provides methods to convert between BCD (Binary-Coded Deci"
  },
  {
    "path": "src/main/java/com/thealgorithms/bitmanipulation/BinaryPalindromeCheck.java",
    "chars": 1319,
    "preview": "package com.thealgorithms.bitmanipulation;\n\n/**\n * This class contains a method to check if the binary representation of"
  },
  {
    "path": "src/main/java/com/thealgorithms/bitmanipulation/BitRotate.java",
    "chars": 3035,
    "preview": "package com.thealgorithms.bitmanipulation;\n\n/**\n * Utility class for performing circular bit rotations on 32-bit integer"
  },
  {
    "path": "src/main/java/com/thealgorithms/bitmanipulation/BitSwap.java",
    "chars": 1141,
    "preview": "package com.thealgorithms.bitmanipulation;\n\n/**\n * Utility class for performing bit-swapping operations on integers.\n * "
  },
  {
    "path": "src/main/java/com/thealgorithms/bitmanipulation/BitwiseGCD.java",
    "chars": 5420,
    "preview": "package com.thealgorithms.bitmanipulation;\n\nimport java.math.BigInteger;\n\n/**\n * Bitwise GCD implementation with full-ra"
  },
  {
    "path": "src/main/java/com/thealgorithms/bitmanipulation/BooleanAlgebraGates.java",
    "chars": 2975,
    "preview": "package com.thealgorithms.bitmanipulation;\n\nimport java.util.List;\n\n/**\n * Implements various Boolean algebra gates (AND"
  },
  {
    "path": "src/main/java/com/thealgorithms/bitmanipulation/ClearLeftmostSetBit.java",
    "chars": 1092,
    "preview": "package com.thealgorithms.bitmanipulation;\n\n/**\n * ClearLeftmostSetBit class contains a method to clear the leftmost set"
  },
  {
    "path": "src/main/java/com/thealgorithms/bitmanipulation/CountBitsFlip.java",
    "chars": 1847,
    "preview": "package com.thealgorithms.bitmanipulation;\n\n/**\n * Implementation to count number of bits to be flipped to convert A to "
  },
  {
    "path": "src/main/java/com/thealgorithms/bitmanipulation/CountLeadingZeros.java",
    "chars": 1171,
    "preview": "package com.thealgorithms.bitmanipulation;\n\n/**\n * CountLeadingZeros class contains a method to count the number of lead"
  },
  {
    "path": "src/main/java/com/thealgorithms/bitmanipulation/CountSetBits.java",
    "chars": 2115,
    "preview": "package com.thealgorithms.bitmanipulation;\n\n/**\n * Utility class to count total set bits from 1 to N\n * A set bit is a b"
  },
  {
    "path": "src/main/java/com/thealgorithms/bitmanipulation/FindNthBit.java",
    "chars": 1634,
    "preview": "package com.thealgorithms.bitmanipulation;\n\n/**\n * A utility class to find the Nth bit of a given number.\n *\n * <p>This "
  },
  {
    "path": "src/main/java/com/thealgorithms/bitmanipulation/FirstDifferentBit.java",
    "chars": 899,
    "preview": "package com.thealgorithms.bitmanipulation;\n\n/**\n * This class provides a method to find the first differing bit\n * betwe"
  },
  {
    "path": "src/main/java/com/thealgorithms/bitmanipulation/GenerateSubsets.java",
    "chars": 1346,
    "preview": "package com.thealgorithms.bitmanipulation;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\n/**\n * This class provid"
  },
  {
    "path": "src/main/java/com/thealgorithms/bitmanipulation/GrayCodeConversion.java",
    "chars": 1070,
    "preview": "package com.thealgorithms.bitmanipulation;\n\n/**\n * Gray code is a binary numeral system where two successive values diff"
  },
  {
    "path": "src/main/java/com/thealgorithms/bitmanipulation/HammingDistance.java",
    "chars": 871,
    "preview": "package com.thealgorithms.bitmanipulation;\n\n/**\n * The Hamming distance between two integers is the number of positions "
  },
  {
    "path": "src/main/java/com/thealgorithms/bitmanipulation/HigherLowerPowerOfTwo.java",
    "chars": 1661,
    "preview": "package com.thealgorithms.bitmanipulation;\n\n/**\n * HigherLowerPowerOfTwo class has two methods to find the next higher a"
  },
  {
    "path": "src/main/java/com/thealgorithms/bitmanipulation/HighestSetBit.java",
    "chars": 1807,
    "preview": "package com.thealgorithms.bitmanipulation;\n\nimport java.util.Optional;\n\n/**\n * Find Highest Set Bit\n *\n * This class pro"
  },
  {
    "path": "src/main/java/com/thealgorithms/bitmanipulation/IndexOfRightMostSetBit.java",
    "chars": 1285,
    "preview": "package com.thealgorithms.bitmanipulation;\n\n/**\n * Utility class for bit manipulation operations.\n * This class provides"
  },
  {
    "path": "src/main/java/com/thealgorithms/bitmanipulation/IsEven.java",
    "chars": 308,
    "preview": "package com.thealgorithms.bitmanipulation;\n\n/**\n * Checks whether a number is even\n * @author Bama Charan Chhandogi (htt"
  },
  {
    "path": "src/main/java/com/thealgorithms/bitmanipulation/IsPowerTwo.java",
    "chars": 1094,
    "preview": "package com.thealgorithms.bitmanipulation;\n\n/**\n * Utility class for checking if a number is a power of two.\n * A power "
  },
  {
    "path": "src/main/java/com/thealgorithms/bitmanipulation/LowestSetBit.java",
    "chars": 1088,
    "preview": "package com.thealgorithms.bitmanipulation;\n\n/**\n * Lowest Set Bit\n * @author Prayas Kumar (https://github.com/prayas7102"
  },
  {
    "path": "src/main/java/com/thealgorithms/bitmanipulation/ModuloPowerOfTwo.java",
    "chars": 740,
    "preview": "package com.thealgorithms.bitmanipulation;\n\n/**\n * This class provides a method to compute the remainder\n * of a number "
  },
  {
    "path": "src/main/java/com/thealgorithms/bitmanipulation/NextHigherSameBitCount.java",
    "chars": 992,
    "preview": "package com.thealgorithms.bitmanipulation;\n\n/**\n * This class provides a method to find the next higher number\n * with t"
  },
  {
    "path": "src/main/java/com/thealgorithms/bitmanipulation/NonRepeatingNumberFinder.java",
    "chars": 1291,
    "preview": "package com.thealgorithms.bitmanipulation;\n\n/**\n * A utility class to find the non-repeating number in an array where ev"
  },
  {
    "path": "src/main/java/com/thealgorithms/bitmanipulation/NumberAppearingOddTimes.java",
    "chars": 1329,
    "preview": "package com.thealgorithms.bitmanipulation;\n\n/**\n * This class provides a method to find the element that appears an\n * o"
  },
  {
    "path": "src/main/java/com/thealgorithms/bitmanipulation/NumbersDifferentSigns.java",
    "chars": 991,
    "preview": "package com.thealgorithms.bitmanipulation;\n\n/**\n * This class provides a method to determine whether two integers have\n "
  },
  {
    "path": "src/main/java/com/thealgorithms/bitmanipulation/OneBitDifference.java",
    "chars": 785,
    "preview": "package com.thealgorithms.bitmanipulation;\n\n/**\n * This class provides a method to detect if two integers\n * differ by e"
  },
  {
    "path": "src/main/java/com/thealgorithms/bitmanipulation/OnesComplement.java",
    "chars": 1398,
    "preview": "package com.thealgorithms.bitmanipulation;\n\n/**\n * @author - https://github.com/Monk-AbhinayVerma\n * @Wikipedia - https:"
  },
  {
    "path": "src/main/java/com/thealgorithms/bitmanipulation/ParityCheck.java",
    "chars": 1163,
    "preview": "package com.thealgorithms.bitmanipulation;\n\n/**\n * The ParityCheck class provides a method to check the parity of a give"
  },
  {
    "path": "src/main/java/com/thealgorithms/bitmanipulation/ReverseBits.java",
    "chars": 1401,
    "preview": "package com.thealgorithms.bitmanipulation;\n\n/**\n * This class provides a method to reverse the bits of a 32-bit integer."
  },
  {
    "path": "src/main/java/com/thealgorithms/bitmanipulation/SingleBitOperations.java",
    "chars": 2339,
    "preview": "package com.thealgorithms.bitmanipulation;\r\n\r\n/**\r\n * A utility class for performing single-bit operations on integers.\r"
  },
  {
    "path": "src/main/java/com/thealgorithms/bitmanipulation/SingleElement.java",
    "chars": 1210,
    "preview": "package com.thealgorithms.bitmanipulation;\n\n/**\n * Utility class to find the single non-duplicate element from an array\n"
  },
  {
    "path": "src/main/java/com/thealgorithms/bitmanipulation/SwapAdjacentBits.java",
    "chars": 2125,
    "preview": "package com.thealgorithms.bitmanipulation;\n\n/**\n * A utility class to swap every pair of adjacent bits in a given intege"
  },
  {
    "path": "src/main/java/com/thealgorithms/bitmanipulation/TwosComplement.java",
    "chars": 2425,
    "preview": "package com.thealgorithms.bitmanipulation;\n\n/**\n * This class provides a method to compute the Two's Complement of a giv"
  },
  {
    "path": "src/main/java/com/thealgorithms/bitmanipulation/Xs3Conversion.java",
    "chars": 1951,
    "preview": "package com.thealgorithms.bitmanipulation;\n\n/**\n * This class provides methods to convert between XS-3 (Excess-3) and bi"
  },
  {
    "path": "src/main/java/com/thealgorithms/ciphers/ADFGVXCipher.java",
    "chars": 6508,
    "preview": "package com.thealgorithms.ciphers;\n\nimport java.util.Arrays;\nimport java.util.HashMap;\nimport java.util.Map;\n\n/**\n * The"
  },
  {
    "path": "src/main/java/com/thealgorithms/ciphers/AES.java",
    "chars": 47891,
    "preview": "package com.thealgorithms.ciphers;\n\nimport java.math.BigInteger;\nimport java.util.Scanner;\n\n/**\n * This class is build t"
  },
  {
    "path": "src/main/java/com/thealgorithms/ciphers/AESEncryption.java",
    "chars": 4413,
    "preview": "package com.thealgorithms.ciphers;\n\nimport java.security.InvalidAlgorithmParameterException;\nimport java.security.Invali"
  },
  {
    "path": "src/main/java/com/thealgorithms/ciphers/AffineCipher.java",
    "chars": 3015,
    "preview": "package com.thealgorithms.ciphers;\n\n/**\n * The AffineCipher class implements the Affine cipher, a type of monoalphabetic"
  },
  {
    "path": "src/main/java/com/thealgorithms/ciphers/AtbashCipher.java",
    "chars": 3088,
    "preview": "package com.thealgorithms.ciphers;\r\n\r\n/**\r\n * The Atbash cipher is a classic substitution cipher that substitutes each l"
  },
  {
    "path": "src/main/java/com/thealgorithms/ciphers/Autokey.java",
    "chars": 2033,
    "preview": "package com.thealgorithms.ciphers;\n\n/**\n * The Autokey Cipher is an interesting and historically significant encryption "
  },
  {
    "path": "src/main/java/com/thealgorithms/ciphers/BaconianCipher.java",
    "chars": 2617,
    "preview": "package com.thealgorithms.ciphers;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\n/**\n * The Baconian Cipher is a sub"
  },
  {
    "path": "src/main/java/com/thealgorithms/ciphers/Blowfish.java",
    "chars": 31386,
    "preview": "package com.thealgorithms.ciphers;\n\n/*\n * Java program for Blowfish Algorithm\n * Wikipedia: https://en.wikipedia.org/wik"
  },
  {
    "path": "src/main/java/com/thealgorithms/ciphers/Caesar.java",
    "chars": 3386,
    "preview": "package com.thealgorithms.ciphers;\n\n/**\n * A Java implementation of Caesar Cipher. /It is a type of substitution cipher\n"
  },
  {
    "path": "src/main/java/com/thealgorithms/ciphers/ColumnarTranspositionCipher.java",
    "chars": 6612,
    "preview": "package com.thealgorithms.ciphers;\n\nimport java.util.Objects;\n\n/**\n * Columnar Transposition Cipher Encryption and Decry"
  },
  {
    "path": "src/main/java/com/thealgorithms/ciphers/DES.java",
    "chars": 11777,
    "preview": "package com.thealgorithms.ciphers;\n\n/**\n * This class is build to demonstrate the application of the DES-algorithm\n * (h"
  },
  {
    "path": "src/main/java/com/thealgorithms/ciphers/DiffieHellman.java",
    "chars": 1364,
    "preview": "package com.thealgorithms.ciphers;\n\nimport java.math.BigInteger;\n\npublic final class DiffieHellman {\n\n    private final "
  },
  {
    "path": "src/main/java/com/thealgorithms/ciphers/ECC.java",
    "chars": 8866,
    "preview": "package com.thealgorithms.ciphers;\n\nimport java.math.BigInteger;\nimport java.security.SecureRandom;\n\n/**\n * ECC - Ellipt"
  },
  {
    "path": "src/main/java/com/thealgorithms/ciphers/ElGamalCipher.java",
    "chars": 6046,
    "preview": "package com.thealgorithms.ciphers;\n\nimport java.math.BigInteger;\nimport java.security.SecureRandom;\n\n/**\n * ElGamal Encr"
  },
  {
    "path": "src/main/java/com/thealgorithms/ciphers/HillCipher.java",
    "chars": 3656,
    "preview": "package com.thealgorithms.ciphers;\n\npublic class HillCipher {\n\n    // Encrypts the message using the key matrix\n    publ"
  },
  {
    "path": "src/main/java/com/thealgorithms/ciphers/MonoAlphabetic.java",
    "chars": 1753,
    "preview": "package com.thealgorithms.ciphers;\n\npublic final class MonoAlphabetic {\n\n    private MonoAlphabetic() {\n        throw ne"
  },
  {
    "path": "src/main/java/com/thealgorithms/ciphers/OneTimePadCipher.java",
    "chars": 3143,
    "preview": "package com.thealgorithms.ciphers;\n\nimport java.security.SecureRandom;\nimport java.util.Objects;\n\n/**\n * One-Time Pad (O"
  },
  {
    "path": "src/main/java/com/thealgorithms/ciphers/PermutationCipher.java",
    "chars": 6512,
    "preview": "package com.thealgorithms.ciphers;\r\n\r\nimport java.util.HashSet;\r\nimport java.util.Set;\r\n\r\n/**\r\n * A Java implementation "
  },
  {
    "path": "src/main/java/com/thealgorithms/ciphers/PlayfairCipher.java",
    "chars": 4277,
    "preview": "package com.thealgorithms.ciphers;\n\npublic class PlayfairCipher {\n\n    private char[][] matrix;\n    private String key;\n"
  },
  {
    "path": "src/main/java/com/thealgorithms/ciphers/Polybius.java",
    "chars": 2249,
    "preview": "package com.thealgorithms.ciphers;\n\n/**\n * A Java implementation of Polybius Cipher\n * Polybius is a substitution cipher"
  },
  {
    "path": "src/main/java/com/thealgorithms/ciphers/ProductCipher.java",
    "chars": 2782,
    "preview": "package com.thealgorithms.ciphers;\n\nimport java.util.Scanner;\n\nfinal class ProductCipher {\n    private ProductCipher() {"
  },
  {
    "path": "src/main/java/com/thealgorithms/ciphers/RSA.java",
    "chars": 4497,
    "preview": "package com.thealgorithms.ciphers;\n\nimport java.math.BigInteger;\nimport java.security.SecureRandom;\n\n/**\n * RSA is an as"
  },
  {
    "path": "src/main/java/com/thealgorithms/ciphers/RailFenceCipher.java",
    "chars": 5428,
    "preview": "package com.thealgorithms.ciphers;\r\n\r\nimport java.util.Arrays;\r\n\r\n/**\r\n * The rail fence cipher (also called a zigzag ci"
  },
  {
    "path": "src/main/java/com/thealgorithms/ciphers/SimpleSubCipher.java",
    "chars": 2824,
    "preview": "package com.thealgorithms.ciphers;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\n/**\n * The simple substitution ciph"
  },
  {
    "path": "src/main/java/com/thealgorithms/ciphers/Vigenere.java",
    "chars": 3900,
    "preview": "package com.thealgorithms.ciphers;\n\n/**\n * A Java implementation of the Vigenère Cipher.\n *\n * The Vigenère Cipher is a "
  },
  {
    "path": "src/main/java/com/thealgorithms/ciphers/XORCipher.java",
    "chars": 3654,
    "preview": "package com.thealgorithms.ciphers;\n\nimport java.nio.charset.Charset;\nimport java.nio.charset.StandardCharsets;\nimport ja"
  },
  {
    "path": "src/main/java/com/thealgorithms/ciphers/a5/A5Cipher.java",
    "chars": 2183,
    "preview": "package com.thealgorithms.ciphers.a5;\n\nimport java.util.BitSet;\n\n/**\n * The A5Cipher class implements the A5/1 stream ci"
  },
  {
    "path": "src/main/java/com/thealgorithms/ciphers/a5/A5KeyStreamGenerator.java",
    "chars": 3989,
    "preview": "package com.thealgorithms.ciphers.a5;\n\nimport java.util.BitSet;\n\n/**\n * The A5KeyStreamGenerator class is responsible fo"
  },
  {
    "path": "src/main/java/com/thealgorithms/ciphers/a5/BaseLFSR.java",
    "chars": 245,
    "preview": "package com.thealgorithms.ciphers.a5;\n\nimport java.util.BitSet;\n\npublic interface BaseLFSR {\n    void initialize(BitSet "
  },
  {
    "path": "src/main/java/com/thealgorithms/ciphers/a5/CompositeLFSR.java",
    "chars": 2314,
    "preview": "package com.thealgorithms.ciphers.a5;\n\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.Map;\nimport j"
  },
  {
    "path": "src/main/java/com/thealgorithms/ciphers/a5/LFSR.java",
    "chars": 2091,
    "preview": "package com.thealgorithms.ciphers.a5;\n\nimport java.util.BitSet;\n\npublic class LFSR implements BaseLFSR {\n\n    private fi"
  },
  {
    "path": "src/main/java/com/thealgorithms/ciphers/a5/Utils.java",
    "chars": 626,
    "preview": "package com.thealgorithms.ciphers.a5;\n\n// Source\n// http://www.java2s.com/example/java-utility-method/bitset/increment-b"
  },
  {
    "path": "src/main/java/com/thealgorithms/compression/ArithmeticCoding.java",
    "chars": 5724,
    "preview": "package com.thealgorithms.compression;\n\nimport java.math.BigDecimal;\nimport java.math.MathContext;\nimport java.util.Arra"
  },
  {
    "path": "src/main/java/com/thealgorithms/compression/BurrowsWheelerTransform.java",
    "chars": 8502,
    "preview": "package com.thealgorithms.compression;\n\nimport java.util.Arrays;\nimport java.util.HashMap;\nimport java.util.Map;\n\n/**\n *"
  },
  {
    "path": "src/main/java/com/thealgorithms/compression/HuffmanCoding.java",
    "chars": 9281,
    "preview": "package com.thealgorithms.compression;\n\nimport java.util.Collections;\nimport java.util.HashMap;\nimport java.util.Map;\nim"
  },
  {
    "path": "src/main/java/com/thealgorithms/compression/LZ77.java",
    "chars": 6640,
    "preview": "package com.thealgorithms.compression;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\n/**\n * An implementation of "
  },
  {
    "path": "src/main/java/com/thealgorithms/compression/LZ78.java",
    "chars": 4518,
    "preview": "package com.thealgorithms.compression;\n\nimport java.util.ArrayList;\nimport java.util.HashMap;\nimport java.util.List;\nimp"
  },
  {
    "path": "src/main/java/com/thealgorithms/compression/LZW.java",
    "chars": 4325,
    "preview": "package com.thealgorithms.compression;\n\nimport java.util.ArrayList;\nimport java.util.HashMap;\nimport java.util.List;\nimp"
  },
  {
    "path": "src/main/java/com/thealgorithms/compression/MoveToFront.java",
    "chars": 6976,
    "preview": "package com.thealgorithms.compression;\n\nimport java.util.ArrayList;\nimport java.util.Collection;\nimport java.util.Linked"
  },
  {
    "path": "src/main/java/com/thealgorithms/compression/RunLengthEncoding.java",
    "chars": 2999,
    "preview": "package com.thealgorithms.compression;\n\n/**\n * An implementation of the Run-Length Encoding (RLE) algorithm.\n *\n * <p>Ru"
  },
  {
    "path": "src/main/java/com/thealgorithms/compression/ShannonFano.java",
    "chars": 6026,
    "preview": "package com.thealgorithms.compression;\n\nimport java.util.ArrayList;\nimport java.util.Collections;\nimport java.util.HashM"
  },
  {
    "path": "src/main/java/com/thealgorithms/conversions/AffineConverter.java",
    "chars": 2502,
    "preview": "package com.thealgorithms.conversions;\n\n/**\n * A utility class to perform affine transformations of the form:\n * y = slo"
  },
  {
    "path": "src/main/java/com/thealgorithms/conversions/AnyBaseToAnyBase.java",
    "chars": 6001,
    "preview": "/**\n * [Brief description of what the algorithm does]\n * <p>\n * Time Complexity: O(n) [or appropriate complexity]\n * Spa"
  },
  {
    "path": "src/main/java/com/thealgorithms/conversions/AnyBaseToDecimal.java",
    "chars": 1744,
    "preview": "package com.thealgorithms.conversions;\n\n/**\n * @author Varun Upadhyay (<a href=\"https://github.com/varunu28\">...</a>)\n *"
  },
  {
    "path": "src/main/java/com/thealgorithms/conversions/AnytoAny.java",
    "chars": 2326,
    "preview": "package com.thealgorithms.conversions;\n\n/**\n * A utility class for converting numbers from any base to any other base.\n "
  },
  {
    "path": "src/main/java/com/thealgorithms/conversions/Base64.java",
    "chars": 6772,
    "preview": "package com.thealgorithms.conversions;\n\nimport java.nio.charset.StandardCharsets;\nimport java.util.ArrayList;\nimport jav"
  },
  {
    "path": "src/main/java/com/thealgorithms/conversions/BinaryToDecimal.java",
    "chars": 1938,
    "preview": "package com.thealgorithms.conversions;\n\n/**\n * This class converts a Binary number to a Decimal number\n */\nfinal class B"
  },
  {
    "path": "src/main/java/com/thealgorithms/conversions/BinaryToHexadecimal.java",
    "chars": 2169,
    "preview": "package com.thealgorithms.conversions;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\n/**\n * Converts any Binary Numb"
  },
  {
    "path": "src/main/java/com/thealgorithms/conversions/BinaryToOctal.java",
    "chars": 1416,
    "preview": "package com.thealgorithms.conversions;\n\npublic final class BinaryToOctal {\n    private static final int BITS_PER_OCTAL_D"
  },
  {
    "path": "src/main/java/com/thealgorithms/conversions/CoordinateConverter.java",
    "chars": 2288,
    "preview": "package com.thealgorithms.conversions;\n\n/**\n * A utility class to convert between Cartesian and Polar coordinate systems"
  },
  {
    "path": "src/main/java/com/thealgorithms/conversions/DecimalToAnyBase.java",
    "chars": 2527,
    "preview": "package com.thealgorithms.conversions;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\n/**\n *  Class that provides "
  },
  {
    "path": "src/main/java/com/thealgorithms/conversions/DecimalToBinary.java",
    "chars": 1550,
    "preview": "package com.thealgorithms.conversions;\n\n/**\n * This class provides methods to convert a decimal number to a binary numbe"
  },
  {
    "path": "src/main/java/com/thealgorithms/conversions/DecimalToHexadecimal.java",
    "chars": 1481,
    "preview": "package com.thealgorithms.conversions;\n\n/**\n * This class provides a method to convert a decimal number to a hexadecimal"
  },
  {
    "path": "src/main/java/com/thealgorithms/conversions/DecimalToOctal.java",
    "chars": 1088,
    "preview": "package com.thealgorithms.conversions;\n\n/**\n * This class converts Decimal numbers to Octal Numbers\n */\npublic final cla"
  },
  {
    "path": "src/main/java/com/thealgorithms/conversions/EndianConverter.java",
    "chars": 1463,
    "preview": "package com.thealgorithms.conversions;\n\n/**\n * Utility class for converting integers between big-endian and little-endia"
  },
  {
    "path": "src/main/java/com/thealgorithms/conversions/HexToOct.java",
    "chars": 1628,
    "preview": "package com.thealgorithms.conversions;\n\n/**\n * Converts any Hexadecimal Number to Octal\n *\n * @author Tanmay Joshi\n */\np"
  },
  {
    "path": "src/main/java/com/thealgorithms/conversions/HexaDecimalToBinary.java",
    "chars": 2235,
    "preview": "package com.thealgorithms.conversions;\n\n/**\n * Utility class for converting hexadecimal numbers to binary representation"
  },
  {
    "path": "src/main/java/com/thealgorithms/conversions/HexaDecimalToDecimal.java",
    "chars": 1532,
    "preview": "package com.thealgorithms.conversions;\n\n/**\n * Utility class for converting a hexadecimal string to its decimal represen"
  },
  {
    "path": "src/main/java/com/thealgorithms/conversions/IPConverter.java",
    "chars": 1924,
    "preview": "package com.thealgorithms.conversions;\n\n/**\n * Converts an IPv4 address to its binary equivalent and vice-versa.\n * IP t"
  },
  {
    "path": "src/main/java/com/thealgorithms/conversions/IPv6Converter.java",
    "chars": 3617,
    "preview": "package com.thealgorithms.conversions;\n\nimport java.net.InetAddress;\nimport java.net.UnknownHostException;\nimport java.u"
  },
  {
    "path": "src/main/java/com/thealgorithms/conversions/IntegerToEnglish.java",
    "chars": 4236,
    "preview": "package com.thealgorithms.conversions;\n\nimport java.util.Map;\n\n/**\n * A utility class to convert integers to their Engli"
  },
  {
    "path": "src/main/java/com/thealgorithms/conversions/IntegerToRoman.java",
    "chars": 2238,
    "preview": "package com.thealgorithms.conversions;\n\n/**\n * A utility class to convert integers into Roman numerals.\n *\n * <p>Roman n"
  },
  {
    "path": "src/main/java/com/thealgorithms/conversions/MorseCodeConverter.java",
    "chars": 3352,
    "preview": "package com.thealgorithms.conversions;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\n/**\n * Converts text to Morse c"
  },
  {
    "path": "src/main/java/com/thealgorithms/conversions/NumberToWords.java",
    "chars": 3611,
    "preview": "package com.thealgorithms.conversions;\n\nimport java.math.BigDecimal;\n\n/**\n A Java-based utility for converting numeric v"
  },
  {
    "path": "src/main/java/com/thealgorithms/conversions/OctalToBinary.java",
    "chars": 2611,
    "preview": "package com.thealgorithms.conversions;\n\n/**\n * A utility class to convert an octal (base-8) number into its binary (base"
  },
  {
    "path": "src/main/java/com/thealgorithms/conversions/OctalToDecimal.java",
    "chars": 1439,
    "preview": "package com.thealgorithms.conversions;\n\n/**\n * Class for converting an octal number to a decimal number. Octal numbers a"
  },
  {
    "path": "src/main/java/com/thealgorithms/conversions/OctalToHexadecimal.java",
    "chars": 1984,
    "preview": "package com.thealgorithms.conversions;\n\n/**\n * Class for converting an Octal number to its Hexadecimal equivalent.\n *\n *"
  },
  {
    "path": "src/main/java/com/thealgorithms/conversions/PhoneticAlphabetConverter.java",
    "chars": 2855,
    "preview": "package com.thealgorithms.conversions;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\n/**\n * Converts text to the NAT"
  },
  {
    "path": "src/main/java/com/thealgorithms/conversions/RgbHsvConversion.java",
    "chars": 7404,
    "preview": "package com.thealgorithms.conversions;\n\nimport java.util.Arrays;\n\n/**\n * The RGB color model is an additive color model "
  },
  {
    "path": "src/main/java/com/thealgorithms/conversions/RomanToInteger.java",
    "chars": 2799,
    "preview": "package com.thealgorithms.conversions;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\n/**\n * A utility class to conve"
  },
  {
    "path": "src/main/java/com/thealgorithms/conversions/TemperatureConverter.java",
    "chars": 1286,
    "preview": "package com.thealgorithms.conversions;\n\n/**\n * A utility class to convert between different temperature units.\n *\n * <p>"
  },
  {
    "path": "src/main/java/com/thealgorithms/conversions/TimeConverter.java",
    "chars": 3319,
    "preview": "package com.thealgorithms.conversions;\n\nimport java.util.Locale;\nimport java.util.Map;\n\n/**\n * A utility class to conver"
  },
  {
    "path": "src/main/java/com/thealgorithms/conversions/TurkishToLatinConversion.java",
    "chars": 1375,
    "preview": "package com.thealgorithms.conversions;\n\n/**\n * Converts turkish character to latin character\n *\n * @author Özgün Gökşenl"
  },
  {
    "path": "src/main/java/com/thealgorithms/conversions/UnitConversions.java",
    "chars": 1964,
    "preview": "package com.thealgorithms.conversions;\n\nimport static java.util.Map.entry;\n\nimport java.util.Map;\nimport org.apache.comm"
  },
  {
    "path": "src/main/java/com/thealgorithms/conversions/UnitsConverter.java",
    "chars": 6547,
    "preview": "package com.thealgorithms.conversions;\n\nimport java.util.HashMap;\nimport java.util.HashSet;\nimport java.util.Map;\nimport"
  },
  {
    "path": "src/main/java/com/thealgorithms/conversions/WordsToNumber.java",
    "chars": 12902,
    "preview": "package com.thealgorithms.conversions;\n\nimport java.io.Serial;\nimport java.math.BigDecimal;\nimport java.util.ArrayDeque;"
  },
  {
    "path": "src/main/java/com/thealgorithms/datastructures/Node.java",
    "chars": 639,
    "preview": "package com.thealgorithms.datastructures;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic class Node<T> {\n\n "
  },
  {
    "path": "src/main/java/com/thealgorithms/datastructures/bags/Bag.java",
    "chars": 4130,
    "preview": "package com.thealgorithms.datastructures.bags;\n\nimport java.util.Iterator;\nimport java.util.NoSuchElementException;\n\n/**"
  },
  {
    "path": "src/main/java/com/thealgorithms/datastructures/bloomfilter/BloomFilter.java",
    "chars": 6155,
    "preview": "package com.thealgorithms.datastructures.bloomfilter;\n\nimport java.util.Arrays;\nimport java.util.BitSet;\n\n/**\n * A gener"
  },
  {
    "path": "src/main/java/com/thealgorithms/datastructures/buffers/CircularBuffer.java",
    "chars": 4735,
    "preview": "package com.thealgorithms.datastructures.buffers;\n\nimport java.util.concurrent.atomic.AtomicInteger;\n\n/**\n * The {@code "
  },
  {
    "path": "src/main/java/com/thealgorithms/datastructures/caches/FIFOCache.java",
    "chars": 19916,
    "preview": "package com.thealgorithms.datastructures.caches;\n\nimport java.util.Iterator;\nimport java.util.LinkedHashMap;\nimport java"
  },
  {
    "path": "src/main/java/com/thealgorithms/datastructures/caches/LFUCache.java",
    "chars": 6460,
    "preview": "package com.thealgorithms.datastructures.caches;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\n/**\n * The {@code LFU"
  },
  {
    "path": "src/main/java/com/thealgorithms/datastructures/caches/LIFOCache.java",
    "chars": 20385,
    "preview": "package com.thealgorithms.datastructures.caches;\n\nimport java.util.ArrayDeque;\nimport java.util.Deque;\nimport java.util."
  },
  {
    "path": "src/main/java/com/thealgorithms/datastructures/caches/LRUCache.java",
    "chars": 6665,
    "preview": "package com.thealgorithms.datastructures.caches;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\n/**\n * A Least Recent"
  },
  {
    "path": "src/main/java/com/thealgorithms/datastructures/caches/MRUCache.java",
    "chars": 6721,
    "preview": "package com.thealgorithms.datastructures.caches;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\n/**\n * Represents a M"
  },
  {
    "path": "src/main/java/com/thealgorithms/datastructures/caches/RRCache.java",
    "chars": 18251,
    "preview": "package com.thealgorithms.datastructures.caches;\n\nimport java.util.ArrayList;\nimport java.util.HashMap;\nimport java.util"
  },
  {
    "path": "src/main/java/com/thealgorithms/datastructures/crdt/GCounter.java",
    "chars": 2470,
    "preview": "package com.thealgorithms.datastructures.crdt;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\n/**\n * G-Counter (Grow-"
  },
  {
    "path": "src/main/java/com/thealgorithms/datastructures/crdt/GSet.java",
    "chars": 1920,
    "preview": "package com.thealgorithms.datastructures.crdt;\n\nimport java.util.HashSet;\nimport java.util.Set;\n\n/**\n * GSet (Grow-only "
  },
  {
    "path": "src/main/java/com/thealgorithms/datastructures/crdt/LWWElementSet.java",
    "chars": 5281,
    "preview": "package com.thealgorithms.datastructures.crdt;\n\nimport java.time.Instant;\nimport java.util.HashMap;\nimport java.util.Map"
  },
  {
    "path": "src/main/java/com/thealgorithms/datastructures/crdt/ORSet.java",
    "chars": 5735,
    "preview": "package com.thealgorithms.datastructures.crdt;\n\nimport java.util.HashSet;\nimport java.util.Set;\nimport java.util.UUID;\n\n"
  },
  {
    "path": "src/main/java/com/thealgorithms/datastructures/crdt/PNCounter.java",
    "chars": 3535,
    "preview": "package com.thealgorithms.datastructures.crdt;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\n/**\n * PN-Counter (Posi"
  },
  {
    "path": "src/main/java/com/thealgorithms/datastructures/crdt/TwoPSet.java",
    "chars": 2790,
    "preview": "package com.thealgorithms.datastructures.crdt;\n\nimport java.util.HashSet;\nimport java.util.Set;\n\n/**\n * TwoPhaseSet (2P-"
  },
  {
    "path": "src/main/java/com/thealgorithms/datastructures/disjointsetunion/DisjointSetUnion.java",
    "chars": 2405,
    "preview": "package com.thealgorithms.datastructures.disjointsetunion;\n\n/**\n * Disjoint Set Union (DSU), also known as Union-Find, i"
  },
  {
    "path": "src/main/java/com/thealgorithms/datastructures/disjointsetunion/DisjointSetUnionBySize.java",
    "chars": 3191,
    "preview": "package com.thealgorithms.datastructures.disjointsetunion;\r\n\r\n/**\r\n * Disjoint Set Union (DSU) with Union by Size.\r\n * T"
  },
  {
    "path": "src/main/java/com/thealgorithms/datastructures/disjointsetunion/Node.java",
    "chars": 569,
    "preview": "package com.thealgorithms.datastructures.disjointsetunion;\n\npublic class Node<T> {\n\n    /**\n     * The rank of the node,"
  },
  {
    "path": "src/main/java/com/thealgorithms/datastructures/dynamicarray/DynamicArray.java",
    "chars": 9463,
    "preview": "package com.thealgorithms.datastructures.dynamicarray;\n\nimport java.util.Arrays;\nimport java.util.ConcurrentModification"
  },
  {
    "path": "src/main/java/com/thealgorithms/datastructures/graphs/AStar.java",
    "chars": 5087,
    "preview": "package com.thealgorithms.datastructures.graphs;\n\nimport java.util.ArrayList;\nimport java.util.Comparator;\nimport java.u"
  },
  {
    "path": "src/main/java/com/thealgorithms/datastructures/graphs/BellmanFord.java",
    "chars": 6103,
    "preview": "package com.thealgorithms.datastructures.graphs;\n\nimport java.util.Scanner;\n\nclass BellmanFord /*\n                   * I"
  },
  {
    "path": "src/main/java/com/thealgorithms/datastructures/graphs/BipartiteGraphDFS.java",
    "chars": 2814,
    "preview": "package com.thealgorithms.datastructures.graphs;\n\nimport java.util.ArrayList;\nimport java.util.Arrays;\n\n/**\n * This clas"
  },
  {
    "path": "src/main/java/com/thealgorithms/datastructures/graphs/BoruvkaAlgorithm.java",
    "chars": 6711,
    "preview": "package com.thealgorithms.datastructures.graphs;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\n/**\n * Boruvka's a"
  },
  {
    "path": "src/main/java/com/thealgorithms/datastructures/graphs/ConnectedComponent.java",
    "chars": 3929,
    "preview": "package com.thealgorithms.datastructures.graphs;\n\nimport java.util.ArrayList;\nimport java.util.HashSet;\nimport java.util"
  },
  {
    "path": "src/main/java/com/thealgorithms/datastructures/graphs/Cycles.java",
    "chars": 2470,
    "preview": "package com.thealgorithms.datastructures.graphs;\n\nimport java.util.ArrayList;\nimport java.util.Scanner;\n\nclass Cycle {\n\n"
  },
  {
    "path": "src/main/java/com/thealgorithms/datastructures/graphs/DialsAlgorithm.java",
    "chars": 4524,
    "preview": "package com.thealgorithms.datastructures.graphs;\n\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util."
  },
  {
    "path": "src/main/java/com/thealgorithms/datastructures/graphs/DijkstraAlgorithm.java",
    "chars": 3309,
    "preview": "package com.thealgorithms.datastructures.graphs;\n\nimport java.util.Arrays;\n\n/**\n * Dijkstra's algorithm for finding the "
  },
  {
    "path": "src/main/java/com/thealgorithms/datastructures/graphs/DijkstraOptimizedAlgorithm.java",
    "chars": 2570,
    "preview": "package com.thealgorithms.datastructures.graphs;\n\nimport java.util.Arrays;\nimport java.util.Set;\nimport java.util.TreeSe"
  },
  {
    "path": "src/main/java/com/thealgorithms/datastructures/graphs/EdmondsBlossomAlgorithm.java",
    "chars": 9913,
    "preview": "package com.thealgorithms.datastructures.graphs;\n\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util."
  },
  {
    "path": "src/main/java/com/thealgorithms/datastructures/graphs/FloydWarshall.java",
    "chars": 3797,
    "preview": "package com.thealgorithms.datastructures.graphs;\n\n/**\n * The {@code FloydWarshall} class provides an implementation of t"
  },
  {
    "path": "src/main/java/com/thealgorithms/datastructures/graphs/FordFulkerson.java",
    "chars": 2558,
    "preview": "package com.thealgorithms.datastructures.graphs;\n\nimport java.util.LinkedList;\nimport java.util.Queue;\n\n/**\n * This clas"
  },
  {
    "path": "src/main/java/com/thealgorithms/datastructures/graphs/Graphs.java",
    "chars": 4196,
    "preview": "package com.thealgorithms.datastructures.graphs;\n\nimport java.util.ArrayList;\n\nclass AdjacencyListGraph<E extends Compar"
  },
  {
    "path": "src/main/java/com/thealgorithms/datastructures/graphs/HamiltonianCycle.java",
    "chars": 3412,
    "preview": "package com.thealgorithms.datastructures.graphs;\n\nimport java.util.Arrays;\n\n/**\n * Java program to find a Hamiltonian Cy"
  },
  {
    "path": "src/main/java/com/thealgorithms/datastructures/graphs/JohnsonsAlgorithm.java",
    "chars": 7502,
    "preview": "package com.thealgorithms.datastructures.graphs;\n\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util."
  },
  {
    "path": "src/main/java/com/thealgorithms/datastructures/graphs/KahnsAlgorithm.java",
    "chars": 4857,
    "preview": "package com.thealgorithms.datastructures.graphs;\n\nimport java.util.ArrayList;\nimport java.util.HashMap;\nimport java.util"
  },
  {
    "path": "src/main/java/com/thealgorithms/datastructures/graphs/Kosaraju.java",
    "chars": 6222,
    "preview": "package com.thealgorithms.datastructures.graphs;\n\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.St"
  }
]

// ... and 1370 more files (download for full content)

About this extraction

This page contains the full source code of the TheAlgorithms/Java GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1570 files (4.4 MB), approximately 1.3M tokens, and a symbol index with 10090 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!