Home / DSA Beginner
DSA Beginner
Python-first interview foundations: Big-O counted in code, arrays, strings, hash maps, two pointers, stacks, linked lists, trees, graphs, and a first taste of dynamic programming.
Start learning β―β―100 lessons Β· 18 topics Β· 0/100 completed
Course contents
Work top to bottom β the sidebar is the course. Topics later in the list assume the ones before them.
DSA Intro
Beginner Β· β± 5 min Β· standalone lesson
Complexity
- DSA What Is Big O
- DSA Counting Operations
- DSA Best and Worst Cases
- DSA Time and Space
- DSA Reading Growth Tables
Arrays β First Moves
- DSA Arrays in Python
- DSA Traversing Arrays
- DSA Reversing an Array in Place
- DSA Rotating an Array
- DSA Move Zeroes
- DSA Merging Two Sorted Arrays
- DSA Best Time to Buy and Sell Stock
Two Pointers
- DSA Two Pointers
- DSA Valid Palindrome
- DSA Container with Most Water
- DSA Removing Duplicates from a Sorted Array
- DSA Squares of a Sorted Array
Strings β First Moves
- DSA Strings in Python
- DSA Valid Anagram
- DSA First Unique Character
- DSA Reversing Words in a Sentence
- DSA Longest Common Prefix
- DSA String to Integer (atoi)
- DSA Is a Subsequence
Hash Maps and Sets
- DSA Hash Maps in Python
- DSA Counting with Frequency Maps
- DSA Hash Sets in Python
- DSA Two Sum
- DSA Longest Consecutive Sequence
- DSA A Hash Set from Scratch
Searching
- DSA Linear Search
- DSA Binary Search
- DSA Binary Search, Recursively
- DSA Search Insert Position
- DSA First and Last Position
Sorting
- DSA Why Sorting Helps
- DSA Bubble and Selection Sort
- DSA Insertion Sort
- DSA Merge Sort
- DSA Quicksort
- DSA Counting Sort
- DSA Sorting in Python
Recursion
- DSA What Is Recursion
- DSA Recursion and the Fibonacci Trap
- DSA Recursion on Arrays
- DSA Recursion on Strings
- DSA The Call Stack
Linked Lists
- DSA Linked Lists
- DSA Inserting and Deleting in a Linked List
- DSA Reversing a Linked List
- DSA Middle of the Linked List
- DSA Detecting a Cycle (Floyd's)
- DSA Merging Two Sorted Lists
- DSA Removing the Nth Node from the End
- DSA Palindrome Linked List
Stacks
- DSA Stacks
- DSA Valid Parentheses
- DSA Min Stack
- DSA Evaluating Reverse Polish Notation
- DSA Removing Adjacent Duplicates
- DSA Simplifying a Unix Path
Queues and Deques
- DSA Queues
- DSA Deques
- DSA A Queue from Two Stacks
- DSA A Stack from Queues
- DSA Moving Average from a Stream
Prefix Sums and Sliding Windows
- DSA Prefix Sums
- DSA Product of Array Except Self
- DSA Subarray Sum Equals K
- DSA Sliding Window
- DSA Longest Substring Without Repeating Characters
- DSA Longest Run of Ones with K Flips
- DSA Minimum Size Subarray with Sum at Least Target
Binary Trees
- DSA Tree Vocabulary
- DSA Tree Traversals, Recursively
- DSA Level-Order Traversal
- DSA Maximum Depth of a Binary Tree
- DSA Inverting a Binary Tree
- DSA Same Tree
- DSA Symmetric Tree
- DSA Path Sum
Binary Search Trees
- DSA The BST Property
- DSA Searching and Inserting in a BST
- DSA Validating a BST
- DSA Lowest Common Ancestor in a BST
Graphs β First Sight
- DSA What Is a Graph
- DSA Representing a Graph
- DSA Depth-First Search on Graphs
- DSA Breadth-First Search on Graphs
- DSA Number of Islands
- DSA Flood Fill
- DSA Is This Graph Bipartite
Dynamic Programming β First Steps
- DSA What Is Dynamic Programming
- DSA Climbing Stairs
- DSA House Robber
- DSA Min Cost Climbing Stairs
- DSA Maximum Subarray (Kadane's)
- DSA Coin Change, First Taste
DSA Beginner Capstone
Beginner Β· β± 8 min Β· standalone lesson