Skip to main content

Leetcode Patterns Roadmap

Product-Based DSA Roadmap: Pattern Mastery

How to use: Focus on ONE pattern at a time. Do not move to the next pattern until you can solve the current pattern's problems without looking at the solution.

Phase 1: The Essentials (Arrays & Strings)

Pattern Problem Name Difficulty Link
Two Pointers
Sorted arrays, Pairs
Valid Palindrome Easy Solve
Squares of a Sorted Array Easy Solve
Two Sum II - Input Array Is Sorted Medium Solve
Container With Most Water Medium Solve
3Sum Medium Solve
Trapping Rain Water Hard Solve
Sliding Window
Subarrays, Substrings
Best Time to Buy and Sell Stock Easy Solve
Maximum Average Subarray I Easy Solve
Longest Substring Without Repeating Characters Medium Solve
Longest Repeating Character Replacement Medium Solve
Minimum Window Substring Hard Solve
Prefix Sum
Range sums
Product of Array Except Self Medium Solve
Subarray Sum Equals K Medium Solve
Continuous Subarray Sum Medium Solve

Phase 2: Hashing & Linked Lists

Pattern Problem Name Difficulty Link
Hash Maps / Sets
Frequency, Lookups
Two Sum Easy Solve
Valid Anagram Easy Solve
Group Anagrams Medium Solve
Longest Consecutive Sequence Medium Solve
Fast & Slow Pointers
Cycles, Middle finding
Linked List Cycle Easy Solve
Middle of the Linked List Easy Solve
Find the Duplicate Number Medium Solve
Happy Number Easy Solve

Phase 3: Standard Data Structures

Pattern Problem Name Difficulty Link
Binary Search
Sorted, Rotated
Binary Search Easy Solve
Search in Rotated Sorted Array Medium Solve
Find Minimum in Rotated Sorted Array Medium Solve
Koko Eating Bananas Medium Solve
Monotonic Stack
Next greater/smaller
Next Greater Element I Easy Solve
Daily Temperatures Medium Solve
Largest Rectangle in Histogram Hard Solve
Intervals
Merge, Overlap
Merge Intervals Medium Solve
Insert Interval Medium Solve
Non-overlapping Intervals Medium Solve

Phase 4: Trees, Graphs & Heaps

Pattern Problem Name Difficulty Link
BFS / DFS (Trees)
Level order, Depth
Maximum Depth of Binary Tree Easy Solve
Invert Binary Tree Easy Solve
Binary Tree Level Order Traversal Medium Solve
Kth Smallest Element in a BST Medium Solve
Graphs
Islands, Networks
Number of Islands Medium Solve
Rotting Oranges Medium Solve
Clone Graph Medium Solve
Top 'K' (Heaps)
Priority Queue
Kth Largest Element in an Array Medium Solve
K Closest Points to Origin Medium Solve
Find Median from Data Stream Hard Solve

Phase 5: Dynamic Programming

Pattern Problem Name Difficulty Link
1D DP
Subproblems
Climbing Stairs Easy Solve
House Robber Medium Solve
Coin Change Medium Solve
Longest Increasing Subsequence Medium Solve
Backtracking
Permutations, Subsets
Permutations Medium Solve
Subsets Medium Solve
Combination Sum Medium Solve

Next Step: Start Phase 1. Solve "Valid Palindrome" first!

Comments

Popular posts from this blog

LeetCode 88 Explained: Four Approaches, Mistakes, Fixes & the Final Optimal Python Solution

Evolving My Solution to “Merge Sorted Array” A practical, beginner-friendly walkthrough showing four versions of my code (from a naive approach to the optimal in-place two-pointer solution). Includes explanations, complexity and ready-to-paste code. Problem Summary You are given two sorted arrays: nums1 with size m + n (first m are valid) nums2 with size n Goal: Merge nums2 into nums1 in sorted order in-place . Version 1 — Beginner Approach (Extra List) I merged into a new list then copied back. Works, but not in-place and uses extra memory. class Solution: def merge(self, nums1, m, nums2, n): result = [] p1 = 0 p2 = 0 for _ in range(m+n): if p1 >= m: result.extend(nums2[p2:n]) break elif p2 >= n: result.extend(nums1[p1:m]) break elif nu...

Introducing CodeMad: Your Ultimate Universal IDE with Custom Shortcuts

Introducing CodeMad: Your Ultimate Multi-Language IDE with Custom Shortcuts Welcome to the world of CodeMad, your all-in-one Integrated Development Environment (IDE) that simplifies coding and boosts productivity. Developed in Python, CodeMad is designed to make your coding experience smoother and more efficient across a variety of programming languages, including C, C++, Java, Python, and HTML. Whether you're a beginner or an experienced programmer, CodeMad is your go-to tool. In this blog, we'll dive deep into the workings of CodeMad, highlighting its unique features and easy installation process. The Power of Shortcuts CodeMad's intuitive interface is built around a set of powerful keyboard shortcuts that make coding a breeze. Here are some of the key shortcuts you'll find in CodeMad: Copy (Ctrl+C) : Duplicate text with ease. Paste (Ctrl+V) : Quickly insert copied content into your code. Undo (Ctrl+Z) and Redo (Ctrl+Y) : Correct mistakes and s...

Product of Array Except Self in Python | Prefix & Suffix Explained (LeetCode 238)

Problem Overview The Product of Array Except Self is a classic problem that tests your understanding of array traversal and optimization. The task is simple to state but tricky to implement efficiently. Given an integer array nums , you need to return an array such that each element at index i is equal to the product of all the elements in nums except nums[i] . The challenge is that: Division is not allowed The solution must run in O(n) time Initial Thoughts At first glance, it feels natural to compute the total product of the array and divide it by the current element. However, this approach fails because division is forbidden and handling zeroes becomes messy. This pushed me to think differently — instead of excluding the current element, why not multiply everything around it? That’s where the prefix and suffix product pattern comes in. Key Insight: Prefix & Suffix Products For every index i : Prefix product → product of all elements to t...