Ordered by priority (top patterns = most frequently tested for ML/data roles). All problem IDs are LeetCode numbers. Do in Python.
- LC 1 — Two Sum
- LC 217 — Contains Duplicate
- LC 242 — Valid Anagram
- LC 49 — Group Anagrams
- LC 347 — Top K Frequent Elements
- LC 238 — Product of Array Except Self
- LC 128 — Longest Consecutive Sequence
- LC 271 — Encode and Decode Strings
- LC 36 — Valid Sudoku
- LC 454 — 4Sum II
- LC 383 — Ransom Note
- LC 1512 — Number of Good Pairs
- LC 692 — Top K Frequent Words
- LC 895 — Maximum Frequency Stack
- LC 41 — First Missing Positive
- LC 560 — Subarray Sum Equals K
- LC 953 — Verifying an Alien Dictionary
- LC 496 — Next Greater Element I
- LC 1502 — Can Make Arithmetic Progression
- LC 1010 — Pairs of Songs With Total Durations Divisible by 60
- LC 125 — Valid Palindrome
- LC 167 — Two Sum II (sorted array)
- LC 15 — 3Sum
- LC 11 — Container With Most Water
- LC 42 — Trapping Rain Water
- LC 283 — Move Zeroes
- LC 26 — Remove Duplicates from Sorted Array
- LC 344 — Reverse String
- LC 977 — Squares of a Sorted Array
- LC 88 — Merge Sorted Array
- LC 121 — Best Time to Buy and Sell Stock
- LC 3 — Longest Substring Without Repeating Characters
- LC 424 — Longest Repeating Character Replacement
- LC 567 — Permutation in String
- LC 76 — Minimum Window Substring
- LC 239 — Sliding Window Maximum
- LC 209 — Minimum Size Subarray Sum
- LC 643 — Maximum Average Subarray I
- LC 1004 — Max Consecutive Ones III
- LC 1493 — Longest Subarray of 1's After Deleting One Element
- LC 30 — Substring with Concatenation of All Words
- LC 992 — Subarrays with K Different Integers
- LC 20 — Valid Parentheses
- LC 155 — Min Stack
- LC 150 — Evaluate Reverse Polish Notation
- LC 22 — Generate Parentheses
- LC 739 — Daily Temperatures
- LC 853 — Car Fleet
- LC 84 — Largest Rectangle in Histogram
- LC 71 — Simplify Path
- LC 704 — Binary Search
- LC 74 — Search a 2D Matrix
- LC 875 — Koko Eating Bananas
- LC 153 — Find Minimum in Rotated Sorted Array
- LC 33 — Search in Rotated Sorted Array
- LC 981 — Time Based Key-Value Store
- LC 4 — Median of Two Sorted Arrays
- LC 162 — Find Peak Element
- LC 206 — Reverse Linked List
- LC 21 — Merge Two Sorted Lists
- LC 143 — Reorder List
- LC 19 — Remove Nth Node From End of List
- LC 138 — Copy List with Random Pointer
- LC 2 — Add Two Numbers
- LC 141 — Linked List Cycle
- LC 287 — Find the Duplicate Number
- LC 146 — LRU Cache
- LC 23 — Merge k Sorted Lists
- LC 104 — Maximum Depth of Binary Tree
- LC 226 — Invert Binary Tree
- LC 100 — Same Tree
- LC 572 — Subtree of Another Tree
- LC 235 — Lowest Common Ancestor of a BST
- LC 102 — Binary Tree Level Order Traversal
- LC 199 — Binary Tree Right Side View
- LC 1448 — Count Good Nodes in Binary Tree
- LC 98 — Validate Binary Search Tree
- LC 230 — Kth Smallest Element in a BST
- LC 105 — Construct Binary Tree from Preorder and Inorder
- LC 124 — Binary Tree Maximum Path Sum
- LC 297 — Serialize and Deserialize Binary Tree
- LC 543 — Diameter of Binary Tree
- LC 110 — Balanced Binary Tree
- LC 108 — Convert Sorted Array to BST
- LC 617 — Merge Two Binary Trees
- LC 112 — Path Sum
- LC 703 — Kth Largest Element in a Stream
- LC 1046 — Last Stone Weight
- LC 973 — K Closest Points to Origin
- LC 215 — Kth Largest Element in an Array
- LC 621 — Task Scheduler
- LC 355 — Design Twitter
- LC 295 — Find Median from Data Stream
- LC 767 — Reorganize String
- LC 1642 — Furthest Building You Can Reach
- LC 23 — Merge k Sorted Lists (revisit via heap)
- LC 78 — Subsets
- LC 39 — Combination Sum
- LC 46 — Permutations
- LC 90 — Subsets II
- LC 40 — Combination Sum II
- LC 79 — Word Search
- LC 131 — Palindrome Partitioning
- LC 17 — Letter Combinations of a Phone Number
- LC 200 — Number of Islands
- LC 133 — Clone Graph
- LC 695 — Max Area of Island
- LC 417 — Pacific Atlantic Water Flow
- LC 130 — Surrounded Regions
- LC 994 — Rotting Oranges
- LC 286 — Walls and Gates
- LC 207 — Course Schedule
- LC 210 — Course Schedule II
- LC 684 — Redundant Connection
- LC 323 — Number of Connected Components
- LC 261 — Graph Valid Tree
- LC 127 — Word Ladder
- LC 743 — Network Delay Time
- LC 70 — Climbing Stairs
- LC 746 — Min Cost Climbing Stairs
- LC 198 — House Robber
- LC 213 — House Robber II
- LC 5 — Longest Palindromic Substring
- LC 647 — Palindromic Substrings
- LC 91 — Decode Ways
- LC 322 — Coin Change
- LC 152 — Maximum Product Subarray
- LC 139 — Word Break
- LC 300 — Longest Increasing Subsequence
- LC 416 — Partition Equal Subset Sum
- LC 62 — Unique Paths
- LC 55 — Jump Game
- LC 1143 — Longest Common Subsequence
- LC 1143 — Longest Common Subsequence (already above; alt: 72 Edit Distance)
- LC 72 — Edit Distance
- LC 97 — Interleaving String
- LC 329 — Longest Increasing Path in a Matrix
- LC 115 — Distinct Subsequences
- LC 174 — Dungeon Game
- LC 64 — Minimum Path Sum
- LC 63 — Unique Paths II
- LC 53 — Maximum Subarray
- LC 55 — Jump Game (revisit)
- LC 45 — Jump Game II
- LC 134 — Gas Station
- LC 763 — Partition Labels
- LC 435 — Non-overlapping Intervals
- LC 57 — Insert Interval
- LC 56 — Merge Intervals
- LC 435 — Non-overlapping Intervals (revisit)
- LC 252 — Meeting Rooms
- LC 253 — Meeting Rooms II
- LC 1851 — Minimum Interval to Include Each Query
- Segment trees, Fenwick trees, tries (except if asked for autocomplete-style system design)
- Heavy number theory (modular exponentiation, sieve variants, combinatorics beyond basics)
- Advanced string algorithms (KMP, Z-function, suffix arrays)
- Game theory / Nim-style problems
- Bitmask DP, digit DP
- 5–6 problems/week alongside your ML/HOML work → ~150 problems in ~26–28 weeks
- If compressing for October: 8–10/week → done in ~16 weeks, matching your existing DSA plan timeline
- Always redo Two Sum, Merge Intervals, Kth Largest, and Course Schedule cold — these 4 patterns cover a disproportionate share of actual interview questions
- Track weak patterns separately (yours: heaps, intervals) and over-index practice there