This is a compilation of data structures, algorithms and practical problems that are sure to turn you into a javascript wunderkind.
- clone this repository
- install
node
lts (v8.9.1) npm install
npm install -g jest-cli
cd data-structures/linked-list
- edit
index.js
- run tests with
jest
This is a work in progress, folders with a README have been completed.
- Trie (Used in string comprehension) variants include Prefix Trie & Suffix Trie
- Tree
- Binary Search Tree
- AVL Tree
- Red-Black Tree
- Segment Tree (interval tree)
- Fenwick Tree
- Graph
- Disjoint Set
- Bloom Filter
- Arrays
- Map
- Promises
- Throttle
- Immutable
- Update
- Value
- Sets
- Cartesian Product (cross product)
- Fisher-Yates Shuffle - random permutation generator of a finite sequence
- Strings
- Hamming Distance - Number of character differences between two strings
- Searches
- Linear Search
- Jump Search (Block Search) in a sorted array
- Binary Search in a sorted array
- Interpolation Search (reqs a uniformly distributed sorterd array)
- Sorting
- Bubble Sort
- Selection Sort
- Insertion Sort
- Heap Sort
- Merge Sort
- Quicksort
- Shellsort
- Trees
- Depth-First Search (DFS)
- Breath-First Search (BFS)
- Graphs
- Depth-First Search (DFS)
- Breath-First Search (BFS)
- Kruskal's Algorithm finds the Minimum Spanning Tree for a weighted undirected graph
- Math
- Bit Manipulation
- Factorial
- Fibonacci Number
- Primality Test
- Euclidean Algorithm (Greatest Common Divisor)
- Least Common Multiple
- Sieve of Eratosthenes - guess the number of primes up to a given limit
- Is Power of Two - check if the number is a power of two
- Pascal's Triangle
- Uncategorized
- Flatten thunk
- Middleware
- Async function execution (parallel, serial and race)
- via Callback
- via Promise
- Tower of Hanoi
- Square Matrix Rotation (in place)
- Jump Game
- backtracking
- dynamic programming (top-down + bottom-up)
- greedy
- Unique Paths
- backtracking
- dynamic programming (top-down + bottom-up)
- greedy