Skip to content

zhibirc/algorithms

Repository files navigation

Algorithms

Maintenance GitHub repo size Static Badge Static Badge PRs Welcome Contributor Covenant


This is yet another place where various algorithms live.

The main focus was made on algorithms themselves, so you can find their implementations in different programming languages (mostly Python, TypeScript and Go). Each algorithm to the much extent possible is provided with the necessary description, including its asymptotic complexity and memory consumption.

You and/or your company could use it as a source for coding skills assessment during technical interview process, as an additional resource for self-preparation or just as a source for your own awesome algorithms collection.

Content

Type Problem
Number theory 🔗
Sum of binary strings
Primality test
Sieve of Eratosthenes
Greatest common divisor (GCD)
Digital root
Games Sudoku solver (backtracking)
Strings 🔗
Palindromes Check if a given string is a palindrome
Palindromes Check if a given string is a potential palindrome
Permutations Generate all possible balanced bracket sequences of N pairs
Permutations Generate all possible permutations of string letters (recursion)
Permutations Reverse vowels
Brackets Check correctness of a given bracket sequence (one bracket type)
Brackets Check correctness of a given bracket sequence (multiple bracket types)
Brackets Determine the maximum depth of nesting brackets in a given sequence
Brackets Generate all possible balanced bracket sequences of N pairs
Brackets Total amount of correct bracket sequences for N bracket pairs
Brackets Next Bracket Sequence
Search Boyer–Moore–Horspool (Horspool's) algorithm
Search Knuth–Morris–Pratt (KMP) algorithm
Search Rabin–Karp (Karp-Rabin) algorithm
Find substring pattern in a given string (needle in haystack)
Sum strings
Sequences 🔗
Implementation of Boyer–Moore majority vote algorithm
Lists 🔗
Arrays/Subsets Generate Power set of given array
Arrays Check if an array has a pair of numbers whose sum is match the given target
Linked Lists Find a middle/median element
Parsers 🔗
Conversions Convert an integer to a roman numeral
Trees 🔗
Binary Check if there is a node in binary tree which satisfies to given predicate
Dynamic Programming 🔗
Coin Change (Change-making): find the least number of coins
Coin Change (Change-making): find the total number of ways (order matters)
Coin Change (Change-making): get coins of the least number of coins
All possible pathways in given square matrix from one cell to another
Max possible earn among all pathways from point A to B in given square matrix
Data Structures 🔗
Circular Buffer (Ring Buffer)
Singly Linked List
Doubly Linked List

Links

Contributing

We encourage you to contribute to our growing knowledge base of algorithmic world! Please check out the Contribution Guide for guidelines about how to proceed. In any activity in the project, please, follow our Code of Conduct.

License

This project is available under the Unlicense license or, in simple words, doesn't contain any restrictions on usage.