Note: I also released the system design version: https://github.com/teivah/designdeck, an open-source collection of 230+ flash cards.
Overview
Algo Deck is an open-source collection of 200+ algorithmic flash cards.
It helps you preparing and succeeding in your algorithm & data structure interview. The code examples are in Java.
The topics covered are the following:
- Array: reversing an array, finding a pivot, handling a dynamic array, etc.
- Bit: operators, bit manipulation, etc.
- Complexity: algorithm & data structures complexity
- Dynamic Programming: dynamic programming concept
- Encoding: encoding theory
- General: general knowledge including how to approach a problem or testing a first solution
- Graph: A*, Dijkstra, BFS vs DFS, cycles detection, topological sort, etc.
- Greedy: greedy algorithms concepts
- Hash Table: hashtable data structure
- Heap: heap data structure including min-heap/max heap, binary heap use cases, etc.
- Linked List: linked list data structure, how to get the middle element, iterate over two lists, doubly linked list, etc.
- Math: discrete math
- Queue: queue data structure
- Recursion: recursion concepts
- Sort: sort algorithms including concepts, complexity, use cases, etc.
- Stack: stack data structure
- String: string permutation, rotation, rabin-karp substring search, etc.
- Technique: most important techniques to master to solve algorithmic problems including greedy techniques, runner, sliding window, etc.
- Tree: binary tree use cases, binary search tree, 2-3 tree, red-black tree, use cases, etc.
Anki Deck
Anki is a free software (Windows/Mac/Linux/iPhone/Android) which makes remembering things easy. It utilizes spaced repetition which is a proven technique to increase the rate of memorization:
Spaced Repetition: The most powerful study technique on YouTube
The single biggest change that Anki brings about is that it means memory is no longer a haphazard event, to be left to chance. Rather, it guarantees I will remember something, with minimal effort. That is, Anki makes memory a choice.
Michael A. Nielsen, “Augmenting Long-term Memory”
Using Anki is a great way to prepare your algorithm & data structure interview.
Here is a flashcard example:
The Anki version (a clone of the +200 flashcards from this repo) is available via a one-time GitHub sponsorship tier for $19: ❤️ Sponsor, One-time tab, Access to the latest Anki deck version of Algo Deck tier.
Cards Index
Array
Bit
Complexity
- 0/1 Knapsack brute force complexity
- 0/1 Knapsack memoization complexity
- 0/1 Knapsack tabulation complexity
- Amortized complexity definition
- Array complexity: access, search, insert, delete
- B-tree complexity: access, insert, delete
- BFS and DFS graph traversal time and space complexity
- BFS and DFS tree traversal time and space complexity
- Big O
- Big Omega
- Big Theta
- Binary heap (min-heap or max-heap) complexity: insert, get min (max), delete min (max)
- BST complexity: access, insert, delete
- BST delete algo and complexity
- Bubble sort complexity and stability
- Complexity of a function making multiple recursive subcalls
- Complexity to create a trie
- Complexity to insert a key in a trie
- Complexity to search for a key in a trie
- Counting sort complexity, stability, use case
- Doubly linked list complexity: access, insert, delete
- Hash table complexity: search, insert, delete
- Heapsort complexity, stability, use case
- Insertion sort complexity, stability, use case
- Linked list complexity: access, insert, delete
- Mergesort complexity, stability, use case
- Quicksort complexity, stability, use case
- Radix sort complexity, stability, use case
- Recursivity impacts on algorithm complexity
- Red-black tree complexity: access, insert, delete
- Selection sort complexity
- Stack implementations and insert/delete complexity
- Time complexity to build a binary heap
- Topological sort complexity
Dynamic Programming
Encoding
General
Graph
Greedy
Hash Table
Heap
Linked List
Math
Queue
Recursion
Sort
- Bubble sort algorithm
- Bubble sort complexity and stability
- Counting sort complexity, stability, use case
- Counting sort algorithm
- Heapsort algorithm
- Heapsort complexity, stability, use case
- Insertion sort algorithm
- Insertion sort complexity, stability, use case
- Mergesort algorithm
- Mergesort complexity, stability, use case
- Quicksort algorithm
- Quicksort complexity, stability, use case
- Radix sort algorithm
- Radix sort complexity, stability, use case
- Selection sort algorithm
- Selection sort complexity
- Shuffling an array
Stack
String
Technique
Tree
- 2-3 tree
- AVL tree
- B-tree complexity: access, insert, delete
- B-tree: definition and use case
- Balanced binary tree definition
- Balanced BST use case: B-tree, Red-black tree, AVL tree
- BFS and DFS tree traversal time and space complexity
- Binary tree BFS traversal
- Binary tree definition
- Binary tree DFS traversal: in-order, pre-order and post-order
- Binary tree: complete
- Binary tree: full
- Binary tree: perfect
- BST complexity: access, insert, delete
- BST definition
- BST delete algo and complexity
- BST insert algo
- BST questions prerequisite
- Complexity to create a trie
- Complexity to insert a key in a trie
- Complexity to search for a key in a trie
- Given a binary tree, algorithm to populate an array to represent its level-by-level traversal
- How to calculate the path number of a node while traversing using DFS?
- Min (or max) value in a BST
- Red-Black tree
- Red-black tree complexity: access, insert, delete
- Reverse a binary tree algo
- Trie definition, implementation and use case
- Why to use BST over hash table