From bb3bc982a92ff0f667121922e659fc2b37938946 Mon Sep 17 00:00:00 2001 From: Dustin Lammiman Date: Mon, 24 Oct 2022 10:58:18 -0600 Subject: [PATCH 1/7] Add TwoSum --- DIRECTORY.md | 699 +++++++++++----------- Data-Structures/Array/TwoSum.js | 22 + Data-Structures/Array/test/TwoSum.test.js | 11 + 3 files changed, 383 insertions(+), 349 deletions(-) create mode 100644 Data-Structures/Array/TwoSum.js create mode 100644 Data-Structures/Array/test/TwoSum.test.js diff --git a/DIRECTORY.md b/DIRECTORY.md index a32addb9de..4a38a016cf 100644 --- a/DIRECTORY.md +++ b/DIRECTORY.md @@ -1,349 +1,350 @@ -* **Backtracking** - * [AllCombinationsOfSizeK](Backtracking/AllCombinationsOfSizeK.js) - * [GeneratePermutations](Backtracking/GeneratePermutations.js) - * [KnightTour](Backtracking/KnightTour.js) - * [NQueens](Backtracking/NQueens.js) - * [RatInAMaze](Backtracking/RatInAMaze.js) - * [Sudoku](Backtracking/Sudoku.js) - * [SumOfSubset](Backtracking/SumOfSubset.js) -* **Bit-Manipulation** - * [BinaryCountSetBits](Bit-Manipulation/BinaryCountSetBits.js) - * [IsPowerOfTwo](Bit-Manipulation/IsPowerOfTwo.js) - * [LogTwo](Bit-Manipulation/LogTwo.js) - * [NextPowerOfTwo](Bit-Manipulation/NextPowerOfTwo.js) - * [SetBit](Bit-Manipulation/SetBit.js) -* **Cache** - * [LFUCache](Cache/LFUCache.js) - * [LRUCache](Cache/LRUCache.js) - * [Memoize](Cache/Memoize.js) -* **Cellular-Automata** - * [ConwaysGameOfLife](Cellular-Automata/ConwaysGameOfLife.js) -* **Ciphers** - * [AffineCipher](Ciphers/AffineCipher.js) - * [Atbash](Ciphers/Atbash.js) - * [CaesarCipher](Ciphers/CaesarCipher.js) - * [KeyFinder](Ciphers/KeyFinder.js) - * [KeywordShiftedAlphabet](Ciphers/KeywordShiftedAlphabet.js) - * [ROT13](Ciphers/ROT13.js) - * [VigenereCipher](Ciphers/VigenereCipher.js) - * [XORCipher](Ciphers/XORCipher.js) -* **Conversions** - * [ArbitraryBase](Conversions/ArbitraryBase.js) - * [ArrayBufferToBase64](Conversions/ArrayBufferToBase64.js) - * [Base64ToArrayBuffer](Conversions/Base64ToArrayBuffer.js) - * [BinaryToDecimal](Conversions/BinaryToDecimal.js) - * [BinaryToHex](Conversions/BinaryToHex.js) - * [DateDayDifference](Conversions/DateDayDifference.js) - * [DateToDay](Conversions/DateToDay.js) - * [DecimalToBinary](Conversions/DecimalToBinary.js) - * [DecimalToHex](Conversions/DecimalToHex.js) - * [DecimalToOctal](Conversions/DecimalToOctal.js) - * [DecimalToRoman](Conversions/DecimalToRoman.js) - * [HexToBinary](Conversions/HexToBinary.js) - * [HexToDecimal](Conversions/HexToDecimal.js) - * [HexToRGB](Conversions/HexToRGB.js) - * [LowerCaseConversion](Conversions/LowerCaseConversion.js) - * [MeterToFeetConversion](Conversions/MeterToFeetConversion.js) - * [OctToDecimal](Conversions/OctToDecimal.js) - * [RailwayTimeConversion](Conversions/RailwayTimeConversion.js) - * [RgbHsvConversion](Conversions/RgbHsvConversion.js) - * [RGBToHex](Conversions/RGBToHex.js) - * [RomanToDecimal](Conversions/RomanToDecimal.js) - * [TemperatureConversion](Conversions/TemperatureConversion.js) - * [TitleCaseConversion](Conversions/TitleCaseConversion.js) - * [UpperCaseConversion](Conversions/UpperCaseConversion.js) -* **Data-Structures** - * **Array** - * [LocalMaximomPoint](Data-Structures/Array/LocalMaximomPoint.js) - * [NumberOfLocalMaximumPoints](Data-Structures/Array/NumberOfLocalMaximumPoints.js) - * [QuickSelect](Data-Structures/Array/QuickSelect.js) - * **Graph** - * [Graph](Data-Structures/Graph/Graph.js) - * [Graph2](Data-Structures/Graph/Graph2.js) - * [Graph3](Data-Structures/Graph/Graph3.js) - * **Heap** - * [MaxHeap](Data-Structures/Heap/MaxHeap.js) - * [MinHeap](Data-Structures/Heap/MinHeap.js) - * [MinPriorityQueue](Data-Structures/Heap/MinPriorityQueue.js) - * **Linked-List** - * [AddTwoNumbers](Data-Structures/Linked-List/AddTwoNumbers.js) - * [CycleDetection](Data-Structures/Linked-List/CycleDetection.js) - * [DoublyLinkedList](Data-Structures/Linked-List/DoublyLinkedList.js) - * [SinglyCircularLinkedList](Data-Structures/Linked-List/SinglyCircularLinkedList.js) - * [SinglyLinkedList](Data-Structures/Linked-List/SinglyLinkedList.js) - * **Queue** - * [CircularQueue](Data-Structures/Queue/CircularQueue.js) - * [Queue](Data-Structures/Queue/Queue.js) - * [QueueUsing2Stacks](Data-Structures/Queue/QueueUsing2Stacks.js) - * **Stack** - * [Stack](Data-Structures/Stack/Stack.js) - * [StackES6](Data-Structures/Stack/StackES6.js) - * **Tree** - * [AVLTree](Data-Structures/Tree/AVLTree.js) - * [BinarySearchTree](Data-Structures/Tree/BinarySearchTree.js) - * [Trie](Data-Structures/Tree/Trie.js) - * **Vectors** - * [Vector2](Data-Structures/Vectors/Vector2.js) -* **Dynamic-Programming** - * [CatalanNumbers](Dynamic-Programming/CatalanNumbers.js) - * [ClimbingStairs](Dynamic-Programming/ClimbingStairs.js) - * [CoinChange](Dynamic-Programming/CoinChange.js) - * [EditDistance](Dynamic-Programming/EditDistance.js) - * [FastFibonacciNumber](Dynamic-Programming/FastFibonacciNumber.js) - * [FibonacciNumber](Dynamic-Programming/FibonacciNumber.js) - * [FindMonthCalendar](Dynamic-Programming/FindMonthCalendar.js) - * [KadaneAlgo](Dynamic-Programming/KadaneAlgo.js) - * [LevenshteinDistance](Dynamic-Programming/LevenshteinDistance.js) - * [LongestCommonSubsequence](Dynamic-Programming/LongestCommonSubsequence.js) - * [LongestIncreasingSubsequence](Dynamic-Programming/LongestIncreasingSubsequence.js) - * [LongestPalindromicSubsequence](Dynamic-Programming/LongestPalindromicSubsequence.js) - * [LongestValidParentheses](Dynamic-Programming/LongestValidParentheses.js) - * [MaxNonAdjacentSum](Dynamic-Programming/MaxNonAdjacentSum.js) - * [MaxProductOfThree](Dynamic-Programming/MaxProductOfThree.js) - * [MinimumCostPath](Dynamic-Programming/MinimumCostPath.js) - * [NumberOfSubsetEqualToGivenSum](Dynamic-Programming/NumberOfSubsetEqualToGivenSum.js) - * [RodCutting](Dynamic-Programming/RodCutting.js) - * [Shuf](Dynamic-Programming/Shuf.js) - * [SieveOfEratosthenes](Dynamic-Programming/SieveOfEratosthenes.js) - * [UniquePaths](Dynamic-Programming/UniquePaths.js) - * **Sliding-Window** - * [LongestSubstringWithoutRepeatingCharacters](Dynamic-Programming/Sliding-Window/LongestSubstringWithoutRepeatingCharacters.js) - * [PermutationinString](Dynamic-Programming/Sliding-Window/PermutationinString.js) - * [SudokuSolver](Dynamic-Programming/SudokuSolver.js) - * [TrappingRainWater](Dynamic-Programming/TrappingRainWater.js) - * [TribonacciNumber](Dynamic-Programming/TribonacciNumber.js) - * [ZeroOneKnapsack](Dynamic-Programming/ZeroOneKnapsack.js) -* **Geometry** - * [ConvexHullGraham](Geometry/ConvexHullGraham.js) -* **Graphs** - * [BellmanFord](Graphs/BellmanFord.js) - * [BreadthFirstSearch](Graphs/BreadthFirstSearch.js) - * [BreadthFirstShortestPath](Graphs/BreadthFirstShortestPath.js) - * [ConnectedComponents](Graphs/ConnectedComponents.js) - * [Density](Graphs/Density.js) - * [DepthFirstSearchIterative](Graphs/DepthFirstSearchIterative.js) - * [DepthFirstSearchRecursive](Graphs/DepthFirstSearchRecursive.js) - * [Dijkstra](Graphs/Dijkstra.js) - * [DijkstraSmallestPath](Graphs/DijkstraSmallestPath.js) - * [FloydWarshall](Graphs/FloydWarshall.js) - * [KruskalMST](Graphs/KruskalMST.js) - * [NodeNeighbors](Graphs/NodeNeighbors.js) - * [NumberOfIslands](Graphs/NumberOfIslands.js) - * [PrimMST](Graphs/PrimMST.js) -* **Hashes** - * [SHA1](Hashes/SHA1.js) - * [SHA256](Hashes/SHA256.js) -* **Maths** - * [Abs](Maths/Abs.js) - * [AliquotSum](Maths/AliquotSum.js) - * [Area](Maths/Area.js) - * [ArithmeticGeometricMean](Maths/ArithmeticGeometricMean.js) - * [ArmstrongNumber](Maths/ArmstrongNumber.js) - * [AverageMean](Maths/AverageMean.js) - * [AverageMedian](Maths/AverageMedian.js) - * [BinaryConvert](Maths/BinaryConvert.js) - * [BinaryExponentiationIterative](Maths/BinaryExponentiationIterative.js) - * [BinaryExponentiationRecursive](Maths/BinaryExponentiationRecursive.js) - * [BinomialCoefficient](Maths/BinomialCoefficient.js) - * [BisectionMethod](Maths/BisectionMethod.js) - * [CheckKishnamurthyNumber](Maths/CheckKishnamurthyNumber.js) - * [CircularArc](Maths/CircularArc.js) - * [CollatzSequence](Maths/CollatzSequence.js) - * [Coordinate](Maths/Coordinate.js) - * [CoPrimeCheck](Maths/CoPrimeCheck.js) - * [CountNumbersDivisible](Maths/CountNumbersDivisible.js) - * [DecimalExpansion](Maths/DecimalExpansion.js) - * [DecimalIsolate](Maths/DecimalIsolate.js) - * [DegreeToRadian](Maths/DegreeToRadian.js) - * [EulerMethod](Maths/EulerMethod.js) - * [EulersTotient](Maths/EulersTotient.js) - * [EulersTotientFunction](Maths/EulersTotientFunction.js) - * [ExtendedEuclideanGCD](Maths/ExtendedEuclideanGCD.js) - * [Factorial](Maths/Factorial.js) - * [Factors](Maths/Factors.js) - * [FareyApproximation](Maths/FareyApproximation.js) - * [FermatPrimalityTest](Maths/FermatPrimalityTest.js) - * [Fibonacci](Maths/Fibonacci.js) - * [FigurateNumber](Maths/FigurateNumber.js) - * [FindHcf](Maths/FindHcf.js) - * [FindLcm](Maths/FindLcm.js) - * [FindMaxRecursion](Maths/FindMaxRecursion.js) - * [FindMin](Maths/FindMin.js) - * [FindMinIterator](Maths/FindMinIterator.js) - * [GetEuclidGCD](Maths/GetEuclidGCD.js) - * [GridGet](Maths/GridGet.js) - * [IsDivisible](Maths/IsDivisible.js) - * [IsEven](Maths/IsEven.js) - * [IsOdd](Maths/IsOdd.js) - * [isPalindromeIntegerNumber](Maths/isPalindromeIntegerNumber.js) - * [IsPronic](Maths/IsPronic.js) - * [IsSquareFree](Maths/IsSquareFree.js) - * [JugglerSequence](Maths/JugglerSequence.js) - * [LeapYear](Maths/LeapYear.js) - * [LinearSieve](Maths/LinearSieve.js) - * [LiouvilleFunction](Maths/LiouvilleFunction.js) - * [LucasSeries](Maths/LucasSeries.js) - * [Mandelbrot](Maths/Mandelbrot.js) - * [MatrixExponentiationRecursive](Maths/MatrixExponentiationRecursive.js) - * [MatrixMultiplication](Maths/MatrixMultiplication.js) - * [MeanAbsoluteDeviation](Maths/MeanAbsoluteDeviation.js) - * [MeanSquareError](Maths/MeanSquareError.js) - * [MidpointIntegration](Maths/MidpointIntegration.js) - * [MobiusFunction](Maths/MobiusFunction.js) - * [ModularBinaryExponentiationRecursive](Maths/ModularBinaryExponentiationRecursive.js) - * [NumberOfDigits](Maths/NumberOfDigits.js) - * [Palindrome](Maths/Palindrome.js) - * [PascalTriangle](Maths/PascalTriangle.js) - * [PerfectCube](Maths/PerfectCube.js) - * [PerfectNumber](Maths/PerfectNumber.js) - * [PerfectSquare](Maths/PerfectSquare.js) - * [PermutationAndCombination](Maths/PermutationAndCombination.js) - * [PiApproximationMonteCarlo](Maths/PiApproximationMonteCarlo.js) - * [Polynomial](Maths/Polynomial.js) - * [Pow](Maths/Pow.js) - * [PowLogarithmic](Maths/PowLogarithmic.js) - * [PrimeCheck](Maths/PrimeCheck.js) - * [PrimeFactors](Maths/PrimeFactors.js) - * [RadianToDegree](Maths/RadianToDegree.js) - * [ReverseNumber](Maths/ReverseNumber.js) - * [ReversePolishNotation](Maths/ReversePolishNotation.js) - * [ShorsAlgorithm](Maths/ShorsAlgorithm.js) - * [SieveOfEratosthenes](Maths/SieveOfEratosthenes.js) - * [SimpsonIntegration](Maths/SimpsonIntegration.js) - * [Softmax](Maths/Softmax.js) - * [SquareRoot](Maths/SquareRoot.js) - * [SumOfDigits](Maths/SumOfDigits.js) - * [SumOfGeometricProgression](Maths/SumOfGeometricProgression.js) - * [TwinPrime](Maths/TwinPrime.js) - * [Volume](Maths/Volume.js) - * [WhileLoopFactorial](Maths/WhileLoopFactorial.js) - * [ZellersCongruenceAlgorithm](Maths/ZellersCongruenceAlgorithm.js) -* **Navigation** - * [Haversine](Navigation/Haversine.js) -* **Project-Euler** - * [Problem001](Project-Euler/Problem001.js) - * [Problem002](Project-Euler/Problem002.js) - * [Problem003](Project-Euler/Problem003.js) - * [Problem004](Project-Euler/Problem004.js) - * [Problem005](Project-Euler/Problem005.js) - * [Problem006](Project-Euler/Problem006.js) - * [Problem007](Project-Euler/Problem007.js) - * [Problem008](Project-Euler/Problem008.js) - * [Problem009](Project-Euler/Problem009.js) - * [Problem010](Project-Euler/Problem010.js) - * [Problem011](Project-Euler/Problem011.js) - * [Problem012](Project-Euler/Problem012.js) - * [Problem013](Project-Euler/Problem013.js) - * [Problem014](Project-Euler/Problem014.js) - * [Problem015](Project-Euler/Problem015.js) - * [Problem016](Project-Euler/Problem016.js) - * [Problem017](Project-Euler/Problem017.js) - * [Problem018](Project-Euler/Problem018.js) - * [Problem020](Project-Euler/Problem020.js) - * [Problem023](Project-Euler/Problem023.js) - * [Problem025](Project-Euler/Problem025.js) - * [Problem028](Project-Euler/Problem028.js) - * [Problem044](Project-Euler/Problem044.js) -* **Recursive** - * [BinaryEquivalent](Recursive/BinaryEquivalent.js) - * [BinarySearch](Recursive/BinarySearch.js) - * [EucledianGCD](Recursive/EucledianGCD.js) - * [Factorial](Recursive/Factorial.js) - * [FibonacciNumberRecursive](Recursive/FibonacciNumberRecursive.js) - * [FloodFill](Recursive/FloodFill.js) - * [KochSnowflake](Recursive/KochSnowflake.js) - * [LetterCombination](Recursive/LetterCombination.js) - * [Palindrome](Recursive/Palindrome.js) - * [SubsequenceRecursive](Recursive/SubsequenceRecursive.js) - * [TowerOfHanoi](Recursive/TowerOfHanoi.js) -* **Search** - * [BinarySearch](Search/BinarySearch.js) - * [ExponentialSearch](Search/ExponentialSearch.js) - * [FibonacciSearch](Search/FibonacciSearch.js) - * [InterpolationSearch](Search/InterpolationSearch.js) - * [JumpSearch](Search/JumpSearch.js) - * [LinearSearch](Search/LinearSearch.js) - * [Minesweeper](Search/Minesweeper.js) - * [QuickSelectSearch](Search/QuickSelectSearch.js) - * [SlidingWindow](Search/SlidingWindow.js) - * [StringSearch](Search/StringSearch.js) - * [TernarySearch](Search/TernarySearch.js) - * [UnionFind](Search/UnionFind.js) -* **Sorts** - * [AlphaNumericalSort](Sorts/AlphaNumericalSort.js) - * [BeadSort](Sorts/BeadSort.js) - * [BinaryInsertionSort](Sorts/BinaryInsertionSort.js) - * [BogoSort](Sorts/BogoSort.js) - * [BubbleSort](Sorts/BubbleSort.js) - * [BucketSort](Sorts/BucketSort.js) - * [CocktailShakerSort](Sorts/CocktailShakerSort.js) - * [CombSort](Sorts/CombSort.js) - * [CountingSort](Sorts/CountingSort.js) - * [CycleSort](Sorts/CycleSort.js) - * [FindSecondLargestElement](Sorts/FindSecondLargestElement.js) - * [FisherYatesShuffle](Sorts/FisherYatesShuffle.js) - * [FlashSort](Sorts/FlashSort.js) - * [GnomeSort](Sorts/GnomeSort.js) - * [HeapSort](Sorts/HeapSort.js) - * [HeapSortV2](Sorts/HeapSortV2.js) - * [InsertionSort](Sorts/InsertionSort.js) - * [IntroSort](Sorts/IntroSort.js) - * [MergeSort](Sorts/MergeSort.js) - * [OddEvenSort](Sorts/OddEvenSort.js) - * [PancakeSort](Sorts/PancakeSort.js) - * [PigeonHoleSort](Sorts/PigeonHoleSort.js) - * [QuickSort](Sorts/QuickSort.js) - * [QuickSortRecursive](Sorts/QuickSortRecursive.js) - * [RadixSort](Sorts/RadixSort.js) - * [SelectionSort](Sorts/SelectionSort.js) - * [ShellSort](Sorts/ShellSort.js) - * [SimplifiedWiggleSort](Sorts/SimplifiedWiggleSort.js) - * [StoogeSort](Sorts/StoogeSort.js) - * [SwapSort](Sorts/SwapSort.js) - * [TimSort](Sorts/TimSort.js) - * [TopologicalSort](Sorts/TopologicalSort.js) -* **String** - * [AlphaNumericPalindrome](String/AlphaNumericPalindrome.js) - * [AlternativeStringArrange](String/AlternativeStringArrange.js) - * [BoyerMoore](String/BoyerMoore.js) - * [CheckAnagram](String/CheckAnagram.js) - * [CheckCamelCase](String/CheckCamelCase.js) - * [CheckExceeding](String/CheckExceeding.js) - * [CheckFlatCase](String/CheckFlatCase.js) - * [CheckKebabCase](String/CheckKebabCase.js) - * [CheckPalindrome](String/CheckPalindrome.js) - * [CheckPangram](String/CheckPangram.js) - * [CheckPascalCase](String/CheckPascalCase.js) - * [CheckRearrangePalindrome](String/CheckRearrangePalindrome.js) - * [CheckSnakeCase](String/CheckSnakeCase.js) - * [CheckWordOccurrence](String/CheckWordOccurrence.js) - * [CountSubstrings](String/CountSubstrings.js) - * [CountVowels](String/CountVowels.js) - * [CreatePermutations](String/CreatePermutations.js) - * [DiceCoefficient](String/DiceCoefficient.js) - * [FirstUniqueCharacter](String/FirstUniqueCharacter.js) - * [FormatPhoneNumber](String/FormatPhoneNumber.js) - * [GenerateGUID](String/GenerateGUID.js) - * [HammingDistance](String/HammingDistance.js) - * [IsPalindrome](String/IsPalindrome.js) - * [KMPPatternSearching](String/KMPPatternSearching.js) - * [LevenshteinDistance](String/LevenshteinDistance.js) - * [Lower](String/Lower.js) - * [MaxCharacter](String/MaxCharacter.js) - * [MaxWord](String/MaxWord.js) - * [PatternMatching](String/PatternMatching.js) - * [PermutateString](String/PermutateString.js) - * [ReverseString](String/ReverseString.js) - * [ReverseWords](String/ReverseWords.js) - * [ScrambleStrings](String/ScrambleStrings.js) - * [Upper](String/Upper.js) - * [ValidateCreditCard](String/ValidateCreditCard.js) - * [ValidateEmail](String/ValidateEmail.js) - * [ValidateUrl](String/ValidateUrl.js) -* **Timing-Functions** - * [GetMonthDays](Timing-Functions/GetMonthDays.js) - * [IntervalTimer](Timing-Functions/IntervalTimer.js) -* **Trees** - * [BreadthFirstTreeTraversal](Trees/BreadthFirstTreeTraversal.js) - * [DepthFirstSearch](Trees/DepthFirstSearch.js) - * [FenwickTree](Trees/FenwickTree.js) +- **Backtracking** + - [AllCombinationsOfSizeK](Backtracking/AllCombinationsOfSizeK.js) + - [GeneratePermutations](Backtracking/GeneratePermutations.js) + - [KnightTour](Backtracking/KnightTour.js) + - [NQueens](Backtracking/NQueens.js) + - [RatInAMaze](Backtracking/RatInAMaze.js) + - [Sudoku](Backtracking/Sudoku.js) + - [SumOfSubset](Backtracking/SumOfSubset.js) +- **Bit-Manipulation** + - [BinaryCountSetBits](Bit-Manipulation/BinaryCountSetBits.js) + - [IsPowerOfTwo](Bit-Manipulation/IsPowerOfTwo.js) + - [LogTwo](Bit-Manipulation/LogTwo.js) + - [NextPowerOfTwo](Bit-Manipulation/NextPowerOfTwo.js) + - [SetBit](Bit-Manipulation/SetBit.js) +- **Cache** + - [LFUCache](Cache/LFUCache.js) + - [LRUCache](Cache/LRUCache.js) + - [Memoize](Cache/Memoize.js) +- **Cellular-Automata** + - [ConwaysGameOfLife](Cellular-Automata/ConwaysGameOfLife.js) +- **Ciphers** + - [AffineCipher](Ciphers/AffineCipher.js) + - [Atbash](Ciphers/Atbash.js) + - [CaesarCipher](Ciphers/CaesarCipher.js) + - [KeyFinder](Ciphers/KeyFinder.js) + - [KeywordShiftedAlphabet](Ciphers/KeywordShiftedAlphabet.js) + - [ROT13](Ciphers/ROT13.js) + - [VigenereCipher](Ciphers/VigenereCipher.js) + - [XORCipher](Ciphers/XORCipher.js) +- **Conversions** + - [ArbitraryBase](Conversions/ArbitraryBase.js) + - [ArrayBufferToBase64](Conversions/ArrayBufferToBase64.js) + - [Base64ToArrayBuffer](Conversions/Base64ToArrayBuffer.js) + - [BinaryToDecimal](Conversions/BinaryToDecimal.js) + - [BinaryToHex](Conversions/BinaryToHex.js) + - [DateDayDifference](Conversions/DateDayDifference.js) + - [DateToDay](Conversions/DateToDay.js) + - [DecimalToBinary](Conversions/DecimalToBinary.js) + - [DecimalToHex](Conversions/DecimalToHex.js) + - [DecimalToOctal](Conversions/DecimalToOctal.js) + - [DecimalToRoman](Conversions/DecimalToRoman.js) + - [HexToBinary](Conversions/HexToBinary.js) + - [HexToDecimal](Conversions/HexToDecimal.js) + - [HexToRGB](Conversions/HexToRGB.js) + - [LowerCaseConversion](Conversions/LowerCaseConversion.js) + - [MeterToFeetConversion](Conversions/MeterToFeetConversion.js) + - [OctToDecimal](Conversions/OctToDecimal.js) + - [RailwayTimeConversion](Conversions/RailwayTimeConversion.js) + - [RgbHsvConversion](Conversions/RgbHsvConversion.js) + - [RGBToHex](Conversions/RGBToHex.js) + - [RomanToDecimal](Conversions/RomanToDecimal.js) + - [TemperatureConversion](Conversions/TemperatureConversion.js) + - [TitleCaseConversion](Conversions/TitleCaseConversion.js) + - [UpperCaseConversion](Conversions/UpperCaseConversion.js) +- **Data-Structures** + - **Array** + - [LocalMaximomPoint](Data-Structures/Array/LocalMaximomPoint.js) + - [NumberOfLocalMaximumPoints](Data-Structures/Array/NumberOfLocalMaximumPoints.js) + - [QuickSelect](Data-Structures/Array/QuickSelect.js) + - [TwoSum](Data-Structures/Array/TwoSum.js) + - **Graph** + - [Graph](Data-Structures/Graph/Graph.js) + - [Graph2](Data-Structures/Graph/Graph2.js) + - [Graph3](Data-Structures/Graph/Graph3.js) + - **Heap** + - [MaxHeap](Data-Structures/Heap/MaxHeap.js) + - [MinHeap](Data-Structures/Heap/MinHeap.js) + - [MinPriorityQueue](Data-Structures/Heap/MinPriorityQueue.js) + - **Linked-List** + - [AddTwoNumbers](Data-Structures/Linked-List/AddTwoNumbers.js) + - [CycleDetection](Data-Structures/Linked-List/CycleDetection.js) + - [DoublyLinkedList](Data-Structures/Linked-List/DoublyLinkedList.js) + - [SinglyCircularLinkedList](Data-Structures/Linked-List/SinglyCircularLinkedList.js) + - [SinglyLinkedList](Data-Structures/Linked-List/SinglyLinkedList.js) + - **Queue** + - [CircularQueue](Data-Structures/Queue/CircularQueue.js) + - [Queue](Data-Structures/Queue/Queue.js) + - [QueueUsing2Stacks](Data-Structures/Queue/QueueUsing2Stacks.js) + - **Stack** + - [Stack](Data-Structures/Stack/Stack.js) + - [StackES6](Data-Structures/Stack/StackES6.js) + - **Tree** + - [AVLTree](Data-Structures/Tree/AVLTree.js) + - [BinarySearchTree](Data-Structures/Tree/BinarySearchTree.js) + - [Trie](Data-Structures/Tree/Trie.js) + - **Vectors** + - [Vector2](Data-Structures/Vectors/Vector2.js) +- **Dynamic-Programming** + - [CatalanNumbers](Dynamic-Programming/CatalanNumbers.js) + - [ClimbingStairs](Dynamic-Programming/ClimbingStairs.js) + - [CoinChange](Dynamic-Programming/CoinChange.js) + - [EditDistance](Dynamic-Programming/EditDistance.js) + - [FastFibonacciNumber](Dynamic-Programming/FastFibonacciNumber.js) + - [FibonacciNumber](Dynamic-Programming/FibonacciNumber.js) + - [FindMonthCalendar](Dynamic-Programming/FindMonthCalendar.js) + - [KadaneAlgo](Dynamic-Programming/KadaneAlgo.js) + - [LevenshteinDistance](Dynamic-Programming/LevenshteinDistance.js) + - [LongestCommonSubsequence](Dynamic-Programming/LongestCommonSubsequence.js) + - [LongestIncreasingSubsequence](Dynamic-Programming/LongestIncreasingSubsequence.js) + - [LongestPalindromicSubsequence](Dynamic-Programming/LongestPalindromicSubsequence.js) + - [LongestValidParentheses](Dynamic-Programming/LongestValidParentheses.js) + - [MaxNonAdjacentSum](Dynamic-Programming/MaxNonAdjacentSum.js) + - [MaxProductOfThree](Dynamic-Programming/MaxProductOfThree.js) + - [MinimumCostPath](Dynamic-Programming/MinimumCostPath.js) + - [NumberOfSubsetEqualToGivenSum](Dynamic-Programming/NumberOfSubsetEqualToGivenSum.js) + - [RodCutting](Dynamic-Programming/RodCutting.js) + - [Shuf](Dynamic-Programming/Shuf.js) + - [SieveOfEratosthenes](Dynamic-Programming/SieveOfEratosthenes.js) + - [UniquePaths](Dynamic-Programming/UniquePaths.js) + - **Sliding-Window** + - [LongestSubstringWithoutRepeatingCharacters](Dynamic-Programming/Sliding-Window/LongestSubstringWithoutRepeatingCharacters.js) + - [PermutationinString](Dynamic-Programming/Sliding-Window/PermutationinString.js) + - [SudokuSolver](Dynamic-Programming/SudokuSolver.js) + - [TrappingRainWater](Dynamic-Programming/TrappingRainWater.js) + - [TribonacciNumber](Dynamic-Programming/TribonacciNumber.js) + - [ZeroOneKnapsack](Dynamic-Programming/ZeroOneKnapsack.js) +- **Geometry** + - [ConvexHullGraham](Geometry/ConvexHullGraham.js) +- **Graphs** + - [BellmanFord](Graphs/BellmanFord.js) + - [BreadthFirstSearch](Graphs/BreadthFirstSearch.js) + - [BreadthFirstShortestPath](Graphs/BreadthFirstShortestPath.js) + - [ConnectedComponents](Graphs/ConnectedComponents.js) + - [Density](Graphs/Density.js) + - [DepthFirstSearchIterative](Graphs/DepthFirstSearchIterative.js) + - [DepthFirstSearchRecursive](Graphs/DepthFirstSearchRecursive.js) + - [Dijkstra](Graphs/Dijkstra.js) + - [DijkstraSmallestPath](Graphs/DijkstraSmallestPath.js) + - [FloydWarshall](Graphs/FloydWarshall.js) + - [KruskalMST](Graphs/KruskalMST.js) + - [NodeNeighbors](Graphs/NodeNeighbors.js) + - [NumberOfIslands](Graphs/NumberOfIslands.js) + - [PrimMST](Graphs/PrimMST.js) +- **Hashes** + - [SHA1](Hashes/SHA1.js) + - [SHA256](Hashes/SHA256.js) +- **Maths** + - [Abs](Maths/Abs.js) + - [AliquotSum](Maths/AliquotSum.js) + - [Area](Maths/Area.js) + - [ArithmeticGeometricMean](Maths/ArithmeticGeometricMean.js) + - [ArmstrongNumber](Maths/ArmstrongNumber.js) + - [AverageMean](Maths/AverageMean.js) + - [AverageMedian](Maths/AverageMedian.js) + - [BinaryConvert](Maths/BinaryConvert.js) + - [BinaryExponentiationIterative](Maths/BinaryExponentiationIterative.js) + - [BinaryExponentiationRecursive](Maths/BinaryExponentiationRecursive.js) + - [BinomialCoefficient](Maths/BinomialCoefficient.js) + - [BisectionMethod](Maths/BisectionMethod.js) + - [CheckKishnamurthyNumber](Maths/CheckKishnamurthyNumber.js) + - [CircularArc](Maths/CircularArc.js) + - [CollatzSequence](Maths/CollatzSequence.js) + - [Coordinate](Maths/Coordinate.js) + - [CoPrimeCheck](Maths/CoPrimeCheck.js) + - [CountNumbersDivisible](Maths/CountNumbersDivisible.js) + - [DecimalExpansion](Maths/DecimalExpansion.js) + - [DecimalIsolate](Maths/DecimalIsolate.js) + - [DegreeToRadian](Maths/DegreeToRadian.js) + - [EulerMethod](Maths/EulerMethod.js) + - [EulersTotient](Maths/EulersTotient.js) + - [EulersTotientFunction](Maths/EulersTotientFunction.js) + - [ExtendedEuclideanGCD](Maths/ExtendedEuclideanGCD.js) + - [Factorial](Maths/Factorial.js) + - [Factors](Maths/Factors.js) + - [FareyApproximation](Maths/FareyApproximation.js) + - [FermatPrimalityTest](Maths/FermatPrimalityTest.js) + - [Fibonacci](Maths/Fibonacci.js) + - [FigurateNumber](Maths/FigurateNumber.js) + - [FindHcf](Maths/FindHcf.js) + - [FindLcm](Maths/FindLcm.js) + - [FindMaxRecursion](Maths/FindMaxRecursion.js) + - [FindMin](Maths/FindMin.js) + - [FindMinIterator](Maths/FindMinIterator.js) + - [GetEuclidGCD](Maths/GetEuclidGCD.js) + - [GridGet](Maths/GridGet.js) + - [IsDivisible](Maths/IsDivisible.js) + - [IsEven](Maths/IsEven.js) + - [IsOdd](Maths/IsOdd.js) + - [isPalindromeIntegerNumber](Maths/isPalindromeIntegerNumber.js) + - [IsPronic](Maths/IsPronic.js) + - [IsSquareFree](Maths/IsSquareFree.js) + - [JugglerSequence](Maths/JugglerSequence.js) + - [LeapYear](Maths/LeapYear.js) + - [LinearSieve](Maths/LinearSieve.js) + - [LiouvilleFunction](Maths/LiouvilleFunction.js) + - [LucasSeries](Maths/LucasSeries.js) + - [Mandelbrot](Maths/Mandelbrot.js) + - [MatrixExponentiationRecursive](Maths/MatrixExponentiationRecursive.js) + - [MatrixMultiplication](Maths/MatrixMultiplication.js) + - [MeanAbsoluteDeviation](Maths/MeanAbsoluteDeviation.js) + - [MeanSquareError](Maths/MeanSquareError.js) + - [MidpointIntegration](Maths/MidpointIntegration.js) + - [MobiusFunction](Maths/MobiusFunction.js) + - [ModularBinaryExponentiationRecursive](Maths/ModularBinaryExponentiationRecursive.js) + - [NumberOfDigits](Maths/NumberOfDigits.js) + - [Palindrome](Maths/Palindrome.js) + - [PascalTriangle](Maths/PascalTriangle.js) + - [PerfectCube](Maths/PerfectCube.js) + - [PerfectNumber](Maths/PerfectNumber.js) + - [PerfectSquare](Maths/PerfectSquare.js) + - [PermutationAndCombination](Maths/PermutationAndCombination.js) + - [PiApproximationMonteCarlo](Maths/PiApproximationMonteCarlo.js) + - [Polynomial](Maths/Polynomial.js) + - [Pow](Maths/Pow.js) + - [PowLogarithmic](Maths/PowLogarithmic.js) + - [PrimeCheck](Maths/PrimeCheck.js) + - [PrimeFactors](Maths/PrimeFactors.js) + - [RadianToDegree](Maths/RadianToDegree.js) + - [ReverseNumber](Maths/ReverseNumber.js) + - [ReversePolishNotation](Maths/ReversePolishNotation.js) + - [ShorsAlgorithm](Maths/ShorsAlgorithm.js) + - [SieveOfEratosthenes](Maths/SieveOfEratosthenes.js) + - [SimpsonIntegration](Maths/SimpsonIntegration.js) + - [Softmax](Maths/Softmax.js) + - [SquareRoot](Maths/SquareRoot.js) + - [SumOfDigits](Maths/SumOfDigits.js) + - [SumOfGeometricProgression](Maths/SumOfGeometricProgression.js) + - [TwinPrime](Maths/TwinPrime.js) + - [Volume](Maths/Volume.js) + - [WhileLoopFactorial](Maths/WhileLoopFactorial.js) + - [ZellersCongruenceAlgorithm](Maths/ZellersCongruenceAlgorithm.js) +- **Navigation** + - [Haversine](Navigation/Haversine.js) +- **Project-Euler** + - [Problem001](Project-Euler/Problem001.js) + - [Problem002](Project-Euler/Problem002.js) + - [Problem003](Project-Euler/Problem003.js) + - [Problem004](Project-Euler/Problem004.js) + - [Problem005](Project-Euler/Problem005.js) + - [Problem006](Project-Euler/Problem006.js) + - [Problem007](Project-Euler/Problem007.js) + - [Problem008](Project-Euler/Problem008.js) + - [Problem009](Project-Euler/Problem009.js) + - [Problem010](Project-Euler/Problem010.js) + - [Problem011](Project-Euler/Problem011.js) + - [Problem012](Project-Euler/Problem012.js) + - [Problem013](Project-Euler/Problem013.js) + - [Problem014](Project-Euler/Problem014.js) + - [Problem015](Project-Euler/Problem015.js) + - [Problem016](Project-Euler/Problem016.js) + - [Problem017](Project-Euler/Problem017.js) + - [Problem018](Project-Euler/Problem018.js) + - [Problem020](Project-Euler/Problem020.js) + - [Problem023](Project-Euler/Problem023.js) + - [Problem025](Project-Euler/Problem025.js) + - [Problem028](Project-Euler/Problem028.js) + - [Problem044](Project-Euler/Problem044.js) +- **Recursive** + - [BinaryEquivalent](Recursive/BinaryEquivalent.js) + - [BinarySearch](Recursive/BinarySearch.js) + - [EucledianGCD](Recursive/EucledianGCD.js) + - [Factorial](Recursive/Factorial.js) + - [FibonacciNumberRecursive](Recursive/FibonacciNumberRecursive.js) + - [FloodFill](Recursive/FloodFill.js) + - [KochSnowflake](Recursive/KochSnowflake.js) + - [LetterCombination](Recursive/LetterCombination.js) + - [Palindrome](Recursive/Palindrome.js) + - [SubsequenceRecursive](Recursive/SubsequenceRecursive.js) + - [TowerOfHanoi](Recursive/TowerOfHanoi.js) +- **Search** + - [BinarySearch](Search/BinarySearch.js) + - [ExponentialSearch](Search/ExponentialSearch.js) + - [FibonacciSearch](Search/FibonacciSearch.js) + - [InterpolationSearch](Search/InterpolationSearch.js) + - [JumpSearch](Search/JumpSearch.js) + - [LinearSearch](Search/LinearSearch.js) + - [Minesweeper](Search/Minesweeper.js) + - [QuickSelectSearch](Search/QuickSelectSearch.js) + - [SlidingWindow](Search/SlidingWindow.js) + - [StringSearch](Search/StringSearch.js) + - [TernarySearch](Search/TernarySearch.js) + - [UnionFind](Search/UnionFind.js) +- **Sorts** + - [AlphaNumericalSort](Sorts/AlphaNumericalSort.js) + - [BeadSort](Sorts/BeadSort.js) + - [BinaryInsertionSort](Sorts/BinaryInsertionSort.js) + - [BogoSort](Sorts/BogoSort.js) + - [BubbleSort](Sorts/BubbleSort.js) + - [BucketSort](Sorts/BucketSort.js) + - [CocktailShakerSort](Sorts/CocktailShakerSort.js) + - [CombSort](Sorts/CombSort.js) + - [CountingSort](Sorts/CountingSort.js) + - [CycleSort](Sorts/CycleSort.js) + - [FindSecondLargestElement](Sorts/FindSecondLargestElement.js) + - [FisherYatesShuffle](Sorts/FisherYatesShuffle.js) + - [FlashSort](Sorts/FlashSort.js) + - [GnomeSort](Sorts/GnomeSort.js) + - [HeapSort](Sorts/HeapSort.js) + - [HeapSortV2](Sorts/HeapSortV2.js) + - [InsertionSort](Sorts/InsertionSort.js) + - [IntroSort](Sorts/IntroSort.js) + - [MergeSort](Sorts/MergeSort.js) + - [OddEvenSort](Sorts/OddEvenSort.js) + - [PancakeSort](Sorts/PancakeSort.js) + - [PigeonHoleSort](Sorts/PigeonHoleSort.js) + - [QuickSort](Sorts/QuickSort.js) + - [QuickSortRecursive](Sorts/QuickSortRecursive.js) + - [RadixSort](Sorts/RadixSort.js) + - [SelectionSort](Sorts/SelectionSort.js) + - [ShellSort](Sorts/ShellSort.js) + - [SimplifiedWiggleSort](Sorts/SimplifiedWiggleSort.js) + - [StoogeSort](Sorts/StoogeSort.js) + - [SwapSort](Sorts/SwapSort.js) + - [TimSort](Sorts/TimSort.js) + - [TopologicalSort](Sorts/TopologicalSort.js) +- **String** + - [AlphaNumericPalindrome](String/AlphaNumericPalindrome.js) + - [AlternativeStringArrange](String/AlternativeStringArrange.js) + - [BoyerMoore](String/BoyerMoore.js) + - [CheckAnagram](String/CheckAnagram.js) + - [CheckCamelCase](String/CheckCamelCase.js) + - [CheckExceeding](String/CheckExceeding.js) + - [CheckFlatCase](String/CheckFlatCase.js) + - [CheckKebabCase](String/CheckKebabCase.js) + - [CheckPalindrome](String/CheckPalindrome.js) + - [CheckPangram](String/CheckPangram.js) + - [CheckPascalCase](String/CheckPascalCase.js) + - [CheckRearrangePalindrome](String/CheckRearrangePalindrome.js) + - [CheckSnakeCase](String/CheckSnakeCase.js) + - [CheckWordOccurrence](String/CheckWordOccurrence.js) + - [CountSubstrings](String/CountSubstrings.js) + - [CountVowels](String/CountVowels.js) + - [CreatePermutations](String/CreatePermutations.js) + - [DiceCoefficient](String/DiceCoefficient.js) + - [FirstUniqueCharacter](String/FirstUniqueCharacter.js) + - [FormatPhoneNumber](String/FormatPhoneNumber.js) + - [GenerateGUID](String/GenerateGUID.js) + - [HammingDistance](String/HammingDistance.js) + - [IsPalindrome](String/IsPalindrome.js) + - [KMPPatternSearching](String/KMPPatternSearching.js) + - [LevenshteinDistance](String/LevenshteinDistance.js) + - [Lower](String/Lower.js) + - [MaxCharacter](String/MaxCharacter.js) + - [MaxWord](String/MaxWord.js) + - [PatternMatching](String/PatternMatching.js) + - [PermutateString](String/PermutateString.js) + - [ReverseString](String/ReverseString.js) + - [ReverseWords](String/ReverseWords.js) + - [ScrambleStrings](String/ScrambleStrings.js) + - [Upper](String/Upper.js) + - [ValidateCreditCard](String/ValidateCreditCard.js) + - [ValidateEmail](String/ValidateEmail.js) + - [ValidateUrl](String/ValidateUrl.js) +- **Timing-Functions** + - [GetMonthDays](Timing-Functions/GetMonthDays.js) + - [IntervalTimer](Timing-Functions/IntervalTimer.js) +- **Trees** + - [BreadthFirstTreeTraversal](Trees/BreadthFirstTreeTraversal.js) + - [DepthFirstSearch](Trees/DepthFirstSearch.js) + - [FenwickTree](Trees/FenwickTree.js) diff --git a/Data-Structures/Array/TwoSum.js b/Data-Structures/Array/TwoSum.js new file mode 100644 index 0000000000..de8178e8b1 --- /dev/null +++ b/Data-Structures/Array/TwoSum.js @@ -0,0 +1,22 @@ +// Given an array of integers, return indices of the two numbers such that they add up to +// a specific target. + +// You may assume that each input would have exactly one solution, and you may not use the +// same element twice. + +// Example: +// Given nums = [2, 7, 11, 15], target = 9, + +// Because nums[0] + nums[1] = 2 + 7 = 9, +// return [0, 1]. + +const TwoSum = (nums, target) => { + for (let i = 0; i < nums.length; i++) { + for (let j = i + 1; j < nums.length; j++) { + if (nums[i] + nums[j] === target) { + return [i, j] + } + } + } +} +export { TwoSum } diff --git a/Data-Structures/Array/test/TwoSum.test.js b/Data-Structures/Array/test/TwoSum.test.js new file mode 100644 index 0000000000..2e157880e8 --- /dev/null +++ b/Data-Structures/Array/test/TwoSum.test.js @@ -0,0 +1,11 @@ +import { TwoSum } from '../TwoSum' + +describe('TwoSum tests', () => { + it('check that a variety of inputs return the correct answer', () => { + expect(TwoSum([2, 7, 11, 15], 9)).toEqual([0, 1]) + expect(TwoSum([2, 7, 11, 15, 6], 8)).toEqual([0, 4]) + expect(TwoSum([1, 0, 5, 7, 3, 4], 6)).toEqual([0, 2]) + expect(TwoSum([0, 8, 3, 1, 2, 7, 3], 6)).toEqual([2, 6]) + expect(TwoSum([0, 5, 4, 2, 6, 7, 9, 1], 3)).toEqual([3, 7]) + }) +}) From 7791b7a10927cbc3709bd7da9f11114c9eb78f72 Mon Sep 17 00:00:00 2001 From: Dustin Lammiman Date: Mon, 24 Oct 2022 11:05:32 -0600 Subject: [PATCH 2/7] Add link to explanation --- Data-Structures/Array/TwoSum.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Data-Structures/Array/TwoSum.js b/Data-Structures/Array/TwoSum.js index de8178e8b1..17affdea20 100644 --- a/Data-Structures/Array/TwoSum.js +++ b/Data-Structures/Array/TwoSum.js @@ -1,3 +1,5 @@ +// https://leetcode.com/problems/two-sum/ + // Given an array of integers, return indices of the two numbers such that they add up to // a specific target. From 424b23547b10af9da1a1cfbc5469df10e09b8067 Mon Sep 17 00:00:00 2001 From: Dustin Lammiman Date: Mon, 24 Oct 2022 11:07:21 -0600 Subject: [PATCH 3/7] Fix formatting change on DIRECTORY.md --- DIRECTORY.md | 700 +++++++++++++++++++++++++-------------------------- 1 file changed, 350 insertions(+), 350 deletions(-) diff --git a/DIRECTORY.md b/DIRECTORY.md index 4a38a016cf..b1ddcf9c09 100644 --- a/DIRECTORY.md +++ b/DIRECTORY.md @@ -1,350 +1,350 @@ -- **Backtracking** - - [AllCombinationsOfSizeK](Backtracking/AllCombinationsOfSizeK.js) - - [GeneratePermutations](Backtracking/GeneratePermutations.js) - - [KnightTour](Backtracking/KnightTour.js) - - [NQueens](Backtracking/NQueens.js) - - [RatInAMaze](Backtracking/RatInAMaze.js) - - [Sudoku](Backtracking/Sudoku.js) - - [SumOfSubset](Backtracking/SumOfSubset.js) -- **Bit-Manipulation** - - [BinaryCountSetBits](Bit-Manipulation/BinaryCountSetBits.js) - - [IsPowerOfTwo](Bit-Manipulation/IsPowerOfTwo.js) - - [LogTwo](Bit-Manipulation/LogTwo.js) - - [NextPowerOfTwo](Bit-Manipulation/NextPowerOfTwo.js) - - [SetBit](Bit-Manipulation/SetBit.js) -- **Cache** - - [LFUCache](Cache/LFUCache.js) - - [LRUCache](Cache/LRUCache.js) - - [Memoize](Cache/Memoize.js) -- **Cellular-Automata** - - [ConwaysGameOfLife](Cellular-Automata/ConwaysGameOfLife.js) -- **Ciphers** - - [AffineCipher](Ciphers/AffineCipher.js) - - [Atbash](Ciphers/Atbash.js) - - [CaesarCipher](Ciphers/CaesarCipher.js) - - [KeyFinder](Ciphers/KeyFinder.js) - - [KeywordShiftedAlphabet](Ciphers/KeywordShiftedAlphabet.js) - - [ROT13](Ciphers/ROT13.js) - - [VigenereCipher](Ciphers/VigenereCipher.js) - - [XORCipher](Ciphers/XORCipher.js) -- **Conversions** - - [ArbitraryBase](Conversions/ArbitraryBase.js) - - [ArrayBufferToBase64](Conversions/ArrayBufferToBase64.js) - - [Base64ToArrayBuffer](Conversions/Base64ToArrayBuffer.js) - - [BinaryToDecimal](Conversions/BinaryToDecimal.js) - - [BinaryToHex](Conversions/BinaryToHex.js) - - [DateDayDifference](Conversions/DateDayDifference.js) - - [DateToDay](Conversions/DateToDay.js) - - [DecimalToBinary](Conversions/DecimalToBinary.js) - - [DecimalToHex](Conversions/DecimalToHex.js) - - [DecimalToOctal](Conversions/DecimalToOctal.js) - - [DecimalToRoman](Conversions/DecimalToRoman.js) - - [HexToBinary](Conversions/HexToBinary.js) - - [HexToDecimal](Conversions/HexToDecimal.js) - - [HexToRGB](Conversions/HexToRGB.js) - - [LowerCaseConversion](Conversions/LowerCaseConversion.js) - - [MeterToFeetConversion](Conversions/MeterToFeetConversion.js) - - [OctToDecimal](Conversions/OctToDecimal.js) - - [RailwayTimeConversion](Conversions/RailwayTimeConversion.js) - - [RgbHsvConversion](Conversions/RgbHsvConversion.js) - - [RGBToHex](Conversions/RGBToHex.js) - - [RomanToDecimal](Conversions/RomanToDecimal.js) - - [TemperatureConversion](Conversions/TemperatureConversion.js) - - [TitleCaseConversion](Conversions/TitleCaseConversion.js) - - [UpperCaseConversion](Conversions/UpperCaseConversion.js) -- **Data-Structures** - - **Array** - - [LocalMaximomPoint](Data-Structures/Array/LocalMaximomPoint.js) - - [NumberOfLocalMaximumPoints](Data-Structures/Array/NumberOfLocalMaximumPoints.js) - - [QuickSelect](Data-Structures/Array/QuickSelect.js) - - [TwoSum](Data-Structures/Array/TwoSum.js) - - **Graph** - - [Graph](Data-Structures/Graph/Graph.js) - - [Graph2](Data-Structures/Graph/Graph2.js) - - [Graph3](Data-Structures/Graph/Graph3.js) - - **Heap** - - [MaxHeap](Data-Structures/Heap/MaxHeap.js) - - [MinHeap](Data-Structures/Heap/MinHeap.js) - - [MinPriorityQueue](Data-Structures/Heap/MinPriorityQueue.js) - - **Linked-List** - - [AddTwoNumbers](Data-Structures/Linked-List/AddTwoNumbers.js) - - [CycleDetection](Data-Structures/Linked-List/CycleDetection.js) - - [DoublyLinkedList](Data-Structures/Linked-List/DoublyLinkedList.js) - - [SinglyCircularLinkedList](Data-Structures/Linked-List/SinglyCircularLinkedList.js) - - [SinglyLinkedList](Data-Structures/Linked-List/SinglyLinkedList.js) - - **Queue** - - [CircularQueue](Data-Structures/Queue/CircularQueue.js) - - [Queue](Data-Structures/Queue/Queue.js) - - [QueueUsing2Stacks](Data-Structures/Queue/QueueUsing2Stacks.js) - - **Stack** - - [Stack](Data-Structures/Stack/Stack.js) - - [StackES6](Data-Structures/Stack/StackES6.js) - - **Tree** - - [AVLTree](Data-Structures/Tree/AVLTree.js) - - [BinarySearchTree](Data-Structures/Tree/BinarySearchTree.js) - - [Trie](Data-Structures/Tree/Trie.js) - - **Vectors** - - [Vector2](Data-Structures/Vectors/Vector2.js) -- **Dynamic-Programming** - - [CatalanNumbers](Dynamic-Programming/CatalanNumbers.js) - - [ClimbingStairs](Dynamic-Programming/ClimbingStairs.js) - - [CoinChange](Dynamic-Programming/CoinChange.js) - - [EditDistance](Dynamic-Programming/EditDistance.js) - - [FastFibonacciNumber](Dynamic-Programming/FastFibonacciNumber.js) - - [FibonacciNumber](Dynamic-Programming/FibonacciNumber.js) - - [FindMonthCalendar](Dynamic-Programming/FindMonthCalendar.js) - - [KadaneAlgo](Dynamic-Programming/KadaneAlgo.js) - - [LevenshteinDistance](Dynamic-Programming/LevenshteinDistance.js) - - [LongestCommonSubsequence](Dynamic-Programming/LongestCommonSubsequence.js) - - [LongestIncreasingSubsequence](Dynamic-Programming/LongestIncreasingSubsequence.js) - - [LongestPalindromicSubsequence](Dynamic-Programming/LongestPalindromicSubsequence.js) - - [LongestValidParentheses](Dynamic-Programming/LongestValidParentheses.js) - - [MaxNonAdjacentSum](Dynamic-Programming/MaxNonAdjacentSum.js) - - [MaxProductOfThree](Dynamic-Programming/MaxProductOfThree.js) - - [MinimumCostPath](Dynamic-Programming/MinimumCostPath.js) - - [NumberOfSubsetEqualToGivenSum](Dynamic-Programming/NumberOfSubsetEqualToGivenSum.js) - - [RodCutting](Dynamic-Programming/RodCutting.js) - - [Shuf](Dynamic-Programming/Shuf.js) - - [SieveOfEratosthenes](Dynamic-Programming/SieveOfEratosthenes.js) - - [UniquePaths](Dynamic-Programming/UniquePaths.js) - - **Sliding-Window** - - [LongestSubstringWithoutRepeatingCharacters](Dynamic-Programming/Sliding-Window/LongestSubstringWithoutRepeatingCharacters.js) - - [PermutationinString](Dynamic-Programming/Sliding-Window/PermutationinString.js) - - [SudokuSolver](Dynamic-Programming/SudokuSolver.js) - - [TrappingRainWater](Dynamic-Programming/TrappingRainWater.js) - - [TribonacciNumber](Dynamic-Programming/TribonacciNumber.js) - - [ZeroOneKnapsack](Dynamic-Programming/ZeroOneKnapsack.js) -- **Geometry** - - [ConvexHullGraham](Geometry/ConvexHullGraham.js) -- **Graphs** - - [BellmanFord](Graphs/BellmanFord.js) - - [BreadthFirstSearch](Graphs/BreadthFirstSearch.js) - - [BreadthFirstShortestPath](Graphs/BreadthFirstShortestPath.js) - - [ConnectedComponents](Graphs/ConnectedComponents.js) - - [Density](Graphs/Density.js) - - [DepthFirstSearchIterative](Graphs/DepthFirstSearchIterative.js) - - [DepthFirstSearchRecursive](Graphs/DepthFirstSearchRecursive.js) - - [Dijkstra](Graphs/Dijkstra.js) - - [DijkstraSmallestPath](Graphs/DijkstraSmallestPath.js) - - [FloydWarshall](Graphs/FloydWarshall.js) - - [KruskalMST](Graphs/KruskalMST.js) - - [NodeNeighbors](Graphs/NodeNeighbors.js) - - [NumberOfIslands](Graphs/NumberOfIslands.js) - - [PrimMST](Graphs/PrimMST.js) -- **Hashes** - - [SHA1](Hashes/SHA1.js) - - [SHA256](Hashes/SHA256.js) -- **Maths** - - [Abs](Maths/Abs.js) - - [AliquotSum](Maths/AliquotSum.js) - - [Area](Maths/Area.js) - - [ArithmeticGeometricMean](Maths/ArithmeticGeometricMean.js) - - [ArmstrongNumber](Maths/ArmstrongNumber.js) - - [AverageMean](Maths/AverageMean.js) - - [AverageMedian](Maths/AverageMedian.js) - - [BinaryConvert](Maths/BinaryConvert.js) - - [BinaryExponentiationIterative](Maths/BinaryExponentiationIterative.js) - - [BinaryExponentiationRecursive](Maths/BinaryExponentiationRecursive.js) - - [BinomialCoefficient](Maths/BinomialCoefficient.js) - - [BisectionMethod](Maths/BisectionMethod.js) - - [CheckKishnamurthyNumber](Maths/CheckKishnamurthyNumber.js) - - [CircularArc](Maths/CircularArc.js) - - [CollatzSequence](Maths/CollatzSequence.js) - - [Coordinate](Maths/Coordinate.js) - - [CoPrimeCheck](Maths/CoPrimeCheck.js) - - [CountNumbersDivisible](Maths/CountNumbersDivisible.js) - - [DecimalExpansion](Maths/DecimalExpansion.js) - - [DecimalIsolate](Maths/DecimalIsolate.js) - - [DegreeToRadian](Maths/DegreeToRadian.js) - - [EulerMethod](Maths/EulerMethod.js) - - [EulersTotient](Maths/EulersTotient.js) - - [EulersTotientFunction](Maths/EulersTotientFunction.js) - - [ExtendedEuclideanGCD](Maths/ExtendedEuclideanGCD.js) - - [Factorial](Maths/Factorial.js) - - [Factors](Maths/Factors.js) - - [FareyApproximation](Maths/FareyApproximation.js) - - [FermatPrimalityTest](Maths/FermatPrimalityTest.js) - - [Fibonacci](Maths/Fibonacci.js) - - [FigurateNumber](Maths/FigurateNumber.js) - - [FindHcf](Maths/FindHcf.js) - - [FindLcm](Maths/FindLcm.js) - - [FindMaxRecursion](Maths/FindMaxRecursion.js) - - [FindMin](Maths/FindMin.js) - - [FindMinIterator](Maths/FindMinIterator.js) - - [GetEuclidGCD](Maths/GetEuclidGCD.js) - - [GridGet](Maths/GridGet.js) - - [IsDivisible](Maths/IsDivisible.js) - - [IsEven](Maths/IsEven.js) - - [IsOdd](Maths/IsOdd.js) - - [isPalindromeIntegerNumber](Maths/isPalindromeIntegerNumber.js) - - [IsPronic](Maths/IsPronic.js) - - [IsSquareFree](Maths/IsSquareFree.js) - - [JugglerSequence](Maths/JugglerSequence.js) - - [LeapYear](Maths/LeapYear.js) - - [LinearSieve](Maths/LinearSieve.js) - - [LiouvilleFunction](Maths/LiouvilleFunction.js) - - [LucasSeries](Maths/LucasSeries.js) - - [Mandelbrot](Maths/Mandelbrot.js) - - [MatrixExponentiationRecursive](Maths/MatrixExponentiationRecursive.js) - - [MatrixMultiplication](Maths/MatrixMultiplication.js) - - [MeanAbsoluteDeviation](Maths/MeanAbsoluteDeviation.js) - - [MeanSquareError](Maths/MeanSquareError.js) - - [MidpointIntegration](Maths/MidpointIntegration.js) - - [MobiusFunction](Maths/MobiusFunction.js) - - [ModularBinaryExponentiationRecursive](Maths/ModularBinaryExponentiationRecursive.js) - - [NumberOfDigits](Maths/NumberOfDigits.js) - - [Palindrome](Maths/Palindrome.js) - - [PascalTriangle](Maths/PascalTriangle.js) - - [PerfectCube](Maths/PerfectCube.js) - - [PerfectNumber](Maths/PerfectNumber.js) - - [PerfectSquare](Maths/PerfectSquare.js) - - [PermutationAndCombination](Maths/PermutationAndCombination.js) - - [PiApproximationMonteCarlo](Maths/PiApproximationMonteCarlo.js) - - [Polynomial](Maths/Polynomial.js) - - [Pow](Maths/Pow.js) - - [PowLogarithmic](Maths/PowLogarithmic.js) - - [PrimeCheck](Maths/PrimeCheck.js) - - [PrimeFactors](Maths/PrimeFactors.js) - - [RadianToDegree](Maths/RadianToDegree.js) - - [ReverseNumber](Maths/ReverseNumber.js) - - [ReversePolishNotation](Maths/ReversePolishNotation.js) - - [ShorsAlgorithm](Maths/ShorsAlgorithm.js) - - [SieveOfEratosthenes](Maths/SieveOfEratosthenes.js) - - [SimpsonIntegration](Maths/SimpsonIntegration.js) - - [Softmax](Maths/Softmax.js) - - [SquareRoot](Maths/SquareRoot.js) - - [SumOfDigits](Maths/SumOfDigits.js) - - [SumOfGeometricProgression](Maths/SumOfGeometricProgression.js) - - [TwinPrime](Maths/TwinPrime.js) - - [Volume](Maths/Volume.js) - - [WhileLoopFactorial](Maths/WhileLoopFactorial.js) - - [ZellersCongruenceAlgorithm](Maths/ZellersCongruenceAlgorithm.js) -- **Navigation** - - [Haversine](Navigation/Haversine.js) -- **Project-Euler** - - [Problem001](Project-Euler/Problem001.js) - - [Problem002](Project-Euler/Problem002.js) - - [Problem003](Project-Euler/Problem003.js) - - [Problem004](Project-Euler/Problem004.js) - - [Problem005](Project-Euler/Problem005.js) - - [Problem006](Project-Euler/Problem006.js) - - [Problem007](Project-Euler/Problem007.js) - - [Problem008](Project-Euler/Problem008.js) - - [Problem009](Project-Euler/Problem009.js) - - [Problem010](Project-Euler/Problem010.js) - - [Problem011](Project-Euler/Problem011.js) - - [Problem012](Project-Euler/Problem012.js) - - [Problem013](Project-Euler/Problem013.js) - - [Problem014](Project-Euler/Problem014.js) - - [Problem015](Project-Euler/Problem015.js) - - [Problem016](Project-Euler/Problem016.js) - - [Problem017](Project-Euler/Problem017.js) - - [Problem018](Project-Euler/Problem018.js) - - [Problem020](Project-Euler/Problem020.js) - - [Problem023](Project-Euler/Problem023.js) - - [Problem025](Project-Euler/Problem025.js) - - [Problem028](Project-Euler/Problem028.js) - - [Problem044](Project-Euler/Problem044.js) -- **Recursive** - - [BinaryEquivalent](Recursive/BinaryEquivalent.js) - - [BinarySearch](Recursive/BinarySearch.js) - - [EucledianGCD](Recursive/EucledianGCD.js) - - [Factorial](Recursive/Factorial.js) - - [FibonacciNumberRecursive](Recursive/FibonacciNumberRecursive.js) - - [FloodFill](Recursive/FloodFill.js) - - [KochSnowflake](Recursive/KochSnowflake.js) - - [LetterCombination](Recursive/LetterCombination.js) - - [Palindrome](Recursive/Palindrome.js) - - [SubsequenceRecursive](Recursive/SubsequenceRecursive.js) - - [TowerOfHanoi](Recursive/TowerOfHanoi.js) -- **Search** - - [BinarySearch](Search/BinarySearch.js) - - [ExponentialSearch](Search/ExponentialSearch.js) - - [FibonacciSearch](Search/FibonacciSearch.js) - - [InterpolationSearch](Search/InterpolationSearch.js) - - [JumpSearch](Search/JumpSearch.js) - - [LinearSearch](Search/LinearSearch.js) - - [Minesweeper](Search/Minesweeper.js) - - [QuickSelectSearch](Search/QuickSelectSearch.js) - - [SlidingWindow](Search/SlidingWindow.js) - - [StringSearch](Search/StringSearch.js) - - [TernarySearch](Search/TernarySearch.js) - - [UnionFind](Search/UnionFind.js) -- **Sorts** - - [AlphaNumericalSort](Sorts/AlphaNumericalSort.js) - - [BeadSort](Sorts/BeadSort.js) - - [BinaryInsertionSort](Sorts/BinaryInsertionSort.js) - - [BogoSort](Sorts/BogoSort.js) - - [BubbleSort](Sorts/BubbleSort.js) - - [BucketSort](Sorts/BucketSort.js) - - [CocktailShakerSort](Sorts/CocktailShakerSort.js) - - [CombSort](Sorts/CombSort.js) - - [CountingSort](Sorts/CountingSort.js) - - [CycleSort](Sorts/CycleSort.js) - - [FindSecondLargestElement](Sorts/FindSecondLargestElement.js) - - [FisherYatesShuffle](Sorts/FisherYatesShuffle.js) - - [FlashSort](Sorts/FlashSort.js) - - [GnomeSort](Sorts/GnomeSort.js) - - [HeapSort](Sorts/HeapSort.js) - - [HeapSortV2](Sorts/HeapSortV2.js) - - [InsertionSort](Sorts/InsertionSort.js) - - [IntroSort](Sorts/IntroSort.js) - - [MergeSort](Sorts/MergeSort.js) - - [OddEvenSort](Sorts/OddEvenSort.js) - - [PancakeSort](Sorts/PancakeSort.js) - - [PigeonHoleSort](Sorts/PigeonHoleSort.js) - - [QuickSort](Sorts/QuickSort.js) - - [QuickSortRecursive](Sorts/QuickSortRecursive.js) - - [RadixSort](Sorts/RadixSort.js) - - [SelectionSort](Sorts/SelectionSort.js) - - [ShellSort](Sorts/ShellSort.js) - - [SimplifiedWiggleSort](Sorts/SimplifiedWiggleSort.js) - - [StoogeSort](Sorts/StoogeSort.js) - - [SwapSort](Sorts/SwapSort.js) - - [TimSort](Sorts/TimSort.js) - - [TopologicalSort](Sorts/TopologicalSort.js) -- **String** - - [AlphaNumericPalindrome](String/AlphaNumericPalindrome.js) - - [AlternativeStringArrange](String/AlternativeStringArrange.js) - - [BoyerMoore](String/BoyerMoore.js) - - [CheckAnagram](String/CheckAnagram.js) - - [CheckCamelCase](String/CheckCamelCase.js) - - [CheckExceeding](String/CheckExceeding.js) - - [CheckFlatCase](String/CheckFlatCase.js) - - [CheckKebabCase](String/CheckKebabCase.js) - - [CheckPalindrome](String/CheckPalindrome.js) - - [CheckPangram](String/CheckPangram.js) - - [CheckPascalCase](String/CheckPascalCase.js) - - [CheckRearrangePalindrome](String/CheckRearrangePalindrome.js) - - [CheckSnakeCase](String/CheckSnakeCase.js) - - [CheckWordOccurrence](String/CheckWordOccurrence.js) - - [CountSubstrings](String/CountSubstrings.js) - - [CountVowels](String/CountVowels.js) - - [CreatePermutations](String/CreatePermutations.js) - - [DiceCoefficient](String/DiceCoefficient.js) - - [FirstUniqueCharacter](String/FirstUniqueCharacter.js) - - [FormatPhoneNumber](String/FormatPhoneNumber.js) - - [GenerateGUID](String/GenerateGUID.js) - - [HammingDistance](String/HammingDistance.js) - - [IsPalindrome](String/IsPalindrome.js) - - [KMPPatternSearching](String/KMPPatternSearching.js) - - [LevenshteinDistance](String/LevenshteinDistance.js) - - [Lower](String/Lower.js) - - [MaxCharacter](String/MaxCharacter.js) - - [MaxWord](String/MaxWord.js) - - [PatternMatching](String/PatternMatching.js) - - [PermutateString](String/PermutateString.js) - - [ReverseString](String/ReverseString.js) - - [ReverseWords](String/ReverseWords.js) - - [ScrambleStrings](String/ScrambleStrings.js) - - [Upper](String/Upper.js) - - [ValidateCreditCard](String/ValidateCreditCard.js) - - [ValidateEmail](String/ValidateEmail.js) - - [ValidateUrl](String/ValidateUrl.js) -- **Timing-Functions** - - [GetMonthDays](Timing-Functions/GetMonthDays.js) - - [IntervalTimer](Timing-Functions/IntervalTimer.js) -- **Trees** - - [BreadthFirstTreeTraversal](Trees/BreadthFirstTreeTraversal.js) - - [DepthFirstSearch](Trees/DepthFirstSearch.js) - - [FenwickTree](Trees/FenwickTree.js) +* **Backtracking** + * [AllCombinationsOfSizeK](Backtracking/AllCombinationsOfSizeK.js) + * [GeneratePermutations](Backtracking/GeneratePermutations.js) + * [KnightTour](Backtracking/KnightTour.js) + * [NQueens](Backtracking/NQueens.js) + * [RatInAMaze](Backtracking/RatInAMaze.js) + * [Sudoku](Backtracking/Sudoku.js) + * [SumOfSubset](Backtracking/SumOfSubset.js) +* **Bit-Manipulation** + * [BinaryCountSetBits](Bit-Manipulation/BinaryCountSetBits.js) + * [IsPowerOfTwo](Bit-Manipulation/IsPowerOfTwo.js) + * [LogTwo](Bit-Manipulation/LogTwo.js) + * [NextPowerOfTwo](Bit-Manipulation/NextPowerOfTwo.js) + * [SetBit](Bit-Manipulation/SetBit.js) +* **Cache** + * [LFUCache](Cache/LFUCache.js) + * [LRUCache](Cache/LRUCache.js) + * [Memoize](Cache/Memoize.js) +* **Cellular-Automata** + * [ConwaysGameOfLife](Cellular-Automata/ConwaysGameOfLife.js) +* **Ciphers** + * [AffineCipher](Ciphers/AffineCipher.js) + * [Atbash](Ciphers/Atbash.js) + * [CaesarCipher](Ciphers/CaesarCipher.js) + * [KeyFinder](Ciphers/KeyFinder.js) + * [KeywordShiftedAlphabet](Ciphers/KeywordShiftedAlphabet.js) + * [ROT13](Ciphers/ROT13.js) + * [VigenereCipher](Ciphers/VigenereCipher.js) + * [XORCipher](Ciphers/XORCipher.js) +* **Conversions** + * [ArbitraryBase](Conversions/ArbitraryBase.js) + * [ArrayBufferToBase64](Conversions/ArrayBufferToBase64.js) + * [Base64ToArrayBuffer](Conversions/Base64ToArrayBuffer.js) + * [BinaryToDecimal](Conversions/BinaryToDecimal.js) + * [BinaryToHex](Conversions/BinaryToHex.js) + * [DateDayDifference](Conversions/DateDayDifference.js) + * [DateToDay](Conversions/DateToDay.js) + * [DecimalToBinary](Conversions/DecimalToBinary.js) + * [DecimalToHex](Conversions/DecimalToHex.js) + * [DecimalToOctal](Conversions/DecimalToOctal.js) + * [DecimalToRoman](Conversions/DecimalToRoman.js) + * [HexToBinary](Conversions/HexToBinary.js) + * [HexToDecimal](Conversions/HexToDecimal.js) + * [HexToRGB](Conversions/HexToRGB.js) + * [LowerCaseConversion](Conversions/LowerCaseConversion.js) + * [MeterToFeetConversion](Conversions/MeterToFeetConversion.js) + * [OctToDecimal](Conversions/OctToDecimal.js) + * [RailwayTimeConversion](Conversions/RailwayTimeConversion.js) + * [RgbHsvConversion](Conversions/RgbHsvConversion.js) + * [RGBToHex](Conversions/RGBToHex.js) + * [RomanToDecimal](Conversions/RomanToDecimal.js) + * [TemperatureConversion](Conversions/TemperatureConversion.js) + * [TitleCaseConversion](Conversions/TitleCaseConversion.js) + * [UpperCaseConversion](Conversions/UpperCaseConversion.js) +* **Data-Structures** + * **Array** + * [LocalMaximomPoint](Data-Structures/Array/LocalMaximomPoint.js) + * [NumberOfLocalMaximumPoints](Data-Structures/Array/NumberOfLocalMaximumPoints.js) + * [QuickSelect](Data-Structures/Array/QuickSelect.js) + * [TwoSum](Data-Structures/Array/TwoSum.js) + * **Graph** + * [Graph](Data-Structures/Graph/Graph.js) + * [Graph2](Data-Structures/Graph/Graph2.js) + * [Graph3](Data-Structures/Graph/Graph3.js) + * **Heap** + * [MaxHeap](Data-Structures/Heap/MaxHeap.js) + * [MinHeap](Data-Structures/Heap/MinHeap.js) + * [MinPriorityQueue](Data-Structures/Heap/MinPriorityQueue.js) + * **Linked-List** + * [AddTwoNumbers](Data-Structures/Linked-List/AddTwoNumbers.js) + * [CycleDetection](Data-Structures/Linked-List/CycleDetection.js) + * [DoublyLinkedList](Data-Structures/Linked-List/DoublyLinkedList.js) + * [SinglyCircularLinkedList](Data-Structures/Linked-List/SinglyCircularLinkedList.js) + * [SinglyLinkedList](Data-Structures/Linked-List/SinglyLinkedList.js) + * **Queue** + * [CircularQueue](Data-Structures/Queue/CircularQueue.js) + * [Queue](Data-Structures/Queue/Queue.js) + * [QueueUsing2Stacks](Data-Structures/Queue/QueueUsing2Stacks.js) + * **Stack** + * [Stack](Data-Structures/Stack/Stack.js) + * [StackES6](Data-Structures/Stack/StackES6.js) + * **Tree** + * [AVLTree](Data-Structures/Tree/AVLTree.js) + * [BinarySearchTree](Data-Structures/Tree/BinarySearchTree.js) + * [Trie](Data-Structures/Tree/Trie.js) + * **Vectors** + * [Vector2](Data-Structures/Vectors/Vector2.js) +* **Dynamic-Programming** + * [CatalanNumbers](Dynamic-Programming/CatalanNumbers.js) + * [ClimbingStairs](Dynamic-Programming/ClimbingStairs.js) + * [CoinChange](Dynamic-Programming/CoinChange.js) + * [EditDistance](Dynamic-Programming/EditDistance.js) + * [FastFibonacciNumber](Dynamic-Programming/FastFibonacciNumber.js) + * [FibonacciNumber](Dynamic-Programming/FibonacciNumber.js) + * [FindMonthCalendar](Dynamic-Programming/FindMonthCalendar.js) + * [KadaneAlgo](Dynamic-Programming/KadaneAlgo.js) + * [LevenshteinDistance](Dynamic-Programming/LevenshteinDistance.js) + * [LongestCommonSubsequence](Dynamic-Programming/LongestCommonSubsequence.js) + * [LongestIncreasingSubsequence](Dynamic-Programming/LongestIncreasingSubsequence.js) + * [LongestPalindromicSubsequence](Dynamic-Programming/LongestPalindromicSubsequence.js) + * [LongestValidParentheses](Dynamic-Programming/LongestValidParentheses.js) + * [MaxNonAdjacentSum](Dynamic-Programming/MaxNonAdjacentSum.js) + * [MaxProductOfThree](Dynamic-Programming/MaxProductOfThree.js) + * [MinimumCostPath](Dynamic-Programming/MinimumCostPath.js) + * [NumberOfSubsetEqualToGivenSum](Dynamic-Programming/NumberOfSubsetEqualToGivenSum.js) + * [RodCutting](Dynamic-Programming/RodCutting.js) + * [Shuf](Dynamic-Programming/Shuf.js) + * [SieveOfEratosthenes](Dynamic-Programming/SieveOfEratosthenes.js) + * [UniquePaths](Dynamic-Programming/UniquePaths.js) + * **Sliding-Window** + * [LongestSubstringWithoutRepeatingCharacters](Dynamic-Programming/Sliding-Window/LongestSubstringWithoutRepeatingCharacters.js) + * [PermutationinString](Dynamic-Programming/Sliding-Window/PermutationinString.js) + * [SudokuSolver](Dynamic-Programming/SudokuSolver.js) + * [TrappingRainWater](Dynamic-Programming/TrappingRainWater.js) + * [TribonacciNumber](Dynamic-Programming/TribonacciNumber.js) + * [ZeroOneKnapsack](Dynamic-Programming/ZeroOneKnapsack.js) +* **Geometry** + * [ConvexHullGraham](Geometry/ConvexHullGraham.js) +* **Graphs** + * [BellmanFord](Graphs/BellmanFord.js) + * [BreadthFirstSearch](Graphs/BreadthFirstSearch.js) + * [BreadthFirstShortestPath](Graphs/BreadthFirstShortestPath.js) + * [ConnectedComponents](Graphs/ConnectedComponents.js) + * [Density](Graphs/Density.js) + * [DepthFirstSearchIterative](Graphs/DepthFirstSearchIterative.js) + * [DepthFirstSearchRecursive](Graphs/DepthFirstSearchRecursive.js) + * [Dijkstra](Graphs/Dijkstra.js) + * [DijkstraSmallestPath](Graphs/DijkstraSmallestPath.js) + * [FloydWarshall](Graphs/FloydWarshall.js) + * [KruskalMST](Graphs/KruskalMST.js) + * [NodeNeighbors](Graphs/NodeNeighbors.js) + * [NumberOfIslands](Graphs/NumberOfIslands.js) + * [PrimMST](Graphs/PrimMST.js) +* **Hashes** + * [SHA1](Hashes/SHA1.js) + * [SHA256](Hashes/SHA256.js) +* **Maths** + * [Abs](Maths/Abs.js) + * [AliquotSum](Maths/AliquotSum.js) + * [Area](Maths/Area.js) + * [ArithmeticGeometricMean](Maths/ArithmeticGeometricMean.js) + * [ArmstrongNumber](Maths/ArmstrongNumber.js) + * [AverageMean](Maths/AverageMean.js) + * [AverageMedian](Maths/AverageMedian.js) + * [BinaryConvert](Maths/BinaryConvert.js) + * [BinaryExponentiationIterative](Maths/BinaryExponentiationIterative.js) + * [BinaryExponentiationRecursive](Maths/BinaryExponentiationRecursive.js) + * [BinomialCoefficient](Maths/BinomialCoefficient.js) + * [BisectionMethod](Maths/BisectionMethod.js) + * [CheckKishnamurthyNumber](Maths/CheckKishnamurthyNumber.js) + * [CircularArc](Maths/CircularArc.js) + * [CollatzSequence](Maths/CollatzSequence.js) + * [Coordinate](Maths/Coordinate.js) + * [CoPrimeCheck](Maths/CoPrimeCheck.js) + * [CountNumbersDivisible](Maths/CountNumbersDivisible.js) + * [DecimalExpansion](Maths/DecimalExpansion.js) + * [DecimalIsolate](Maths/DecimalIsolate.js) + * [DegreeToRadian](Maths/DegreeToRadian.js) + * [EulerMethod](Maths/EulerMethod.js) + * [EulersTotient](Maths/EulersTotient.js) + * [EulersTotientFunction](Maths/EulersTotientFunction.js) + * [ExtendedEuclideanGCD](Maths/ExtendedEuclideanGCD.js) + * [Factorial](Maths/Factorial.js) + * [Factors](Maths/Factors.js) + * [FareyApproximation](Maths/FareyApproximation.js) + * [FermatPrimalityTest](Maths/FermatPrimalityTest.js) + * [Fibonacci](Maths/Fibonacci.js) + * [FigurateNumber](Maths/FigurateNumber.js) + * [FindHcf](Maths/FindHcf.js) + * [FindLcm](Maths/FindLcm.js) + * [FindMaxRecursion](Maths/FindMaxRecursion.js) + * [FindMin](Maths/FindMin.js) + * [FindMinIterator](Maths/FindMinIterator.js) + * [GetEuclidGCD](Maths/GetEuclidGCD.js) + * [GridGet](Maths/GridGet.js) + * [IsDivisible](Maths/IsDivisible.js) + * [IsEven](Maths/IsEven.js) + * [IsOdd](Maths/IsOdd.js) + * [isPalindromeIntegerNumber](Maths/isPalindromeIntegerNumber.js) + * [IsPronic](Maths/IsPronic.js) + * [IsSquareFree](Maths/IsSquareFree.js) + * [JugglerSequence](Maths/JugglerSequence.js) + * [LeapYear](Maths/LeapYear.js) + * [LinearSieve](Maths/LinearSieve.js) + * [LiouvilleFunction](Maths/LiouvilleFunction.js) + * [LucasSeries](Maths/LucasSeries.js) + * [Mandelbrot](Maths/Mandelbrot.js) + * [MatrixExponentiationRecursive](Maths/MatrixExponentiationRecursive.js) + * [MatrixMultiplication](Maths/MatrixMultiplication.js) + * [MeanAbsoluteDeviation](Maths/MeanAbsoluteDeviation.js) + * [MeanSquareError](Maths/MeanSquareError.js) + * [MidpointIntegration](Maths/MidpointIntegration.js) + * [MobiusFunction](Maths/MobiusFunction.js) + * [ModularBinaryExponentiationRecursive](Maths/ModularBinaryExponentiationRecursive.js) + * [NumberOfDigits](Maths/NumberOfDigits.js) + * [Palindrome](Maths/Palindrome.js) + * [PascalTriangle](Maths/PascalTriangle.js) + * [PerfectCube](Maths/PerfectCube.js) + * [PerfectNumber](Maths/PerfectNumber.js) + * [PerfectSquare](Maths/PerfectSquare.js) + * [PermutationAndCombination](Maths/PermutationAndCombination.js) + * [PiApproximationMonteCarlo](Maths/PiApproximationMonteCarlo.js) + * [Polynomial](Maths/Polynomial.js) + * [Pow](Maths/Pow.js) + * [PowLogarithmic](Maths/PowLogarithmic.js) + * [PrimeCheck](Maths/PrimeCheck.js) + * [PrimeFactors](Maths/PrimeFactors.js) + * [RadianToDegree](Maths/RadianToDegree.js) + * [ReverseNumber](Maths/ReverseNumber.js) + * [ReversePolishNotation](Maths/ReversePolishNotation.js) + * [ShorsAlgorithm](Maths/ShorsAlgorithm.js) + * [SieveOfEratosthenes](Maths/SieveOfEratosthenes.js) + * [SimpsonIntegration](Maths/SimpsonIntegration.js) + * [Softmax](Maths/Softmax.js) + * [SquareRoot](Maths/SquareRoot.js) + * [SumOfDigits](Maths/SumOfDigits.js) + * [SumOfGeometricProgression](Maths/SumOfGeometricProgression.js) + * [TwinPrime](Maths/TwinPrime.js) + * [Volume](Maths/Volume.js) + * [WhileLoopFactorial](Maths/WhileLoopFactorial.js) + * [ZellersCongruenceAlgorithm](Maths/ZellersCongruenceAlgorithm.js) +* **Navigation** + * [Haversine](Navigation/Haversine.js) +* **Project-Euler** + * [Problem001](Project-Euler/Problem001.js) + * [Problem002](Project-Euler/Problem002.js) + * [Problem003](Project-Euler/Problem003.js) + * [Problem004](Project-Euler/Problem004.js) + * [Problem005](Project-Euler/Problem005.js) + * [Problem006](Project-Euler/Problem006.js) + * [Problem007](Project-Euler/Problem007.js) + * [Problem008](Project-Euler/Problem008.js) + * [Problem009](Project-Euler/Problem009.js) + * [Problem010](Project-Euler/Problem010.js) + * [Problem011](Project-Euler/Problem011.js) + * [Problem012](Project-Euler/Problem012.js) + * [Problem013](Project-Euler/Problem013.js) + * [Problem014](Project-Euler/Problem014.js) + * [Problem015](Project-Euler/Problem015.js) + * [Problem016](Project-Euler/Problem016.js) + * [Problem017](Project-Euler/Problem017.js) + * [Problem018](Project-Euler/Problem018.js) + * [Problem020](Project-Euler/Problem020.js) + * [Problem023](Project-Euler/Problem023.js) + * [Problem025](Project-Euler/Problem025.js) + * [Problem028](Project-Euler/Problem028.js) + * [Problem044](Project-Euler/Problem044.js) +* **Recursive** + * [BinaryEquivalent](Recursive/BinaryEquivalent.js) + * [BinarySearch](Recursive/BinarySearch.js) + * [EucledianGCD](Recursive/EucledianGCD.js) + * [Factorial](Recursive/Factorial.js) + * [FibonacciNumberRecursive](Recursive/FibonacciNumberRecursive.js) + * [FloodFill](Recursive/FloodFill.js) + * [KochSnowflake](Recursive/KochSnowflake.js) + * [LetterCombination](Recursive/LetterCombination.js) + * [Palindrome](Recursive/Palindrome.js) + * [SubsequenceRecursive](Recursive/SubsequenceRecursive.js) + * [TowerOfHanoi](Recursive/TowerOfHanoi.js) +* **Search** + * [BinarySearch](Search/BinarySearch.js) + * [ExponentialSearch](Search/ExponentialSearch.js) + * [FibonacciSearch](Search/FibonacciSearch.js) + * [InterpolationSearch](Search/InterpolationSearch.js) + * [JumpSearch](Search/JumpSearch.js) + * [LinearSearch](Search/LinearSearch.js) + * [Minesweeper](Search/Minesweeper.js) + * [QuickSelectSearch](Search/QuickSelectSearch.js) + * [SlidingWindow](Search/SlidingWindow.js) + * [StringSearch](Search/StringSearch.js) + * [TernarySearch](Search/TernarySearch.js) + * [UnionFind](Search/UnionFind.js) +* **Sorts** + * [AlphaNumericalSort](Sorts/AlphaNumericalSort.js) + * [BeadSort](Sorts/BeadSort.js) + * [BinaryInsertionSort](Sorts/BinaryInsertionSort.js) + * [BogoSort](Sorts/BogoSort.js) + * [BubbleSort](Sorts/BubbleSort.js) + * [BucketSort](Sorts/BucketSort.js) + * [CocktailShakerSort](Sorts/CocktailShakerSort.js) + * [CombSort](Sorts/CombSort.js) + * [CountingSort](Sorts/CountingSort.js) + * [CycleSort](Sorts/CycleSort.js) + * [FindSecondLargestElement](Sorts/FindSecondLargestElement.js) + * [FisherYatesShuffle](Sorts/FisherYatesShuffle.js) + * [FlashSort](Sorts/FlashSort.js) + * [GnomeSort](Sorts/GnomeSort.js) + * [HeapSort](Sorts/HeapSort.js) + * [HeapSortV2](Sorts/HeapSortV2.js) + * [InsertionSort](Sorts/InsertionSort.js) + * [IntroSort](Sorts/IntroSort.js) + * [MergeSort](Sorts/MergeSort.js) + * [OddEvenSort](Sorts/OddEvenSort.js) + * [PancakeSort](Sorts/PancakeSort.js) + * [PigeonHoleSort](Sorts/PigeonHoleSort.js) + * [QuickSort](Sorts/QuickSort.js) + * [QuickSortRecursive](Sorts/QuickSortRecursive.js) + * [RadixSort](Sorts/RadixSort.js) + * [SelectionSort](Sorts/SelectionSort.js) + * [ShellSort](Sorts/ShellSort.js) + * [SimplifiedWiggleSort](Sorts/SimplifiedWiggleSort.js) + * [StoogeSort](Sorts/StoogeSort.js) + * [SwapSort](Sorts/SwapSort.js) + * [TimSort](Sorts/TimSort.js) + * [TopologicalSort](Sorts/TopologicalSort.js) +* **String** + * [AlphaNumericPalindrome](String/AlphaNumericPalindrome.js) + * [AlternativeStringArrange](String/AlternativeStringArrange.js) + * [BoyerMoore](String/BoyerMoore.js) + * [CheckAnagram](String/CheckAnagram.js) + * [CheckCamelCase](String/CheckCamelCase.js) + * [CheckExceeding](String/CheckExceeding.js) + * [CheckFlatCase](String/CheckFlatCase.js) + * [CheckKebabCase](String/CheckKebabCase.js) + * [CheckPalindrome](String/CheckPalindrome.js) + * [CheckPangram](String/CheckPangram.js) + * [CheckPascalCase](String/CheckPascalCase.js) + * [CheckRearrangePalindrome](String/CheckRearrangePalindrome.js) + * [CheckSnakeCase](String/CheckSnakeCase.js) + * [CheckWordOccurrence](String/CheckWordOccurrence.js) + * [CountSubstrings](String/CountSubstrings.js) + * [CountVowels](String/CountVowels.js) + * [CreatePermutations](String/CreatePermutations.js) + * [DiceCoefficient](String/DiceCoefficient.js) + * [FirstUniqueCharacter](String/FirstUniqueCharacter.js) + * [FormatPhoneNumber](String/FormatPhoneNumber.js) + * [GenerateGUID](String/GenerateGUID.js) + * [HammingDistance](String/HammingDistance.js) + * [IsPalindrome](String/IsPalindrome.js) + * [KMPPatternSearching](String/KMPPatternSearching.js) + * [LevenshteinDistance](String/LevenshteinDistance.js) + * [Lower](String/Lower.js) + * [MaxCharacter](String/MaxCharacter.js) + * [MaxWord](String/MaxWord.js) + * [PatternMatching](String/PatternMatching.js) + * [PermutateString](String/PermutateString.js) + * [ReverseString](String/ReverseString.js) + * [ReverseWords](String/ReverseWords.js) + * [ScrambleStrings](String/ScrambleStrings.js) + * [Upper](String/Upper.js) + * [ValidateCreditCard](String/ValidateCreditCard.js) + * [ValidateEmail](String/ValidateEmail.js) + * [ValidateUrl](String/ValidateUrl.js) +* **Timing-Functions** + * [GetMonthDays](Timing-Functions/GetMonthDays.js) + * [IntervalTimer](Timing-Functions/IntervalTimer.js) +* **Trees** + * [BreadthFirstTreeTraversal](Trees/BreadthFirstTreeTraversal.js) + * [DepthFirstSearch](Trees/DepthFirstSearch.js) + * [FenwickTree](Trees/FenwickTree.js) From c7b07ce3f25c8717860a812efbe49b995bc940e0 Mon Sep 17 00:00:00 2001 From: Dustin Lammiman Date: Mon, 24 Oct 2022 11:38:46 -0600 Subject: [PATCH 4/7] Fix comments --- Data-Structures/Array/TwoSum.js | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/Data-Structures/Array/TwoSum.js b/Data-Structures/Array/TwoSum.js index 17affdea20..e7ea651462 100644 --- a/Data-Structures/Array/TwoSum.js +++ b/Data-Structures/Array/TwoSum.js @@ -1,17 +1,14 @@ -// https://leetcode.com/problems/two-sum/ - -// Given an array of integers, return indices of the two numbers such that they add up to -// a specific target. - -// You may assume that each input would have exactly one solution, and you may not use the -// same element twice. - -// Example: -// Given nums = [2, 7, 11, 15], target = 9, - -// Because nums[0] + nums[1] = 2 + 7 = 9, -// return [0, 1]. - +/** https://leetcode.com/problems/two-sum/ +* Given an array of integers, return indices of the two numbers such that they add up to +* a specific target. +* You may assume that each input would have exactly one solution, and you may not use the +* same element twice. +* Example: +* Given nums = [2, 7, 11, 15], target = 9, +* Because nums[0] + nums[1] = 2 + 7 = 9, +* return [0, 1]. +* +* This is a basic brute force approach */ const TwoSum = (nums, target) => { for (let i = 0; i < nums.length; i++) { for (let j = i + 1; j < nums.length; j++) { From 22f1ccba086b3c5abd6456fd6f35bc0ae819abe2 Mon Sep 17 00:00:00 2001 From: Dustin Lammiman Date: Mon, 24 Oct 2022 11:41:36 -0600 Subject: [PATCH 5/7] Simplify tests --- Data-Structures/Array/test/TwoSum.test.js | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/Data-Structures/Array/test/TwoSum.test.js b/Data-Structures/Array/test/TwoSum.test.js index 2e157880e8..4b0f40db58 100644 --- a/Data-Structures/Array/test/TwoSum.test.js +++ b/Data-Structures/Array/test/TwoSum.test.js @@ -1,11 +1,9 @@ import { TwoSum } from '../TwoSum' -describe('TwoSum tests', () => { - it('check that a variety of inputs return the correct answer', () => { - expect(TwoSum([2, 7, 11, 15], 9)).toEqual([0, 1]) - expect(TwoSum([2, 7, 11, 15, 6], 8)).toEqual([0, 4]) - expect(TwoSum([1, 0, 5, 7, 3, 4], 6)).toEqual([0, 2]) - expect(TwoSum([0, 8, 3, 1, 2, 7, 3], 6)).toEqual([2, 6]) - expect(TwoSum([0, 5, 4, 2, 6, 7, 9, 1], 3)).toEqual([3, 7]) - }) +test('TwoSum tests', () => { + expect(TwoSum([2, 7, 11, 15], 9)).toEqual([0, 1]) + expect(TwoSum([2, 7, 11, 15, 6], 8)).toEqual([0, 4]) + expect(TwoSum([1, 0, 5, 7, 3, 4], 6)).toEqual([0, 2]) + expect(TwoSum([0, 8, 3, 1, 2, 7, 3], 6)).toEqual([2, 6]) + expect(TwoSum([0, 5, 4, 2, 6, 7, 9, 1], 3)).toEqual([3, 7]) }) From cfa17fd1634b7f2e6c4a1c1550b57e9c57510c11 Mon Sep 17 00:00:00 2001 From: Dustin Lammiman Date: Mon, 24 Oct 2022 13:45:39 -0600 Subject: [PATCH 6/7] Improve JSDoc comments --- Data-Structures/Array/TwoSum.js | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/Data-Structures/Array/TwoSum.js b/Data-Structures/Array/TwoSum.js index e7ea651462..5e0f9c5fb9 100644 --- a/Data-Structures/Array/TwoSum.js +++ b/Data-Structures/Array/TwoSum.js @@ -1,14 +1,13 @@ -/** https://leetcode.com/problems/two-sum/ -* Given an array of integers, return indices of the two numbers such that they add up to -* a specific target. -* You may assume that each input would have exactly one solution, and you may not use the -* same element twice. -* Example: -* Given nums = [2, 7, 11, 15], target = 9, -* Because nums[0] + nums[1] = 2 + 7 = 9, -* return [0, 1]. -* -* This is a basic brute force approach */ +/** + * @function TwoSum + * @see https://leetcode.com/problems/two-sum/ + * @description Given an array of integers, returns indices of the two numbers such that they add up to a specific target. You may assume that each input would have exactly one solution, and you may not use the same element twice. This is a basic brute force approach. + * @param {Array} nums - array of integers. + * @param {number} target - target integer. + * @returns {Array} Array of the indeces of the two numbers whose sum equals the target + * @example Given nums = [2, 7, 11, 15], target = 9; return [0, 1] because nums[0] + nums[1] = 2 + 7 = 9 + * @complexity: O(n^2) + */ const TwoSum = (nums, target) => { for (let i = 0; i < nums.length; i++) { for (let j = i + 1; j < nums.length; j++) { From e847c45eb08cac469a70056997c9148298366d2d Mon Sep 17 00:00:00 2001 From: Dustin Lammiman Date: Mon, 24 Oct 2022 14:38:08 -0600 Subject: [PATCH 7/7] indeces => indices --- Data-Structures/Array/TwoSum.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Data-Structures/Array/TwoSum.js b/Data-Structures/Array/TwoSum.js index 5e0f9c5fb9..e72af9c58d 100644 --- a/Data-Structures/Array/TwoSum.js +++ b/Data-Structures/Array/TwoSum.js @@ -4,7 +4,7 @@ * @description Given an array of integers, returns indices of the two numbers such that they add up to a specific target. You may assume that each input would have exactly one solution, and you may not use the same element twice. This is a basic brute force approach. * @param {Array} nums - array of integers. * @param {number} target - target integer. - * @returns {Array} Array of the indeces of the two numbers whose sum equals the target + * @returns {Array} Array of the indices of the two numbers whose sum equals the target * @example Given nums = [2, 7, 11, 15], target = 9; return [0, 1] because nums[0] + nums[1] = 2 + 7 = 9 * @complexity: O(n^2) */