What are Data Structures?
What are Algorithms?
Why Study D.S. & Algos?
D.S., Algos, and LeetCode
Setting Up Your Environment
Arrays: First Impressions
Array Operations
Implementing Arrays
Dynamic Arrays
Array Use Cases
Linked Lists: Intro
Linked List Operations
Singly Linked List
Doubly Linked List
Linked List Use Cases
Stacks: LIFO
Stack Operations
Implementing Stacks
Queues: FIFO
Queue Operations
Implementing Queues
Stack/Queue Use Cases
What is Big O?
O(1) and O(n)
O(log n) and O(n^2)
Space Complexity
Big O in Practice
What is Linear Search?
Linear Search: Step-by-Step
Implement Linear Search
Linear Search Complexity
Linear Search: When to Use
Binary Search Explained
Binary Search: Step-by-Step
Implement Binary Search
Binary Search Complexity
Binary Search: When to Use
Bubble Sort Explained
Bubble Sort: Step-by-Step
Implement Bubble Sort
Bubble Sort Complexity
Bubble Sort: When to Use
Insertion Sort Explained
Insertion Sort: Step-by-Step
Implement Insertion Sort
Insertion Sort Complexity
Insertion Sort: When to Use
Selection Sort Explained
Selection Sort: Step-by-Step
Implement Selection Sort
Selection Sort Complexity
Selection Sort: When to Use
Intro to Two Pointers
Two Pointers: Basics
Reverse an Array
Is Palindrome?
Two Sum Problem
Intro to Sliding Window
Max Sum Subarray
Smallest Subarray
Longest Substring
Minimum Window Substring
What is Recursion?
Factorial Function
Fibonacci Sequence
Binary Search (Recursive)
Recursion vs Iteration
Understand the Problem
Design an Algorithm
Implement the Code
Test Your Solution
Optimize and Refactor
LeetCode Platform Tour
Setting Up Your IDE
First Problem: Two Sum
Optimizing Two Sum
Submitting & Interpreting
Remove Duplicates
Rotate Array
Contains Duplicate
Single Number
Intersection of Arrays
Valid Anagram
Palindrome Check
Reverse String
First Unique Char
Longest Common Prefix
Print Statement Debug
Using LeetCode Debugger
Understanding Errors
Test Case Analysis
Rubber Duck Debugging