# Data structure & Algorithm

Complexity i) Time/Memory Complexity, examples of nested loops and recursions

02 STL i) introduction, mechanism, library functions ii) vector iii) Stack/queue/deque iv) Priority Queue v) set/map/multi/unordered

03 Binary Search i) Binary Property ii) Lower and upper bound iii) Using binary property in complex problems

04 Ternary Search i) Ternary Property ii) Using ternary property in complex problems

05 Recursion i) Recursive equation ii) Divide and Conquer iii) Quick select iv) Inversion count

06 Sorting i) Recap ii) Merge sort iii) Quick sort

07 String i) Substring, Subsequence, substring, palindrome, anagram recap ii) Matching iii) Hashing

08 Greedy i) Prove/disprove greedy approach ii) Task sheduling iii) Fractional knapsack iv) Coin Change v) And many more

09 Number Theory i) Sieve of Eratosthenes ii) Factorization iii) Fermatâ€™s little theorem iv) Modular Arithmetic v) Totient function

10 Disjoint set union i) Mechanism ii) Various applications

11 Graph theory i) Introduction and definitions ii) Storing graphs

12 Graph Travarsal and shortest path i) DFS/BFS ii) Various properties and applications iii) Dijkstra

13 Backtrack i) Brute force ii) Permutation generation iii) Graph coloring

14 Dynamic programming i) Introduction, properties, states ii) Ancestors of DP: Fibonacci, Factorial, nCr iii) Classics and variations

15 Segment Tree i) Basic segment Tree

List of data structures and algorithms:

Data Structure Deque Extendable Array (Vector) Linked List (Doubly) Stack (Fixed size) Queue (Fixed size) Heap (Binary) Priority Queue Tree Binary Tree Binary Search Tree Order Statistic Tree Red Black Tree Traversal (Binary) Preorder Postorder Inorder Euler Tour Sorting Heapsort Merge Sort Quicksort Lomuto Partition Randomized Partition Hoare partition Bubble Sort Insertion Sort Selection Sort Searching Binary Search Linear Search Range Queries (on BST) Divide and Conquer Maximum Subarray Strassenâ€™s Matrix Multiplication Dynamic Programming Maximum Subarray Numeric Matrix (Basic Operations) Puzzle Josephus problem (1. Using Queue, 2. Using Order Statistic Tree) Development environments:

Ubuntu 16.04.2 (WSL) GCC 7.3.0 Valgrind 3.13.0