## Book description

*Algorithmic Thinking* will teach you how to solve challenging programming problems and design your own algorithms. Daniel Zingaro, a master teacher, draws his examples from world-class programming competitions like USACO and IOI. You’ll learn how to classify problems, choose data structures, and identify appropriate algorithms. You’ll also learn how your choice of data structure, whether a hash table, heap, or tree, can affect runtime and speed up your algorithms; and how to adopt powerful strategies like recursion, dynamic programming, and binary search to solve challenging problems.

Line-by-line breakdowns of the code will teach you how to use algorithms and data structures like:

•The breadth-first search algorithm to find the optimal way to play a board game or find the best way to translate a book

•Dijkstra’s algorithm to determine how many mice can exit a maze or the number of fastest routes between two locations

•The union-find data structure to answer questions about connections in a social network or determine who are friends or enemies

•The heap data structure to determine the amount of money given away in a promotion

•The hash-table data structure to determine whether snowflakes are unique or identify compound words in a dictionary

NOTE: Each problem in this book is available on a programming-judge website. You’ll find the site’s URL and problem ID in the description. What’s better than a free correctness check?

## Table of contents

- Cover Page
- Title Page
- Copyright Page
- Dedication
- About the Author
- About the Technical Reviewer
- BRIEF CONTENTS
- CONTENTS IN DETAIL
- FOREWORD
- ACKNOWLEDGMENTS
- INTRODUCTION
- 1 HASH TABLES
- 2 TREES AND RECURSION
- 3 MEMOIZATION AND DYNAMIC PROGRAMMING
- 4 GRAPHS AND BREADTH-FIRST SEARCH
- 5 SHORTEST PATHS IN WEIGHTED GRAPHS
- 6 BINARY SEARCH
- 7 HEAPS AND SEGMENT TREES
- 8 UNION-FIND
- AFTERWORD
- A ALGORITHM RUNTIME
- B BECAUSE I CAN’T RESIST
- C PROBLEM CREDITS
- INDEX

## Product information

- Title: Algorithmic Thinking
- Author(s):
- Release date: December 2020
- Publisher(s): No Starch Press
- ISBN: 9781718500808

## You might also like

book

### Effective Python: 90 Specific Ways to Write Better Python, 2nd Edition

Updated and Expanded for Python 3 It’s easy to start developing programs with Python, which is …

book

### Software Engineering at Google

Today, software engineers need to know not only how to program effectively but also how to …

book

### C++ Crash Course

Upgrade your Code with C++ C++ is one of the most widely used languages for real-world …

book

### Classic Computer Science Problems in Python

Classic Computer Science Problems in Python sharpens your CS problem-solving skills with time-tested scenarios, exercises, and …