SitePoint
  • Premium
  • Library
  • Community
  • Jobs
  • Blog
LoginStart Free Trial
The Self-Taught Computer Scientist: The Beginner's Guide to Data Structures & Algorithms
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
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
When to Use Recursion
Vocabulary
Challenge
Linear Search
When to Use a Linear Search
Binary Search
When to Use a Binary Search
Searching for Characters
Vocabulary
Challenge
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
Anagram Detection
Palindrome Detection
Last Digit
Caesar Cipher
Vocabulary
Challenge
Binary
Bitwise Operators
FizzBuzz
Greatest Common Factor
Euclid's Algorithm
Primes
Vocabulary
Challenge
II Data Structures
Vocabulary
Challenge
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 List Performance
Create a Linked List
Search a Linked List
Removing a Node from a Linked List
Finding a Linked List Cycle
Vocabulary
Challenges
When to Use Stacks
Creating a Stack
Using Stacks to Reverse Strings
Min Stack
Stacked Parentheses
Vocabulary
Challenges
When to Use Queues
Creating a Queue
Python's Built-In Queue Class
Create a Queue Using Two Stacks
Vocabulary
Challenge
When to Use Hash Tables
Characters in a String
Two Sum
Vocabulary
Challenge
When to Use Trees
Creating a Binary Tree
Breadth-First Tree Traversal
More Tree Traversals
Invert a Binary Tree
Vocabulary
Challenges
When to Use Heaps
Creating a Heap
Connecting Ropes with Minimal Cost
Vocabulary
Challenge
When to Use Graphs
Creating a Graph
Dijkstra's Algorithm
Vocabulary
Challenge
What’s Next?
Climbing the Freelance Ladder
How to Get an Interview
How to Prepare for a Technical Interview
Additional Resources
Final Thoughts
About the Author
About the Technical Editor
Acknowledgments
WILEY END USER LICENSE AGREEMENT

Community Questions