Classic: - [[Asymptotic Analysis]] - [[Sorting]] - [[Arrays]] - [[Hashmaps]] - [[Sets]] - [[Linked Lists]] - [[Stacks]] - [[Queues]] - [[Monotonic]] - [[Trees]] - [[Graphs]] - [[Union ]] - [[Heaps]] - [[Greedy Algorithms]] - [[Binary Search]] - [[Ternary Search]] - [[Backtracking]] - [[Dynamic Programming]] - [[Range Query Algorithms]] - [[Bit Manipulation Algorithms]] - [[Spanning Tree Algorithms]] - [[Strong Connectivity Algorithms]] - [[Topological Sort]] - [[Sparse Tables]] - [[Tries]] - [[Algorithm Cases To Check]] - [[Unordered Data Structures]] Specialized: - [[Operational Transform]] - a data structure is a format for organizing data efficiently - data structures can be split into 2 things 1. interface - contract that specifies how we can interact with the data structure - i.e what operations we can perform on it, what inputs it expects, what outputs we can expect 2. implementation - the code that makes the data structure actually work - i.e for arrays, it'd be allocating memory for the list, tracking the size, rearranging the elements when an interface operation is called - but for algorithms we only have to understand how to use the interface https://cses.fi/book/book.pdf