Introduction
Basic Data Structures and Algorithms
1.
Complexity Analysis
1.1.
Analyze Recursive Functions
1.2.
Additional Resources
1.3.
Conclusions
2.
Arrays, Strings and Hashing
2.1.
Arrays
2.2.
Strings
2.3.
Hashing
2.3.1.
Sets
2.3.2.
Dictionaries
2.4.
Common Techniques
2.4.1.
Two Pointers
2.4.1.1.
Sliding Window
2.4.1.1.1.
Static Size
2.4.1.1.2.
Dynamic Size
2.4.1.2.
Binary Search
3.
Linked Lists
3.1.
Singly Linked Lists
3.2.
Doubly Linked Lists
4.
Stacks and Queues
4.1.
Stacks in Python
4.2.
Queues in Python
4.3.
Monotonic Stacks and Queues
5.
Trees
5.1.
Traversal
5.1.1.
DFS
5.1.2.
BFS
5.2.
Binary Search Tree (BST)
5.3.
Trie (Prefix Tree)
6.
Graphs
6.1.
Traversal
6.1.1.
DFS
6.1.2.
BFS
6.2.
Disjoint Sets (Union-Find)
6.2.1.
Quick Find
6.2.2.
Quick Union
6.2.2.1.
Union by Rank
6.2.2.2.
Path Compression
6.2.2.3.
Union by Rank + Path Compression
6.3.
Topological Sorting
6.4.
Weighted Graphs
Advanced topics
7.
Intervals
8.
Heaps
9.
Backtracking
10.
Dynamic Programming
11.
Divide and Conquer
Practical part
12.
Python for Coding Interviews
13.
Grind 75
13.1.
Arrays, Strings and Hashing
13.1.1.
Two Sum
13.1.2.
Best Time to Buy and Sell Stock
13.1.3.
Valid Palindrome
13.1.4.
Valid Anagram
13.1.5.
Binary Search
13.1.6.
First Bad Version
13.1.7.
Ransom Note
13.1.8.
Longest Palindrome
13.1.9.
Majority Element
13.1.10.
Add Binary
13.1.11.
Contains Duplicate
13.1.12.
Insert Interval
13.1.13.
Longest Substring Without Repeating Characters
13.1.14.
Two Sum II - Input Array Is Sorted
13.1.15.
3Sum
13.1.16.
Product of Array Except Self
13.1.17.
Merge Intervals
13.1.18.
Time Based Key-Value Store
13.1.19.
Sort Colors
13.1.20.
Container With Most Water
13.1.21.
Spiral Matrix
13.1.22.
Search in Rotated Sorted Array
13.1.23.
Longest Palindromic Substring
13.1.24.
Find All Anagrams in a String
13.1.25.
Minimum Window Substring
13.1.26.
Maximum Profit in Job Scheduling
13.2.
Linked Lists
13.2.1.
Merge Two Sorted Lists
13.2.2.
Linked List Cycle
13.2.3.
Reverse Linked List
13.2.4.
Middle of the Linked List
13.2.5.
LRU Cache
13.3.
Stacks and Queues
13.3.1.
Valid Parentheses
13.3.2.
Implement Queue using Stacks
13.3.3.
Evaluate Reverse Polish Notation
13.3.4.
Min Stack
13.3.5.
Trapping Rain Water
13.3.6.
Basic Calculator
13.3.7.
Largest Rectangle in Histogram
13.4.
Trees
13.4.1.
Invert Binary Tree
13.4.2.
Maximum Depth of Binary Tree
13.4.3.
Lowest Common Ancestor of a Binary Search Tree
13.4.4.
Balanced Binary Tree
13.4.5.
Diameter of Binary Tree
13.4.6.
Binary Tree Level Order Traversal
13.4.7.
Validate Binary Search Tree
13.4.8.
Lowest Common Ancestor of a Binary Tree
13.4.9.
Binary Tree Right Side View
13.4.10.
Construct Binary Tree from Preorder and Inorder Traversal
13.4.11.
Kth Smallest Element in a BST
13.4.12.
Serialize and Deserialize Binary Tree
13.5.
Trie
13.5.1.
Implement Trie (Prefix Tree)
13.6.
Graphs
13.6.1.
Flood Fill
13.6.2.
01 Matrix
13.6.3.
Clone Graph
13.6.4.
Course Schedule
13.6.5.
Number of Islands
13.6.6.
Rotting Oranges
13.6.7.
Accounts Merge
13.6.8.
Word Search
13.6.9.
Minimum Height Trees
13.6.10.
Word Ladder
13.7.
Backtracking
13.7.1.
Combination Sum
13.7.2.
Permutations
13.7.3.
Subsets
13.7.4.
Letter Combinations of a Phone Number
13.8.
Dynamic Programming
13.8.1.
Climbing Stairs
13.8.2.
Maximum Subarray
13.8.3.
Coin Change
13.8.4.
Unique Paths
13.8.5.
Partition Equal Subset Sum
13.8.6.
Word Break
13.9.
Heaps
13.9.1.
K Closest Points to Origin
13.9.2.
Task Scheduler
13.9.3.
Find Median from Data Stream
13.9.4.
Merge k Sorted Lists
Contributors
Light
Rust
Coal
Navy
Ayu
algo-ds.com
Binary Search
We have already covered this problem in the
Binary Search
section.