Grokking Algorithms Errata 오타 EBook (PDF) egonSchiele/grokking_algorithms 1. Introduction to Algorithms 1.1 Introduction 1.2 Binary search 1.3 Big-O notation 2. Selection Sort 2.1 How memory works 2.2 Arrays and linked lists 2.3 Selection Sort 3. Recursion 3.1 Recursion 3.2 Base case and recursive case 3.3 The stack 4. Quicksort 4.1 Divide & conquer 4.2 Quicksort 4.3 Big O notation revisited 5. Hash Tables 5.1 Hash functions 5.2 Use cases 5.3 Collisions 5.4 Performance 6. Introduction to graphs 6.1 Introduction to graphs 6.2 What is a graph? 6.3 Breadth-first search 6.4 Implementing the graph 6.5 Implementing the algorithm 7. Dijkstra's algorithm 7.1 Working with Dijkstra’s algorithm 7.2 Terminology 7.3 Trading for a piano 7.4 Negative-weight edges 7.5 Implementation 8. Greedy Algorithms 8.1 The classroom scheduling problem 8.2 The knapsack problem 8.3 The set-covering problem 8.4 NP-complete problems 9. Dynamic Programming 9.1 The knapsack problem 9.2 Knapsack problem FAQ 9.3 Longest common substring