Data Structures & Algorithms
Based on Striver’s 180. 179 problems across 17 topics, grouped by pattern.
Arrays
Linear Scan
- Majority Element-I (Easy)
- Kadane's Algorithm (Medium)
- Majority Element-II (Medium)
- Maximum Product Subarray in an Array (Medium)
Two Pointers
- Sort an array of 0's 1's and 2's (Medium)
- 3 Sum (Medium)
- Next Permutation (Medium)
- 4 Sum (Medium)
- Merge two sorted arrays without extra space (Easy)
- Trapping Rainwater (Hard)
Divide and Conquer
- Count Inversions (Medium)
- Reverse Pairs (Hard)
Hashing
Hashing & Prefix Sums
- Two Sum (Easy)
- Longest Consecutive Sequence in an Array (Medium)
- Longest subarray with sum K (Medium)
- Count subarrays with given sum (Medium)
- Count subarrays with given xor K (Medium)
Binary Search
Binary Search
- Find peak element (Medium)
- Find minimum in Rotated Sorted Array (Medium)
- Search in rotated sorted array-II (Medium)
- Single element in sorted array (Medium)
- Search in 2D matrix - II (Medium)
- Find Peak Element - II (Medium)
Search on Answer
- Find Nth root of a number (Easy)
- Koko eating bananas (Medium)
- Aggressive Cows (Medium)
- Book Allocation Problem (Hard)
- Matrix Median (Medium)
Partition Search
- Kth element of 2 sorted arrays (Hard)
- Median of 2 sorted arrays (Hard)
Sliding Window and Two Pointers
Sliding Window
- Longest Substring Without Repeating Characters (Medium)
- Maximum Points You Can Obtain from Cards (Medium)
- Max Consecutive Ones III (Medium)
- Longest Repeating Character Replacement (Medium)
- Longest Substring With At Most K Distinct Characters (Medium)
- Minimum Window Substring (Hard)
Counting Windows
- Number of Substrings Containing All Three Characters (Medium)
- Binary Subarrays With Sum (Medium)
- Count number of Nice subarrays (Medium)
Recursion and Backtracking
Subsets & Combinations
- Power Set (Medium)
- Generate Parentheses (Medium)
- Letter Combinations of a Phone Number (Medium)
- Combination Sum (Medium)
- Combination Sum II (Medium)
- Subsets II (Medium)
- Palindrome partitioning (Medium)
Backtracking
- Word Search (Medium)
- N Queen (Hard)
- Sudoku Solver (Hard)
Linked List
Fast & Slow Pointers
- Find Middle of Linked List (Easy)
- Find the intersection point of Y LL (Easy)
- Check if LL is palindrome or not (Easy)
- Detect a loop in LL (Easy)
- Remove Nth node from the back of the LL (Medium)
- Find the starting point in LL (Medium)
- Length of loop in LL (Easy)
Reversal & Rewiring
- Reverse a LL (Easy)
- Merge two Sorted Lists (Easy)
- Sort a Linked List of 0's 1's and 2's (Medium)
- Add two numbers in Linked List (Medium)
- Rotate a LL (Medium)
- Sort LL (Medium)
- Clone a LL with random and next pointer (Medium)
- Reverse LL in group of given size K (Hard)
- Flattening of LL (Hard)
Stack and Queues
Monotonic Stack / Queue
- Next Greater Element (Easy)
- Next Greater Element - 2 (Medium)
- Stock span problem (Medium)
- Sum of Subarray Minimums (Medium)
- Sum of Subarray Ranges (Medium)
- Remove K Digits (Medium)
- Sliding Window Maximum (Hard)
- Largest rectangle in a histogram (Hard)
- Maximum Rectangles (Hard)
Data Structure Design
- Implement Min Stack (Medium)
- Asteroid Collision (Medium)
- Celebrity Problem (Medium)
- LRU Cache (Medium)
- LFU Cache (Hard)
Greedy Algorithms
Greedy
- Jump Game - I (Medium)
- Valid Parenthesis Checker (Medium)
- Candy (Hard)
Intervals & Scheduling
- N meetings in one room (Easy)
- Insert Interval (Medium)
- Non-overlapping Intervals (Medium)
- Minimum number of platforms required for a railway (Medium)
- Job sequencing Problem (Medium)
Heaps
Heap / Priority Queue
- Heapify Algorithm (Easy)
- Build heap from a given Array (Easy)
- Implement Min Heap (Medium)
- K-th Largest element in an array (Medium)
- Find Median from Data Stream (Hard)
Binary Trees
BFS
- Level Order Traversal (Medium)
- Maximum Width of BT (Medium)
- Right/Left View of BT (Medium)
- Top View of BT (Medium)
- Print all nodes at a distance of K in BT (Medium)
- Minimum time taken to burn the BT from a given Node (Medium)
- Vertical Order Traversal (Hard)
DFS / Tree DP
- Print root to leaf path in BT (Easy)
- Diameter of Binary Tree (Easy)
- Lowest Common Ancestor in BT (Medium)
- Boundary Traversal (Medium)
- Construct a BT from Preorder and Inorder (Medium)
- Morris Inorder Traversal (Easy)
- Maximum path sum (Hard)
- Serialize and De-serialize BT (Hard)
Binary Search Trees
Inorder Traversal
- Insert a given node in BST (Medium)
- LCA in BST (Medium)
- Delete a node in BST (Medium)
- Inorder successor and predecessor in BST (Medium)
- Kth Smallest and Largest element in BST (Medium)
- Check if a tree is a BST or not (Medium)
- Construct a BST from a preorder traversal (Medium)
- Two sum in BST (Easy)
- Correct BST with two nodes swapped (Medium)
- Largest BST in Binary Tree (Medium)
Graphs
BFS / DFS
- Flood fill algorithm (Easy)
- Number of islands (Medium)
- Rotten Oranges (Medium)
- Distance of nearest cell having one (Medium)
- Surrounded Regions (Medium)
- Number of distinct islands (Medium)
- Detect a cycle in an undirected graph (Medium)
- Bipartite graph (Medium)
Ordering & Connectivity
- Detect a cycle in a directed graph (Medium)
- Topological sort or Kahn's algorithm (Medium)
- Course Schedule II (Medium)
- Alien Dictionary (Hard)
- Kosaraju's algorithm (Hard)
- Bridges in graph (Hard)
- Articulation point in graph (Hard)
Shortest Path
- Shortest path in undirected graph with unit weights (Medium)
- Shortest path in DAG (Medium)
- Dijkstra's algorithm (Medium)
- Path with minimum effort (Medium)
- Cheapest flight within K stops (Medium)
- Bellman ford algorithm (Medium)
- Floyd warshall algorithm (Medium)
- Word ladder I (Hard)
- Word ladder II (Hard)
DSU / MST
- Disjoint Set (Medium)
- Find the MST weight (Medium)
- Number of operations to make network connected (Medium)
- Number of islands II (Hard)
- Making a large island (Hard)
Dynamic Programming
State Transition DP
- Frog jump with K distances (Medium)
- House robber (Medium)
- Ninja's training (Medium)
- Unique paths II (Medium)
- Best time to buy and sell stock with transaction fees (Medium)
- Best time to buy and sell stock IV (Hard)
Knapsack DP
- 0 and 1 Knapsack (Medium)
- Partition a set into two subsets with minimum absolute sum difference (Medium)
- Target sum (Medium)
- Coin change II (Medium)
Sequence DP
- Longest common subsequence (Medium)
- Longest common substring (Medium)
- Longest palindromic subsequence (Medium)
- Longest Increasing Subsequence (Medium)
- Number of Longest Increasing Subsequences (Medium)
- Edit distance (Medium)
- Wildcard matching (Hard)
Partition DP
- Matrix chain multiplication (Hard)
- Palindrome partitioning II (Hard)
Tries
Trie
Strings
String Matching
- Rabin Karp Algorithm (Medium)
- Z function (Hard)
- KMP Algorithm or LPS array (Easy)
- Shortest Palindrome (Hard)
Bit Manipulation
Bit Manipulation
- Power Set Bit Manipulation (Medium)
- Single Number - II (Medium)
- Single Number - III (Medium)
- Find the repeating and missing number (Easy)
Mathematics
Number Theory
- Print all primes till N (Medium)