--- id: topics title: Topics --- ## Arrays ## Strings - Prefix trees (Tries) - Suffix trees - Suffix arrays - KMP - Rabin-Karp - Boyer-Moore ## Sorting - Bubble sort - Insertion sort - Merge sort - Quick sort - Selection sort - Bucket sort - Radix sort - Counting sort ## Linked Lists ## Stacks ## Queues ## Hash tables - Collision resolution algorithms ## Trees - BFS - DFS (inorder, postorder, preorder) - Height ## Binary Search Trees - Insert node - Delete a node - Find element in BST - Find min, max element in BST - Get successor element in tree - Check if a binary tree is a BST or not ## Heaps / Priority Queues - Insert - Bubble up - Extract max - Remove - Heapify - Heap sort ## Graphs - Various implementations - Adjacency matrix - Adjacency list - Adjacency map - Single-source shortest path - Dijkstra - Bellman-Ford - Topo sort - MST - Prim algorithm - Kruskal's algorithm - Union Find Data Structure - Count connected components in a graph - List strongly connected components in a graph - Check for bipartite graph ## Dynamic Programming - Count Change - 0-1 Knapsack ## System Design - http://www.hiredintech.com/system-design/ - https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical-interview?redirected_qid=1500023 - http://blog.gainlo.co/index.php/2015/10/22/8-things-you-need-to-know-before-system-design-interviews/ - https://github.com/donnemartin/system-design-primer - https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/system-design.pdf