# 🎯 Google-Ready 100 — শূন্য থেকে interview + job-ready পথ

> এই repo-র **446 problem** থেকে বেছে নেওয়া **ঠিক ১০০টা** — যাতে একদম শূন্য থেকে শুরু করা একজন learner ধাপে ধাপে এমন জায়গায় পৌঁছায় যেখান থেকে **Google/FAANG interview** দেওয়া যায়, আর একই সাথে **real job-এ কাজ করার মতো** pattern হাতে আসে।
>
> নীতি: প্রতিটা গুরুত্বপূর্ণ **pattern** একবার করে, তার সবচেয়ে canonical problem দিয়ে। duplicate নেই, fluff নেই — শুধু যেগুলো বারবার interview-তে আর production-এ ফিরে আসে।

## কীভাবে ব্যবহার করবে

- **ক্রম ধরে এগোও** (Stage 1 → 14)। প্রতিটা stage আগেরটার উপর দাঁড়ায়।
- প্রতিটা problem-এর full Bangla note + **Python + JavaScript + TypeScript solution + test cases + real-world use** ওই problem-এর `.md` file-এ (link দেওয়া আছে)।
- প্রতিদিন 2–4টা; একটা problem মানে শুধু solve নয় — pattern-টা **মুখে বলে** বোঝা।
- কোনোটায় আটকালে brute force → optimize ধাপটা note-এ আছে, ওটা পড়ো।

**Difficulty:** 🟢 Easy · 🟡 Medium · 🔴 Hard
**Status:** ✅ = নোটে JS/TS, test ও use-case অংশ আছে। এটি আপনার solve status বা সব solution যাচাইয়ের সনদ নয়। নিজের অগ্রগতি আলাদা রাখুন।

Problem নামের link থেকে বাংলা নোট খুলুন; নোটের source অংশে official judge link পাবেন। নিজস্ব exercise হলে সেটি সেখানে লেখা আছে।

---

## Stage 1 — Math ও Number Foundations (8)

> `%`, digit loop, prime, gcd/lcm, modular power — সব pattern-এর শিকড়।

| # | Problem | Diff | Pattern / Skill | কেন জরুরি | Status |
| --- | --- | --- | --- | --- | --- |
| 1 | [Even or Odd](01-math-based-programming-fundamentals/00-absolute-basics/problems/001-even-or-odd.md) | 🟢 | parity, `%`, bit | প্রথম pattern; sharding/parity bit | ✅ |
| 2 | [Sum of Digits](01-math-based-programming-fundamentals/00-absolute-basics/problems/002-sum-of-digits.md) | 🟢 | digit extraction loop | checksum/Luhn-এর ভিত্তি | ✅ |
| 3 | [Count Digits](01-math-based-programming-fundamentals/00-absolute-basics/problems/003-count-digits.md) | 🟢 | digit loop, log10 | validation/padding | ✅ |
| 4 | [Check Prime](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/013-check-prime.md) | 🟢 | trial division √n | crypto/number theory গেট | ✅ |
| 5 | [Sieve of Eratosthenes](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/015-sieve-of-eratosthenes.md) | 🟡 | sieve precompute | bulk prime, precomputation mindset | ✅ |
| 6 | [GCD (Euclidean)](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/018-gcd-euclidean.md) | 🟢 | Euclid recursion | fractions, scheduling | ✅ |
| 7 | [LCM using GCD](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/020-lcm-using-gcd.md) | 🟢 | gcd→lcm relation | cycles, overflow-safe math | ✅ |
| 8 | [Modular Exponentiation](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/029-modular-exponentiation.md) | 🟡 | fast power O(log n) | crypto, hashing, big powers | ✅ |

---

## Stage 2 — Bit Manipulation ও Prefix Sums (5)

> দুই সুপারপাওয়ার: bit দিয়ে O(1) trick, prefix দিয়ে O(1) range query।

| # | Problem | Diff | Pattern / Skill | কেন জরুরি | Status |
| --- | --- | --- | --- | --- | --- |
| 9 | [Count Set Bits](01-math-based-programming-fundamentals/04-bit-manipulation/problems/058-count-set-bits.md) | 🟢 | Brian Kernighan | flags, popcount | ✅ |
| 10 | [Power of Two](01-math-based-programming-fundamentals/04-bit-manipulation/problems/059-power-of-two.md) | 🟢 | `n & (n-1)` | capacity, hashmap sizing | ✅ |
| 11 | [Single Number (XOR)](01-math-based-programming-fundamentals/04-bit-manipulation/problems/060-odd-one-out-xor.md) | 🟢 | XOR cancel | dedupe, checksum | ✅ |
| 12 | [Prefix Sum](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/067-prefix-sum.md) | 🟢 | prefix array | O(1) range sum, analytics | ✅ |
| 13 | [Subarray Sum Equals K](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/073-subarray-sum-equals-k.md) | 🟡 | prefix + hashmap | count ranges; super common | ✅ |

---

## Stage 3 — Binary Search (incl. on answer) (5)

> sorted-এ খোঁজা থেকে "উত্তরের উপর binary search" — একটি monotonic শর্তের সীমা খোঁজার কৌশল।

| # | Problem | Diff | Pattern / Skill | কেন জরুরি | Status |
| --- | --- | --- | --- | --- | --- |
| 14 | [Basic Binary Search](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/091-basic-binary-search.md) | 🟢 | classic BS | সব search-এর ভিত্তি | ✅ |
| 15 | [Lower / Upper Bound](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/092-lower-bound.md) | 🟡 | boundary BS | DB index, std::lower_bound | ✅ |
| 16 | [Square Root (BS)](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/095-square-root-binary-search.md) | 🟢 | BS on value | precision search | ✅ |
| 17 | [Koko Eating Bananas](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/096-minimum-eating-speed.md) | 🟡 | BS on answer | rate-limit/capacity tuning | ✅ |
| 18 | [Allocate Minimum Pages](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/099-allocate-minimum-pages.md) | 🔴 | BS on answer + feasibility | load balancing, sharding | ✅ |

---

## Stage 4 — Arrays ও Strings core (11)

> interview-এর সবচেয়ে বড় ভাগ; এখানেই two-pointer, Kadane, prefix-product।

| # | Problem | Diff | Pattern / Skill | কেন জরুরি | Status |
| --- | --- | --- | --- | --- | --- |
| 19 | [Reverse String](02-arrays-and-strings/problems/001-reverse-string.md) | 🟢 | two pointers | in-place basics | ✅ |
| 20 | [Two Sum](02-arrays-and-strings/problems/002-two-sum.md) | 🟢 | hashmap complement | #1 interview problem | ✅ |
| 21 | [Valid Anagram](02-arrays-and-strings/problems/003-valid-anagram.md) | 🟢 | frequency count | string fingerprint | ✅ |
| 22 | [Move Zeroes](02-arrays-and-strings/problems/006-move-zeroes.md) | 🟢 | slow/fast pointer | in-place partition | ✅ |
| 23 | [Best Time Buy/Sell Stock](02-arrays-and-strings/problems/007-buy-sell-stock.md) | 🟢 | running min | streaming min/max | ✅ |
| 24 | [Maximum Subarray (Kadane)](02-arrays-and-strings/problems/011-maximum-subarray.md) | 🟡 | Kadane DP | signal/profit windows | ✅ |
| 25 | [Container With Most Water](02-arrays-and-strings/problems/012-container-most-water.md) | 🟡 | two pointers | greedy discard | ✅ |
| 26 | [Rotate Array](02-arrays-and-strings/problems/013-rotate-array.md) | 🟡 | reversal trick | buffer/ring shift | ✅ |
| 27 | [Product Except Self](02-arrays-and-strings/problems/014-product-except-self.md) | 🟡 | prefix/suffix product | running aggregates | ✅ |
| 28 | [3Sum](02-arrays-and-strings/problems/016-three-sum.md) | 🟡 | sort + two pointers | dedupe triples | ✅ |
| 29 | [Longest Consecutive Sequence](02-arrays-and-strings/problems/018-longest-consecutive.md) | 🟡 | hash set | O(n) without sort | ✅ |

---

## Stage 5 — Hashing (5)

> "আগে দেখেছি কিনা" — O(1) lookup-এর জাদু।

| # | Problem | Diff | Pattern / Skill | কেন জরুরি | Status |
| --- | --- | --- | --- | --- | --- |
| 30 | [Contains Duplicate](05-hashing/problems/002-contains-duplicate.md) | 🟢 | hash set | dedupe everywhere | ✅ |
| 31 | [First Unique Character](05-hashing/problems/005-first-unique-character.md) | 🟢 | frequency map | stream first-unique | ✅ |
| 32 | [Missing Number](05-hashing/problems/007-missing-number.md) | 🟢 | XOR/sum trick | integrity check | ✅ |
| 33 | [Group Anagrams](02-arrays-and-strings/problems/017-group-anagrams.md) | 🟡 | canonical key bucket | grouping/indexing | ✅ |
| 34 | [Top K Frequent Elements](05-hashing/problems/011-top-k-frequent-elements.md) | 🟡 | count + heap/bucket | trending/analytics | ✅ |

---

## Stage 6 — Two Pointers ও Sliding Window (6)

> contiguous window — substring, rate, throughput সব এখানে।

| # | Problem | Diff | Pattern / Skill | কেন জরুরি | Status |
| --- | --- | --- | --- | --- | --- |
| 35 | [Longest Substring w/o Repeat](02-arrays-and-strings/problems/010-longest-unique-substring.md) | 🟡 | sliding window + set | dedupe window | ✅ |
| 36 | [Minimum Size Subarray Sum](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/087-minimum-size-subarray-sum.md) | 🟡 | shrinkable window | min window meeting target | ✅ |
| 37 | [At Most K Distinct](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/088-at-most-k-distinct.md) | 🟡 | window + counts | "at most/exactly K" trick | ✅ |
| 38 | [Minimum Window Substring](02-arrays-and-strings/problems/020-minimum-window-substring.md) | 🔴 | window + need-map | hard window mastery | ✅ |
| 39 | [Trapping Rain Water](02-arrays-and-strings/problems/021-trapping-rain-water.md) | 🔴 | two pointers / prefix max | classic hard | ✅ |
| 40 | [Sliding Window Maximum](02-arrays-and-strings/problems/023-sliding-window-maximum.md) | 🔴 | monotonic deque | streaming max | ✅ |

---

## Stage 7 — Stack ও Queue (7)

> nesting, monotonic stack, "next greater" — parser ও scheduler-এর হাতিয়ার।

| # | Problem | Diff | Pattern / Skill | কেন জরুরি | Status |
| --- | --- | --- | --- | --- | --- |
| 41 | [Valid Parentheses](04-stack-and-queue/problems/001-valid-parentheses.md) | 🟢 | stack matching | parser/compiler basics | ✅ |
| 42 | [Min Stack](04-stack-and-queue/problems/006-min-stack.md) | 🟡 | aux stack | O(1) min design | ✅ |
| 43 | [Queue via Stacks](04-stack-and-queue/problems/004-queue-via-stacks.md) | 🟢 | amortized design | data-structure design | ✅ |
| 44 | [Next Greater Element](04-stack-and-queue/problems/007-next-greater-i.md) | 🟡 | monotonic stack | stock span, histograms | ✅ |
| 45 | [Daily Temperatures](04-stack-and-queue/problems/009-daily-temperatures.md) | 🟡 | monotonic stack | wait-time problems | ✅ |
| 46 | [Evaluate RPN](04-stack-and-queue/problems/008-evaluate-rpn.md) | 🟡 | stack eval | expression engines | ✅ |
| 47 | [Largest Rectangle in Histogram](04-stack-and-queue/problems/020-largest-rectangle.md) | 🔴 | monotonic stack | hard stack peak | ✅ |

---

## Stage 8 — Linked List (7)

> pointer surgery — reverse, cycle, merge; design (LRU)।

| # | Problem | Diff | Pattern / Skill | কেন জরুরি | Status |
| --- | --- | --- | --- | --- | --- |
| 48 | [Reverse Linked List](03-linked-list/problems/001-reverse-linked-list.md) | 🟢 | pointer rewiring | #1 LL skill | ✅ |
| 49 | [Merge Two Sorted Lists](03-linked-list/problems/002-merge-two-sorted-lists.md) | 🟢 | two-pointer merge | merge-sort building block | ✅ |
| 50 | [Linked List Cycle](03-linked-list/problems/003-linked-list-cycle.md) | 🟢 | Floyd fast/slow | cycle detection | ✅ |
| 51 | [Middle of List](03-linked-list/problems/004-middle-of-list.md) | 🟢 | fast/slow | split for merge-sort | ✅ |
| 52 | [Remove Nth From End](03-linked-list/problems/009-remove-nth-from-end.md) | 🟡 | two-pointer gap | one-pass delete | ✅ |
| 53 | [Palindrome Linked List](03-linked-list/problems/014-palindrome-list.md) | 🟡 | reverse half | O(1) space check | ✅ |
| 54 | [LRU Cache](03-linked-list/problems/021-lru-cache.md) | 🟡 | hashmap + DLL design | real cache (Redis-style) | ✅ |

---

## Stage 9 — Recursion ও Backtracking (7)

> "সব সম্ভাবনা" তৈরি — subsets, permutations, grid search।

| # | Problem | Diff | Pattern / Skill | কেন জরুরি | Status |
| --- | --- | --- | --- | --- | --- |
| 55 | [Fibonacci (recursion→memo)](06-recursion-and-backtracking/problems/001-fibonacci-number.md) | 🟢 | recursion + memo | DP-র গেটওয়ে | ✅ |
| 56 | [Climbing Stairs](06-recursion-and-backtracking/problems/002-climbing-stairs.md) | 🟢 | recurrence | counting paths | ✅ |
| 57 | [Subsets](06-recursion-and-backtracking/problems/007-subsets.md) | 🟡 | backtracking power set | combinations engine | ✅ |
| 58 | [Permutations](06-recursion-and-backtracking/problems/009-permutations.md) | 🟡 | backtracking + used | ordering/scheduling | ✅ |
| 59 | [Combination Sum](06-recursion-and-backtracking/problems/012-combination-sum.md) | 🟡 | backtracking + prune | choose-with-repeat | ✅ |
| 60 | [Generate Parentheses](06-recursion-and-backtracking/problems/015-generate-parentheses.md) | 🟡 | constrained backtracking | valid-config generation | ✅ |
| 61 | [Word Search](06-recursion-and-backtracking/problems/017-word-search.md) | 🟡 | grid DFS + backtrack | board/maze search | ✅ |

---

## Stage 10 — Trees ও BST (10)

> traversal, BFS/DFS, BST property, LCA, serialize — interview heartland।

| # | Problem | Diff | Pattern / Skill | কেন জরুরি | Status |
| --- | --- | --- | --- | --- | --- |
| 62 | [Maximum Depth](07-trees/problems/001-maximum-depth.md) | 🟢 | DFS recursion | tree recursion basics | ✅ |
| 63 | [Inorder Traversal](07-trees/problems/002-inorder-traversal.md) | 🟢 | DFS / stack | BST sorted order | ✅ |
| 64 | [Invert Binary Tree](07-trees/problems/005-invert-binary-tree.md) | 🟢 | recursion | famous warm-up | ✅ |
| 65 | [Symmetric Tree](07-trees/problems/007-symmetric-tree.md) | 🟢 | mirror recursion | structural compare | ✅ |
| 66 | [Level Order Traversal](07-trees/problems/012-level-order-traversal.md) | 🟡 | BFS queue | layer processing | ✅ |
| 67 | [Validate BST](07-trees/problems/014-validate-bst.md) | 🟡 | bounds recursion | invariant checking | ✅ |
| 68 | [Kth Smallest in BST](07-trees/problems/015-kth-smallest-bst.md) | 🟡 | inorder + count | order statistics | ✅ |
| 69 | [LCA of Binary Tree](07-trees/problems/017-lca-of-binary-tree.md) | 🟡 | post-order recursion | hierarchy queries | ✅ |
| 70 | [Diameter of Binary Tree](07-trees/problems/018-diameter-of-binary-tree.md) | 🟡 | height + global max | tree DP pattern | ✅ |
| 71 | [Serialize/Deserialize Tree](07-trees/problems/024-serialize-deserialize.md) | 🔴 | DFS encode/decode | storage/transmission | ✅ |

---

## Stage 11 — Heap / Priority Queue (5)

> "top/kth/median" — streaming-এ সেরা।

| # | Problem | Diff | Pattern / Skill | কেন জরুরি | Status |
| --- | --- | --- | --- | --- | --- |
| 72 | [Kth Largest Element](08-heap-priority-queue/problems/005-kth-largest-element-in-an-array.md) | 🟡 | min-heap size k | order statistics | ✅ |
| 73 | [K Closest Points](08-heap-priority-queue/problems/007-k-closest-points-to-origin.md) | 🟡 | heap by distance | nearest-neighbour | ✅ |
| 74 | [Task Scheduler](08-heap-priority-queue/problems/010-task-scheduler.md) | 🟡 | greedy + heap | CPU/job scheduling | ✅ |
| 75 | [Meeting Rooms II](08-heap-priority-queue/problems/009-meeting-rooms-ii.md) | 🟡 | heap of end-times | resource allocation | ✅ |
| 76 | [Find Median from Data Stream](08-heap-priority-queue/problems/018-find-median-from-data-stream.md) | 🔴 | two heaps | streaming median | ✅ |

---

## Stage 12 — Graphs (10)

> BFS/DFS, topological sort, shortest path — সিস্টেম-চিন্তার মূল।

| # | Problem | Diff | Pattern / Skill | কেন জরুরি | Status |
| --- | --- | --- | --- | --- | --- |
| 77 | [Number of Islands](09-graphs/problems/004-number-of-islands.md) | 🟡 | grid DFS/BFS | connected components | ✅ |
| 78 | [Flood Fill](09-graphs/problems/003-flood-fill.md) | 🟢 | DFS/BFS | paint bucket, segmentation | ✅ |
| 79 | [Rotting Oranges](09-graphs/problems/008-rotting-oranges.md) | 🟡 | multi-source BFS | spread/diffusion | ✅ |
| 80 | [Clone Graph](09-graphs/problems/013-clone-graph.md) | 🟡 | DFS + hashmap | deep copy graphs | ✅ |
| 81 | [Is Graph Bipartite](09-graphs/problems/011-is-graph-bipartite.md) | 🟡 | 2-coloring BFS | conflict/grouping | ✅ |
| 82 | [Course Schedule](09-graphs/problems/015-course-schedule.md) | 🟡 | cycle detect (topo) | dependency resolution | ✅ |
| 83 | [Course Schedule II](09-graphs/problems/016-course-schedule-ii.md) | 🟡 | topological order | build systems, DAG | ✅ |
| 84 | [Word Ladder](09-graphs/problems/021-word-ladder.md) | 🔴 | BFS shortest path | transformation search | ✅ |
| 85 | [Network Delay Time](09-graphs/problems/018-network-delay-time.md) | 🟡 | Dijkstra | weighted shortest path | ✅ |
| 86 | [Alien Dictionary](09-graphs/problems/024-alien-dictionary.md) | 🔴 | topo sort (hard) | ordering inference | ✅ |

---

## Stage 13 — Union-Find / DSU (3)

> "এরা কি একই দলে?" — connectivity-র দ্রুততম উত্তর।

| # | Problem | Diff | Pattern / Skill | কেন জরুরি | Status |
| --- | --- | --- | --- | --- | --- |
| 87 | [Redundant Connection](10-disjoint-set-union/problems/005-redundant-connection.md) | 🟡 | DSU cycle | network/tree validation | ✅ |
| 88 | [Make Network Connected](10-disjoint-set-union/problems/006-make-network-connected.md) | 🟡 | DSU components | infra connectivity | ✅ |
| 89 | [Accounts Merge](10-disjoint-set-union/problems/009-accounts-merge.md) | 🔴 | DSU + map | entity resolution/dedupe | ✅ |

---

## Stage 14 — Dynamic Programming (11)

> overlapping subproblems — interview-এর সবচেয়ে ভয়ের, কিন্তু pattern শিখলে সহজ।

| # | Problem | Diff | Pattern / Skill | কেন জরুরি | Status |
| --- | --- | --- | --- | --- | --- |
| 90 | [House Robber](12-dynamic-programming/problems/006-house-robber.md) | 🟡 | 1D DP | pick/skip pattern | ✅ |
| 91 | [Unique Paths](12-dynamic-programming/problems/007-unique-paths.md) | 🟡 | grid DP | counting paths | ✅ |
| 92 | [Minimum Path Sum](12-dynamic-programming/problems/009-minimum-path-sum.md) | 🟡 | grid DP min | cost optimization | ✅ |
| 93 | [Coin Change (min)](12-dynamic-programming/problems/010-coin-change-min.md) | 🟡 | unbounded knapsack | make-change/optimization | ✅ |
| 94 | [0/1 Knapsack (Book Shop)](12-dynamic-programming/problems/014-book-shop-knapsack.md) | 🟡 | 0/1 knapsack | budget/resource picking | ✅ |
| 95 | [Partition Equal Subset Sum](12-dynamic-programming/problems/013-partition-equal-subset-sum.md) | 🟡 | subset-sum DP | balancing/fairness | ✅ |
| 96 | [Longest Increasing Subsequence](12-dynamic-programming/problems/015-lis-n-squared.md) | 🟡 | LIS DP | sequence trends | ✅ |
| 97 | [Word Break](12-dynamic-programming/problems/016-word-break.md) | 🟡 | string DP | tokenization/parsing | ✅ |
| 98 | [Longest Common Subsequence](12-dynamic-programming/problems/017-longest-common-subsequence.md) | 🟡 | 2D DP | diff, DNA, similarity | ✅ |
| 99 | [Edit Distance](12-dynamic-programming/problems/018-edit-distance.md) | 🔴 | 2D DP | spellcheck, diff, fuzzy match | ✅ |
| 100 | [Burst Balloons](12-dynamic-programming/problems/021-burst-balloons.md) | 🔴 | interval DP | hardest DP class | ✅ |

---

## 🏁 Milestones

- **Stage 1–3 শেষ (18):** math + binary search ভিত্তি দখলে — অনেক easy interview এখনই পারবে।
- **Stage 4–7 শেষ (47):** arrays/strings/hashing/stack — **job-ready** interview-এর core।
- **Stage 8–11 শেষ (76):** LL + recursion + trees + heap — **mid-level interview-ready**।
- **Stage 12–14 শেষ (100):** graphs + DSU + DP — **Google/FAANG on-site দেওয়ার মতো**।

## পরের ধাপ (এই path-এর সাথে যা চলবে)

- প্রতিদিন রুটিন: 2–4টা problem + আগেরগুলো দ্রুত review।
- প্রতি stage শেষে: pattern-টা নিজে এক প্যারায় লিখে ফেলা (note-এর "Pattern learned" দেখে)।
- System Design + behavioral (Google-এর জন্য) — DSA-র পাশাপাশি, web-dev roadmap-এর Phase 10-এ।

---

> **নোট:** এই 100-র **প্রতিটা** problem-এর `.md`-তে এখন **Python + JavaScript + TypeScript solution + test cases + real-world use** যোগ করা হয়ে গেছে — **১০০/১০০ ✅**। সব JavaScript `node`-এ চলে (test pass), সব TypeScript `tsc --strict`-এ type-check pass — sandbox-এ স্বাধীনভাবে যাচাই করা।

