gitextract_7srfgao2/ ├── .babelrc ├── .editorconfig ├── .eslintrc ├── .github/ │ └── workflows/ │ └── CI.yml ├── .gitignore ├── .husky/ │ └── pre-commit ├── .npmrc ├── .nvmrc ├── BACKERS.md ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── README.ar-AR.md ├── README.de-DE.md ├── README.es-ES.md ├── README.fr-FR.md ├── README.he-IL.md ├── README.id-ID.md ├── README.it-IT.md ├── README.ja-JP.md ├── README.ko-KR.md ├── README.md ├── README.pl-PL.md ├── README.pt-BR.md ├── README.ru-RU.md ├── README.tr-TR.md ├── README.uk-UA.md ├── README.uz-UZ.md ├── README.vi-VN.md ├── README.zh-CN.md ├── README.zh-TW.md ├── jest.config.js ├── package.json └── src/ ├── algorithms/ │ ├── cryptography/ │ │ ├── caesar-cipher/ │ │ │ ├── README.md │ │ │ ├── README.ru-RU.md │ │ │ ├── __test__/ │ │ │ │ └── caesarCipher.test.js │ │ │ └── caesarCipher.js │ │ ├── hill-cipher/ │ │ │ ├── README.md │ │ │ ├── _test_/ │ │ │ │ └── hillCipher.test.js │ │ │ └── hillCipher.js │ │ ├── polynomial-hash/ │ │ │ ├── PolynomialHash.js │ │ │ ├── README.md │ │ │ ├── SimplePolynomialHash.js │ │ │ └── __test__/ │ │ │ ├── PolynomialHash.test.js │ │ │ └── SimplePolynomialHash.test.js │ │ └── rail-fence-cipher/ │ │ ├── README.md │ │ ├── __test__/ │ │ │ └── railFenceCipher.test.js │ │ └── railFenceCipher.js │ ├── graph/ │ │ ├── articulation-points/ │ │ │ ├── README.md │ │ │ ├── __test__/ │ │ │ │ └── articulationPoints.test.js │ │ │ └── articulationPoints.js │ │ ├── bellman-ford/ │ │ │ ├── README.md │ │ │ ├── __test__/ │ │ │ │ └── bellmanFord.test.js │ │ │ └── bellmanFord.js │ │ ├── breadth-first-search/ │ │ │ ├── README.md │ │ │ ├── __test__/ │ │ │ │ └── breadthFirstSearch.test.js │ │ │ └── breadthFirstSearch.js │ │ ├── bridges/ │ │ │ ├── README.md │ │ │ ├── __test__/ │ │ │ │ └── graphBridges.test.js │ │ │ └── graphBridges.js │ │ ├── depth-first-search/ │ │ │ ├── README.md │ │ │ ├── __test__/ │ │ │ │ └── depthFirstSearch.test.js │ │ │ └── depthFirstSearch.js │ │ ├── detect-cycle/ │ │ │ ├── README.md │ │ │ ├── __test__/ │ │ │ │ ├── detectDirectedCycle.test.js │ │ │ │ ├── detectUndirectedCycle.test.js │ │ │ │ └── detectUndirectedCycleUsingDisjointSet.test.js │ │ │ ├── detectDirectedCycle.js │ │ │ ├── detectUndirectedCycle.js │ │ │ └── detectUndirectedCycleUsingDisjointSet.js │ │ ├── dijkstra/ │ │ │ ├── README.de-DE.md │ │ │ ├── README.es-ES.md │ │ │ ├── README.fr-FR.md │ │ │ ├── README.he-IL.md │ │ │ ├── README.ja-JP.md │ │ │ ├── README.ko-KR.md │ │ │ ├── README.md │ │ │ ├── README.uk-UA.md │ │ │ ├── README.zh-CN.md │ │ │ ├── README.zh-TW.md │ │ │ ├── __test__/ │ │ │ │ └── dijkstra.test.js │ │ │ └── dijkstra.js │ │ ├── eulerian-path/ │ │ │ ├── README.md │ │ │ ├── __test__/ │ │ │ │ └── eulerianPath.test.js │ │ │ └── eulerianPath.js │ │ ├── floyd-warshall/ │ │ │ ├── README.md │ │ │ ├── __test__/ │ │ │ │ └── floydWarshall.test.js │ │ │ └── floydWarshall.js │ │ ├── hamiltonian-cycle/ │ │ │ ├── README.md │ │ │ ├── __test__/ │ │ │ │ └── hamiltonianCycle.test.js │ │ │ └── hamiltonianCycle.js │ │ ├── kruskal/ │ │ │ ├── README.ko-KR.md │ │ │ ├── README.md │ │ │ ├── __test__/ │ │ │ │ └── kruskal.test.js │ │ │ └── kruskal.js │ │ ├── prim/ │ │ │ ├── README.md │ │ │ ├── __test__/ │ │ │ │ └── prim.test.js │ │ │ └── prim.js │ │ ├── strongly-connected-components/ │ │ │ ├── README.md │ │ │ ├── __test__/ │ │ │ │ └── stronglyConnectedComponents.test.js │ │ │ └── stronglyConnectedComponents.js │ │ ├── topological-sorting/ │ │ │ ├── README.md │ │ │ ├── __test__/ │ │ │ │ └── topologicalSort.test.js │ │ │ └── topologicalSort.js │ │ └── travelling-salesman/ │ │ ├── README.md │ │ ├── __test__/ │ │ │ └── bfTravellingSalesman.test.js │ │ └── bfTravellingSalesman.js │ ├── image-processing/ │ │ ├── seam-carving/ │ │ │ ├── README.md │ │ │ ├── README.ru-RU.md │ │ │ ├── __tests__/ │ │ │ │ └── resizeImageWidth.node.js │ │ │ └── resizeImageWidth.js │ │ └── utils/ │ │ └── imageData.js │ ├── linked-list/ │ │ ├── reverse-traversal/ │ │ │ ├── README.md │ │ │ ├── README.pt-BR.md │ │ │ ├── README.zh-CN.md │ │ │ ├── __test__/ │ │ │ │ └── reverseTraversal.test.js │ │ │ └── reverseTraversal.js │ │ └── traversal/ │ │ ├── README.md │ │ ├── README.pt-BR.md │ │ ├── README.ru-RU.md │ │ ├── README.zh-CN.md │ │ ├── __test__/ │ │ │ └── traversal.test.js │ │ └── traversal.js │ ├── math/ │ │ ├── binary-floating-point/ │ │ │ ├── README.md │ │ │ ├── __tests__/ │ │ │ │ ├── bitsToFloat.test.js │ │ │ │ └── floatAsBinaryString.test.js │ │ │ ├── bitsToFloat.js │ │ │ ├── floatAsBinaryString.js │ │ │ └── testCases.js │ │ ├── bits/ │ │ │ ├── README.fr-FR.md │ │ │ ├── README.md │ │ │ ├── README.zh-CN.md │ │ │ ├── __test__/ │ │ │ │ ├── bitLength.test.js │ │ │ │ ├── bitsDiff.test.js │ │ │ │ ├── clearBit.test.js │ │ │ │ ├── countSetBits.test.js │ │ │ │ ├── divideByTwo.test.js │ │ │ │ ├── fullAdder.test.js │ │ │ │ ├── getBit.test.js │ │ │ │ ├── isEven.test.js │ │ │ │ ├── isPositive.test.js │ │ │ │ ├── isPowerOfTwo.test.js │ │ │ │ ├── multiply.test.js │ │ │ │ ├── multiplyByTwo.test.js │ │ │ │ ├── multiplyUnsigned.test.js │ │ │ │ ├── setBit.test.js │ │ │ │ ├── switchSign.test.js │ │ │ │ └── updateBit.test.js │ │ │ ├── bitLength.js │ │ │ ├── bitsDiff.js │ │ │ ├── clearBit.js │ │ │ ├── countSetBits.js │ │ │ ├── divideByTwo.js │ │ │ ├── fullAdder.js │ │ │ ├── getBit.js │ │ │ ├── isEven.js │ │ │ ├── isPositive.js │ │ │ ├── isPowerOfTwo.js │ │ │ ├── multiply.js │ │ │ ├── multiplyByTwo.js │ │ │ ├── multiplyUnsigned.js │ │ │ ├── setBit.js │ │ │ ├── switchSign.js │ │ │ └── updateBit.js │ │ ├── complex-number/ │ │ │ ├── ComplexNumber.js │ │ │ ├── README.fr-FR.md │ │ │ ├── README.md │ │ │ └── __test__/ │ │ │ └── ComplexNumber.test.js │ │ ├── euclidean-algorithm/ │ │ │ ├── README.fr-FR.md │ │ │ ├── README.md │ │ │ ├── __test__/ │ │ │ │ ├── euclideanAlgorithm.test.js │ │ │ │ └── euclideanAlgorithmIterative.test.js │ │ │ ├── euclideanAlgorithm.js │ │ │ └── euclideanAlgorithmIterative.js │ │ ├── euclidean-distance/ │ │ │ ├── README.md │ │ │ ├── __tests__/ │ │ │ │ └── euclideanDistance.test.js │ │ │ └── euclideanDistance.js │ │ ├── factorial/ │ │ │ ├── README.fr-FR.md │ │ │ ├── README.ka-GE.md │ │ │ ├── README.md │ │ │ ├── README.tr-TR.md │ │ │ ├── README.uk-UA.md │ │ │ ├── README.zh-CN.md │ │ │ ├── __test__/ │ │ │ │ ├── factorial.test.js │ │ │ │ └── factorialRecursive.test.js │ │ │ ├── factorial.js │ │ │ └── factorialRecursive.js │ │ ├── fast-powering/ │ │ │ ├── README.fr-FR.md │ │ │ ├── README.md │ │ │ ├── __test__/ │ │ │ │ └── fastPowering.test.js │ │ │ └── fastPowering.js │ │ ├── fibonacci/ │ │ │ ├── README.fr-FR.md │ │ │ ├── README.ka-GE.md │ │ │ ├── README.md │ │ │ ├── README.zh-CN.md │ │ │ ├── __test__/ │ │ │ │ ├── fibonacci.test.js │ │ │ │ ├── fibonacciNth.test.js │ │ │ │ └── fibonacciNthClosedForm.test.js │ │ │ ├── fibonacci.js │ │ │ ├── fibonacciNth.js │ │ │ └── fibonacciNthClosedForm.js │ │ ├── fourier-transform/ │ │ │ ├── README.fr-FR.md │ │ │ ├── README.md │ │ │ ├── __test__/ │ │ │ │ ├── FourierTester.js │ │ │ │ ├── discreteFourierTransform.test.js │ │ │ │ ├── fastFourierTransform.test.js │ │ │ │ └── inverseDiscreteFourierTransform.test.js │ │ │ ├── discreteFourierTransform.js │ │ │ ├── fastFourierTransform.js │ │ │ └── inverseDiscreteFourierTransform.js │ │ ├── horner-method/ │ │ │ ├── README.md │ │ │ ├── __test__/ │ │ │ │ ├── classicPolynome.test.js │ │ │ │ └── hornerMethod.test.js │ │ │ ├── classicPolynome.js │ │ │ └── hornerMethod.js │ │ ├── integer-partition/ │ │ │ ├── README.md │ │ │ ├── __test__/ │ │ │ │ └── integerPartition.test.js │ │ │ └── integerPartition.js │ │ ├── is-power-of-two/ │ │ │ ├── README.md │ │ │ ├── __test__/ │ │ │ │ ├── isPowerOfTwo.test.js │ │ │ │ └── isPowerOfTwoBitwise.test.js │ │ │ ├── isPowerOfTwo.js │ │ │ └── isPowerOfTwoBitwise.js │ │ ├── least-common-multiple/ │ │ │ ├── README.md │ │ │ ├── __test__/ │ │ │ │ └── leastCommonMultiple.test.js │ │ │ └── leastCommonMultiple.js │ │ ├── liu-hui/ │ │ │ ├── README.md │ │ │ ├── __test__/ │ │ │ │ └── liuHui.test.js │ │ │ └── liuHui.js │ │ ├── matrix/ │ │ │ ├── Matrix.js │ │ │ ├── README.md │ │ │ └── __tests__/ │ │ │ └── Matrix.test.js │ │ ├── pascal-triangle/ │ │ │ ├── README.md │ │ │ ├── __test__/ │ │ │ │ ├── pascalTriangle.test.js │ │ │ │ └── pascalTriangleRecursive.test.js │ │ │ ├── pascalTriangle.js │ │ │ └── pascalTriangleRecursive.js │ │ ├── primality-test/ │ │ │ ├── README.md │ │ │ ├── __test__/ │ │ │ │ └── trialDivision.test.js │ │ │ └── trialDivision.js │ │ ├── prime-factors/ │ │ │ ├── README.md │ │ │ ├── README.zh-CN.md │ │ │ ├── __test__/ │ │ │ │ └── primeFactors.test.js │ │ │ └── primeFactors.js │ │ ├── radian/ │ │ │ ├── README.md │ │ │ ├── __test__/ │ │ │ │ ├── degreeToRadian.test.js │ │ │ │ └── radianToDegree.test.js │ │ │ ├── degreeToRadian.js │ │ │ └── radianToDegree.js │ │ ├── sieve-of-eratosthenes/ │ │ │ ├── README.md │ │ │ ├── __test__/ │ │ │ │ └── sieveOfEratosthenes.test.js │ │ │ └── sieveOfEratosthenes.js │ │ └── square-root/ │ │ ├── README.md │ │ ├── __test__/ │ │ │ └── squareRoot.test.js │ │ └── squareRoot.js │ ├── ml/ │ │ ├── k-means/ │ │ │ ├── README.md │ │ │ ├── README.pt-BR.md │ │ │ ├── __test__/ │ │ │ │ └── kMeans.test.js │ │ │ └── kMeans.js │ │ └── knn/ │ │ ├── README.md │ │ ├── README.pt-BR.md │ │ ├── __test__/ │ │ │ └── knn.test.js │ │ └── kNN.js │ ├── search/ │ │ ├── binary-search/ │ │ │ ├── README.es-ES.md │ │ │ ├── README.md │ │ │ ├── README.pt-BR.md │ │ │ ├── __test__/ │ │ │ │ └── binarySearch.test.js │ │ │ └── binarySearch.js │ │ ├── interpolation-search/ │ │ │ ├── README.md │ │ │ ├── __test__/ │ │ │ │ └── interpolationSearch.test.js │ │ │ └── interpolationSearch.js │ │ ├── jump-search/ │ │ │ ├── README.md │ │ │ ├── __test__/ │ │ │ │ └── jumpSearch.test.js │ │ │ └── jumpSearch.js │ │ └── linear-search/ │ │ ├── README.md │ │ ├── README.pt-BR.md │ │ ├── __test__/ │ │ │ └── linearSearch.test.js │ │ └── linearSearch.js │ ├── sets/ │ │ ├── cartesian-product/ │ │ │ ├── README.md │ │ │ ├── __test__/ │ │ │ │ └── cartesianProduct.test.js │ │ │ └── cartesianProduct.js │ │ ├── combination-sum/ │ │ │ ├── README.md │ │ │ ├── __test__/ │ │ │ │ └── combinationSum.test.js │ │ │ └── combinationSum.js │ │ ├── combinations/ │ │ │ ├── README.md │ │ │ ├── __test__/ │ │ │ │ ├── combineWithRepetitions.test.js │ │ │ │ └── combineWithoutRepetitions.test.js │ │ │ ├── combineWithRepetitions.js │ │ │ └── combineWithoutRepetitions.js │ │ ├── fisher-yates/ │ │ │ ├── README.md │ │ │ ├── __test__/ │ │ │ │ └── fisherYates.test.js │ │ │ └── fisherYates.js │ │ ├── knapsack-problem/ │ │ │ ├── Knapsack.js │ │ │ ├── KnapsackItem.js │ │ │ ├── README.md │ │ │ └── __test__/ │ │ │ ├── Knapsack.test.js │ │ │ └── KnapsackItem.test.js │ │ ├── longest-common-subsequence/ │ │ │ ├── README.md │ │ │ ├── __test__/ │ │ │ │ ├── longestCommonSubsequence.test.js │ │ │ │ └── longestCommonSubsequenceRecursive.test.js │ │ │ ├── longestCommonSubsequence.js │ │ │ └── longestCommonSubsequenceRecursive.js │ │ ├── longest-increasing-subsequence/ │ │ │ ├── README.md │ │ │ ├── __test__/ │ │ │ │ └── dpLongestIncreasingSubsequence.test.js │ │ │ └── dpLongestIncreasingSubsequence.js │ │ ├── maximum-subarray/ │ │ │ ├── README.md │ │ │ ├── __test__/ │ │ │ │ ├── bfMaximumSubarray.test.js │ │ │ │ ├── dcMaximumSubarraySum.test.js │ │ │ │ └── dpMaximumSubarray.test.js │ │ │ ├── bfMaximumSubarray.js │ │ │ ├── dcMaximumSubarraySum.js │ │ │ └── dpMaximumSubarray.js │ │ ├── permutations/ │ │ │ ├── README.md │ │ │ ├── __test__/ │ │ │ │ ├── permutateWithRepetitions.test.js │ │ │ │ └── permutateWithoutRepetitions.test.js │ │ │ ├── permutateWithRepetitions.js │ │ │ └── permutateWithoutRepetitions.js │ │ ├── power-set/ │ │ │ ├── README.md │ │ │ ├── __test__/ │ │ │ │ ├── btPowerSet.test.js │ │ │ │ ├── bwPowerSet.test.js │ │ │ │ └── caPowerSet.test.js │ │ │ ├── btPowerSet.js │ │ │ ├── bwPowerSet.js │ │ │ └── caPowerSet.js │ │ └── shortest-common-supersequence/ │ │ ├── README.md │ │ ├── __test__/ │ │ │ └── shortestCommonSupersequence.test.js │ │ └── shortestCommonSupersequence.js │ ├── sorting/ │ │ ├── Sort.js │ │ ├── SortTester.js │ │ ├── __test__/ │ │ │ └── Sort.test.js │ │ ├── bubble-sort/ │ │ │ ├── BubbleSort.js │ │ │ ├── README.md │ │ │ ├── README.pt-BR.md │ │ │ └── __test__/ │ │ │ └── BubbleSort.test.js │ │ ├── bucket-sort/ │ │ │ ├── BucketSort.js │ │ │ ├── README.md │ │ │ └── __test__/ │ │ │ └── BucketSort.test.js │ │ ├── counting-sort/ │ │ │ ├── CountingSort.js │ │ │ ├── README.md │ │ │ ├── README.pt-br.md │ │ │ └── __test__/ │ │ │ └── CountingSort.test.js │ │ ├── heap-sort/ │ │ │ ├── HeapSort.js │ │ │ ├── README.md │ │ │ ├── README.pt-BR.md │ │ │ └── __test__/ │ │ │ └── HeapSort.test.js │ │ ├── insertion-sort/ │ │ │ ├── InsertionSort.js │ │ │ ├── README.md │ │ │ ├── README.pt-BR.md │ │ │ └── __test__/ │ │ │ └── InsertionSort.test.js │ │ ├── merge-sort/ │ │ │ ├── MergeSort.js │ │ │ ├── README.ko-KR.md │ │ │ ├── README.md │ │ │ ├── README.pt-BR.md │ │ │ └── __test__/ │ │ │ └── MergeSort.test.js │ │ ├── quick-sort/ │ │ │ ├── QuickSort.js │ │ │ ├── QuickSortInPlace.js │ │ │ ├── README.md │ │ │ ├── README.pt-BR.md │ │ │ ├── README.zh-CN.md │ │ │ └── __test__/ │ │ │ ├── QuickSort.test.js │ │ │ └── QuickSortInPlace.test.js │ │ ├── radix-sort/ │ │ │ ├── README.md │ │ │ ├── README.pt-BR.md │ │ │ ├── RadixSort.js │ │ │ └── __test__/ │ │ │ └── RadixSort.test.js │ │ ├── selection-sort/ │ │ │ ├── README.md │ │ │ ├── README.pt-BR.md │ │ │ ├── SelectionSort.js │ │ │ └── __test__/ │ │ │ └── SelectionSort.test.js │ │ └── shell-sort/ │ │ ├── README.md │ │ ├── README.pt-BR.md │ │ ├── ShellSort.js │ │ └── __test__/ │ │ └── ShellSort.test.js │ ├── stack/ │ │ └── valid-parentheses/ │ │ ├── README.md │ │ ├── __test__/ │ │ │ └── validParentheses.test.js │ │ └── validParentheses.js │ ├── statistics/ │ │ └── weighted-random/ │ │ ├── README.md │ │ ├── __test__/ │ │ │ └── weightedRandom.test.js │ │ └── weightedRandom.js │ ├── string/ │ │ ├── hamming-distance/ │ │ │ ├── README.md │ │ │ ├── __test__/ │ │ │ │ └── hammingDistance.test.js │ │ │ └── hammingDistance.js │ │ ├── knuth-morris-pratt/ │ │ │ ├── README.md │ │ │ ├── __test__/ │ │ │ │ └── knuthMorrisPratt.test.js │ │ │ └── knuthMorrisPratt.js │ │ ├── levenshtein-distance/ │ │ │ ├── README.md │ │ │ ├── __test__/ │ │ │ │ └── levenshteinDistance.test.js │ │ │ └── levenshteinDistance.js │ │ ├── longest-common-substring/ │ │ │ ├── README.md │ │ │ ├── __test__/ │ │ │ │ └── longestCommonSubstring.test.js │ │ │ └── longestCommonSubstring.js │ │ ├── palindrome/ │ │ │ ├── README.md │ │ │ ├── __test__/ │ │ │ │ └── isPalindrome.test.js │ │ │ └── isPalindrome.js │ │ ├── rabin-karp/ │ │ │ ├── README.md │ │ │ ├── __test__/ │ │ │ │ └── rabinKarp.test.js │ │ │ └── rabinKarp.js │ │ ├── regular-expression-matching/ │ │ │ ├── README.md │ │ │ ├── __test__/ │ │ │ │ └── regularExpressionMatching.test.js │ │ │ └── regularExpressionMatching.js │ │ └── z-algorithm/ │ │ ├── README.md │ │ ├── __test__/ │ │ │ └── zAlgorithm.test.js │ │ └── zAlgorithm.js │ ├── tree/ │ │ ├── breadth-first-search/ │ │ │ ├── README.md │ │ │ ├── __test__/ │ │ │ │ └── breadthFirstSearch.test.js │ │ │ └── breadthFirstSearch.js │ │ └── depth-first-search/ │ │ ├── README.md │ │ ├── __test__/ │ │ │ └── depthFirstSearch.test.js │ │ └── depthFirstSearch.js │ └── uncategorized/ │ ├── best-time-to-buy-sell-stocks/ │ │ ├── README.md │ │ ├── __tests__/ │ │ │ ├── accumulatorBestTimeToBuySellStocks.test.js │ │ │ ├── dpBestTimeToBuySellStocks.test.js │ │ │ ├── dqBestTimeToBuySellStocks.test.js │ │ │ └── peakvalleyBestTimeToBuySellStocks.test.js │ │ ├── accumulatorBestTimeToBuySellStocks.js │ │ ├── dpBestTimeToBuySellStocks.js │ │ ├── dqBestTimeToBuySellStocks.js │ │ └── peakvalleyBestTimeToBuySellStocks.js │ ├── hanoi-tower/ │ │ ├── README.md │ │ ├── __test__/ │ │ │ └── hanoiTower.test.js │ │ └── hanoiTower.js │ ├── jump-game/ │ │ ├── README.md │ │ ├── __test__/ │ │ │ ├── backtrackingJumpGame.test.js │ │ │ ├── dpBottomUpJumpGame.test.js │ │ │ ├── dpTopDownJumpGame.test.js │ │ │ └── greedyJumpGame.test.js │ │ ├── backtrackingJumpGame.js │ │ ├── dpBottomUpJumpGame.js │ │ ├── dpTopDownJumpGame.js │ │ └── greedyJumpGame.js │ ├── knight-tour/ │ │ ├── README.md │ │ ├── __test__/ │ │ │ └── knightTour.test.js │ │ └── knightTour.js │ ├── n-queens/ │ │ ├── QueenPosition.js │ │ ├── README.md │ │ ├── __test__/ │ │ │ ├── QueensPosition.test.js │ │ │ ├── nQueens.test.js │ │ │ └── nQueensBitwise.test.js │ │ ├── nQueens.js │ │ └── nQueensBitwise.js │ ├── rain-terraces/ │ │ ├── README.md │ │ ├── __test__/ │ │ │ ├── bfRainTerraces.test.js │ │ │ └── dpRainTerraces.test.js │ │ ├── bfRainTerraces.js │ │ └── dpRainTerraces.js │ ├── recursive-staircase/ │ │ ├── README.md │ │ ├── __test__/ │ │ │ ├── recursiveStaircaseBF.test.js │ │ │ ├── recursiveStaircaseDP.test.js │ │ │ ├── recursiveStaircaseIT.test.js │ │ │ └── recursiveStaircaseMEM.test.js │ │ ├── recursiveStaircaseBF.js │ │ ├── recursiveStaircaseDP.js │ │ ├── recursiveStaircaseIT.js │ │ └── recursiveStaircaseMEM.js │ ├── square-matrix-rotation/ │ │ ├── README.md │ │ ├── __test__/ │ │ │ └── squareMatrixRotation.test.js │ │ └── squareMatrixRotation.js │ └── unique-paths/ │ ├── README.md │ ├── __test__/ │ │ ├── btUniquePaths.test.js │ │ ├── dpUniquePaths.test.js │ │ └── uniquePaths.test.js │ ├── btUniquePaths.js │ ├── dpUniquePaths.js │ └── uniquePaths.js ├── data-structures/ │ ├── bloom-filter/ │ │ ├── BloomFilter.js │ │ ├── README.md │ │ ├── README.pt-BR.md │ │ ├── README.ru-RU.md │ │ ├── README.uk-UA.md │ │ └── __test__/ │ │ └── BloomFilter.test.js │ ├── disjoint-set/ │ │ ├── DisjointSet.js │ │ ├── DisjointSetAdhoc.js │ │ ├── DisjointSetItem.js │ │ ├── README.md │ │ ├── README.pt-BR.md │ │ ├── README.ru-RU.md │ │ ├── README.uk-UA.md │ │ └── __test__/ │ │ ├── DisjointSet.test.js │ │ ├── DisjointSetAdhoc.test.js │ │ └── DisjointSetItem.test.js │ ├── doubly-linked-list/ │ │ ├── DoublyLinkedList.js │ │ ├── DoublyLinkedListNode.js │ │ ├── README.es-ES.md │ │ ├── README.ja-JP.md │ │ ├── README.ko-KR.md │ │ ├── README.md │ │ ├── README.pt-BR.md │ │ ├── README.ru-RU.md │ │ ├── README.uk-UA.md │ │ ├── README.zh-CN.md │ │ └── __test__/ │ │ ├── DoublyLinkedList.test.js │ │ └── DoublyLinkedListNode.test.js │ ├── graph/ │ │ ├── Graph.js │ │ ├── GraphEdge.js │ │ ├── GraphVertex.js │ │ ├── README.fr-FR.md │ │ ├── README.md │ │ ├── README.pt-BR.md │ │ ├── README.ru-RU.md │ │ ├── README.uk-UA.md │ │ ├── README.zh-CN.md │ │ └── __test__/ │ │ ├── Graph.test.js │ │ ├── GraphEdge.test.js │ │ └── GraphVertex.test.js │ ├── hash-table/ │ │ ├── HashTable.js │ │ ├── README.fr-FR.md │ │ ├── README.ja-JP.md │ │ ├── README.ko-KR.md │ │ ├── README.md │ │ ├── README.pt-BR.md │ │ ├── README.ru-RU.md │ │ ├── README.uk-UA.md │ │ ├── README.zh-CN.md │ │ └── __test__/ │ │ └── HashTable.test.js │ ├── heap/ │ │ ├── Heap.js │ │ ├── MaxHeap.js │ │ ├── MaxHeapAdhoc.js │ │ ├── MinHeap.js │ │ ├── MinHeapAdhoc.js │ │ ├── README.fr-FR.md │ │ ├── README.ja-JP.md │ │ ├── README.ko-KR.md │ │ ├── README.md │ │ ├── README.pt-BR.md │ │ ├── README.ru-RU.md │ │ ├── README.tr-TR.md │ │ ├── README.uk-UA.md │ │ ├── README.zh-CN.md │ │ └── __test__/ │ │ ├── Heap.test.js │ │ ├── MaxHeap.test.js │ │ ├── MaxHeapAdhoc.test.js │ │ ├── MinHeap.test.js │ │ └── MinHeapAdhoc.test.js │ ├── linked-list/ │ │ ├── LinkedList.js │ │ ├── LinkedListNode.js │ │ ├── README.es-ES.md │ │ ├── README.ja-JP.md │ │ ├── README.ko-KR.md │ │ ├── README.md │ │ ├── README.pt-BR.md │ │ ├── README.ru-RU.md │ │ ├── README.tr-TR.md │ │ ├── README.uk-UA.md │ │ ├── README.vi-VN.md │ │ ├── README.zh-CN.md │ │ └── __test__/ │ │ ├── LinkedList.test.js │ │ └── LinkedListNode.test.js │ ├── lru-cache/ │ │ ├── LRUCache.js │ │ ├── LRUCacheOnMap.js │ │ ├── README.ko-KR.md │ │ ├── README.md │ │ └── __test__/ │ │ ├── LRUCache.test.js │ │ └── LRUCacheOnMap.test.js │ ├── priority-queue/ │ │ ├── PriorityQueue.js │ │ ├── README.fr-FR.md │ │ ├── README.ja-JP.md │ │ ├── README.ko-KR.md │ │ ├── README.md │ │ ├── README.pt-BR.md │ │ ├── README.ru-RU.md │ │ ├── README.uk-UA.md │ │ ├── README.zh-CN.md │ │ └── __test__/ │ │ └── PriorityQueue.test.js │ ├── queue/ │ │ ├── Queue.js │ │ ├── README.fr-FR.md │ │ ├── README.ja-JP.md │ │ ├── README.ko-KR.md │ │ ├── README.md │ │ ├── README.pt-BR.md │ │ ├── README.ru-RU.md │ │ ├── README.uk-UA.md │ │ ├── README.vi-VN.md │ │ ├── README.zh-CN.md │ │ └── __test__/ │ │ └── Queue.test.js │ ├── stack/ │ │ ├── README.fr-FR.md │ │ ├── README.ja-JP.md │ │ ├── README.ko-KR.md │ │ ├── README.md │ │ ├── README.pt-BR.md │ │ ├── README.ru-RU.md │ │ ├── README.uk-UA.md │ │ ├── README.vi-VN.md │ │ ├── README.zh-CN.md │ │ ├── Stack.js │ │ └── __test__/ │ │ └── Stack.test.js │ ├── tree/ │ │ ├── BinaryTreeNode.js │ │ ├── README.md │ │ ├── README.pt-BR.md │ │ ├── README.zh-CN.md │ │ ├── __test__/ │ │ │ └── BinaryTreeNode.test.js │ │ ├── avl-tree/ │ │ │ ├── AvlTree.js │ │ │ ├── README.md │ │ │ ├── README.pt-BR.md │ │ │ └── __test__/ │ │ │ └── AvlTRee.test.js │ │ ├── binary-search-tree/ │ │ │ ├── BinarySearchTree.js │ │ │ ├── BinarySearchTreeNode.js │ │ │ ├── README.md │ │ │ ├── README.pt-BR.md │ │ │ └── __test__/ │ │ │ ├── BinarySearchTree.test.js │ │ │ └── BinarySearchTreeNode.test.js │ │ ├── fenwick-tree/ │ │ │ ├── FenwickTree.js │ │ │ ├── README.md │ │ │ ├── README.pt-BR.md │ │ │ └── __test__/ │ │ │ └── FenwickTree.test.js │ │ ├── red-black-tree/ │ │ │ ├── README.md │ │ │ ├── README.pt-BR.md │ │ │ ├── RedBlackTree.js │ │ │ └── __test__/ │ │ │ └── RedBlackTree.test.js │ │ └── segment-tree/ │ │ ├── README.md │ │ ├── README.pt-BR.md │ │ ├── SegmentTree.js │ │ └── __test__/ │ │ └── SegmentTree.test.js │ └── trie/ │ ├── README.ko-KO.md │ ├── README.md │ ├── README.pt-BR.md │ ├── README.ru-RU.md │ ├── README.uk-UA.md │ ├── README.zh-CN.md │ ├── Trie.js │ ├── TrieNode.js │ └── __test__/ │ ├── Trie.test.js │ └── TrieNode.test.js ├── playground/ │ ├── README.md │ ├── __test__/ │ │ └── playground.test.js │ └── playground.js └── utils/ └── comparator/ ├── Comparator.js └── __test__/ └── Comparator.test.js