SitePoint
Blog
Forum
Library
Login
Join Premium
Toggle sidebar
The Self-Taught Computer Scientist: The Beginner's Guide to Data Structures & Algorithms
Toggle community discussions
Close
Content
Bookmarks
Preface
The Self-Taught Computer Scientist
The beginner’s guide to data structures & algorithms
Introduction
What You Will Learn
Who Is This Book For?
Self-Taught Success Stories
Getting Started
Sticking with It
1
What Is an Algorithm?
I Introduction to Algorithms
Analyzing Algorithms
Constant Time
Logarithmic Time
Linear Time
Log-Linear Time
Quadratic Time
Cubic Time
Exponential Time
Best-Case vs. Worst-Case Complexity
Space Complexity
Why Is This Important?
Vocabulary
Challenge
Recursion
When to Use Recursion
Vocabulary
Challenge
Search Algorithms
Linear Search
When to Use a Linear Search
Binary Search
When to Use a Binary Search
Searching for Characters
Vocabulary
Challenge
Sorting Algorithms
Bubble Sort
When to Use Bubble Sort
Insertion Sort
When to Use Insertion Sort
Merge Sort
When to Use Merge Sort
Sorting Algorithms in Python
Vocabulary
Challenge
String Algorithms
Anagram Detection
Palindrome Detection
Last Digit
Caesar Cipher
Vocabulary
Challenge
Math
Binary
Bitwise Operators
FizzBuzz
Greatest Common Factor
Euclid's Algorithm
Primes
Vocabulary
Challenge
Self-Taught Inspiration: Margaret Hamilton
What Is a Data Structure?
II Data Structures
Vocabulary
Challenge
Arrays
Array Performance
Creating an Array
Moving Zeros
Combining Two Lists
Finding the Duplicates in a List
Finding the Intersection of Two Lists
Vocabulary
Challenge
Linked Lists
Linked List Performance
Create a Linked List
Search a Linked List
Removing a Node from a Linked List
Finding a Linked List Cycle
Vocabulary
Challenges
Stacks
When to Use Stacks
Creating a Stack
Using Stacks to Reverse Strings
Min Stack
Stacked Parentheses
Vocabulary
Challenges
Queues
When to Use Queues
Creating a Queue
Python's Built-In Queue Class
Create a Queue Using Two Stacks
Vocabulary
Challenge
Hash Tables
When to Use Hash Tables
Characters in a String
Two Sum
Vocabulary
Challenge
Binary Trees
When to Use Trees
Creating a Binary Tree
Breadth-First Tree Traversal
More Tree Traversals
Invert a Binary Tree
Vocabulary
Challenges
Binary Heaps
When to Use Heaps
Creating a Heap
Connecting Ropes with Minimal Cost
Vocabulary
Challenge
Graphs
When to Use Graphs
Creating a Graph
Dijkstra's Algorithm
Vocabulary
Challenge
Self-Taught Inspiration: Elon Musk
Next Steps
What’s Next?
Climbing the Freelance Ladder
How to Get an Interview
How to Prepare for a Technical Interview
Additional Resources
Final Thoughts
Index
About the Author
About the Technical Editor
Acknowledgments
WILEY END USER LICENSE AGREEMENT
Open text modal
Community Questions
Close