<!-- Generated by scripts/build_practice_map.py; edit curriculum/plan.json or the problem notes. -->
# সব problem — পড়া থেকে নিজের হাতে সমাধান

**426টি problem note · Math-এর 150টি · 25টি section · ১৪টি guided challenge।** একই problem আলাদা কৌশলে একাধিক অধ্যায়ে থাকলে প্রতিটি note আলাদা করে দেখানো হয়েছে।

প্রথমে section-এর **আগে পড়ুন** অংশ দেখুন। **আগে করতেই হবে** চিহ্নের 203টি অনুশীলন দিয়ে ভিত্তি যাচাই করুন, তারপর বাকি তালিকা। চিহ্নটি এই learning path-এর অগ্রাধিকার; Microsoft course-এর বাধ্যতামূলক assignment-এর তালিকা নয়।

প্রতিটি problem-এর **পড়ার ধাপ** খুললে প্রশ্ন → ধারণা → ছবি ও dry run → code → খরচ ও ভুল → পুনরায় অনুশীলনের সরাসরি link পাবেন। নোট দেখার পর checkbox দিন শুধু যখন সাহায্য ছাড়া সমাধান লিখে test পাস করাতে পারেন।

## Microsoft course-এর সঙ্গে মিল {#course-map}

আপনার screenshot-এর module এবং [Microsoft-এর Coursera syllabus](https://www.coursera.org/learn/msft-data-structures-and-algorithms) মিলিয়ে topic অনুযায়ী badge বসানো হয়েছে (যাচাই: ২৩ অক্টোবর ২০২৬)। **এটি আমাদের topic mapping, official assignment equivalence নয়।** Course-এ .NET/C# ব্যবহার হয়; এখানকার reference solution Python-এ। আগে algorithm বুঝুন, তারপর চাইলে C#-এ একই tests লিখুন।

| Badge | Screenshot-এর module | এখানে মিলিয়ে অনুশীলন |
| --- | --- | --- |
| Microsoft · M1 | Introduction to Data Structures and Algorithms | array, linked list, stack, queue, complexity |
| Microsoft · M2 | Sorting and Searching Algorithms | sorting, binary search, boundary |
| Microsoft · M3 | Trees and Graphs | traversal, BST, BFS/DFS |
| Microsoft · M4 | Advanced Algorithms and Problem-Solving | hashing, greedy, dynamic programming |
| Microsoft · M5 | Algorithmic Optimization and Advanced Problem-Solving | priority queue, shortest path, performance analysis |
| সহায়ক ভিত্তি | course বোঝার প্রস্তুতি | সংখ্যা, logic, recursion ও অন্যান্য ভিত |
| বাড়তি অনুশীলন | syllabus-এর বাইরে আরও শেখা | DSU, range tree, advanced variants |

Redis, async .NET, load balancing এবং Copilot-এর নিজস্ব lab এই তালিকায় পুনরায় তৈরি করা হয়নি। সংশ্লিষ্ট course lesson-ও পড়বেন। একটি badge দেখলেই problem-টি সেই course-এ হুবহু আছে ধরে নেবেন না।

## Section বেছে অনুশীলন করুন {#checklist}

<div id="practice-map" data-total="426" markdown="1">
<div class="practice-controls" hidden>
<label>Problem বা কৌশল খুঁজুন <input type="search" id="practice-query" placeholder="যেমন: prefix, BFS, linked list" autocomplete="off"></label>
<label>Course / বিষয় <select id="practice-course"><option value="all">সবগুলো</option><option value="math">শুধু Math</option><option value="M1">Microsoft · M1</option><option value="M2">Microsoft · M2</option><option value="M3">Microsoft · M3</option><option value="M4">Microsoft · M4</option><option value="M5">Microsoft · M5</option><option value="support">সহায়ক ভিত্তি</option><option value="extension">বাড়তি অনুশীলন</option></select></label>
<label>অগ্রগতি <select id="practice-status"><option value="all">সব অবস্থার problem</option><option value="todo">এখনও বাকি</option><option value="done">সমাধান করেছি</option></select></label>
<label class="practice-core-toggle"><input type="checkbox" id="practice-core"> শুধু আগে করতেই হবে</label>
</div>
<p class="practice-progress" role="status" aria-live="polite">মোট 426টি নোট। Section খুলে শুরু করুন।</p>
<p class="practice-storage-note" hidden>অগ্রগতি শুধু এই browser-এ থাকে; account বা অন্য device-এ sync হয় না।</p>
<p class="practice-empty" hidden>কোনো problem মেলেনি। Filter বদলান বা ছোট keyword লিখুন।</p>

<div class="practice-chapter" data-family="math" markdown="1">

## Math — level অনুযায়ী ১৫০টি problem {#section-math}

<details class="practice-section" data-section="math-00" open markdown="1">
<summary>Math 00 · সংখ্যার ভিত্তি <span class="section-count">10টি</span></summary>

**আগে বুঝে নিন:** % ও //, if/else, loop, digit ভাঙা।

**আগে পড়ুন:** [ভিত্তি](01-math-based-programming-fundamentals/00-absolute-basics/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/00-absolute-basics/visualization-ideas.md)।

**Section-এর বড় challenge:** [ধাপে ধাপে প্রয়োগ করুন](guided-practice/math.md)। সব individual problem-এর বিকল্প নয়; প্রধান কৌশল একসঙ্গে ব্যবহার করার পরীক্ষা।

<ol class="practice-list" markdown="1">

<li class="practice-item" data-course="support" data-must="1" data-search="Math 00 · সংখ্যার ভিত্তি 001 — Even or Odd parity / last bit Easy" markdown="1">
<label class="practice-check-label" for="check-math-00-001"><input class="practice-check" type="checkbox" id="check-math-00-001" data-key="01-math-based-programming-fundamentals/00-absolute-basics/problems/001-even-or-odd.md" disabled><span class="ds-status">সমাধান করেছি: 001 — Even or Odd</span></label>
<div class="practice-problem" markdown="1">

**[001 — Even or Odd](01-math-based-programming-fundamentals/00-absolute-basics/problems/001-even-or-odd.md)**

<p class="practice-pattern">parity / last bit · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/00-absolute-basics/problems/001-even-or-odd.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/00-absolute-basics/problems/001-even-or-odd.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/00-absolute-basics/problems/001-even-or-odd.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/00-absolute-basics/problems/001-even-or-odd.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/00-absolute-basics/problems/001-even-or-odd.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/00-absolute-basics/problems/001-even-or-odd.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/00-absolute-basics/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/00-absolute-basics/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="1" data-search="Math 00 · সংখ্যার ভিত্তি 002 — Sum of Digits digit extraction (sum) Easy" markdown="1">
<label class="practice-check-label" for="check-math-00-002"><input class="practice-check" type="checkbox" id="check-math-00-002" data-key="01-math-based-programming-fundamentals/00-absolute-basics/problems/002-sum-of-digits.md" disabled><span class="ds-status">সমাধান করেছি: 002 — Sum of Digits</span></label>
<div class="practice-problem" markdown="1">

**[002 — Sum of Digits](01-math-based-programming-fundamentals/00-absolute-basics/problems/002-sum-of-digits.md)**

<p class="practice-pattern">digit extraction (sum) · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/00-absolute-basics/problems/002-sum-of-digits.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/00-absolute-basics/problems/002-sum-of-digits.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/00-absolute-basics/problems/002-sum-of-digits.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/00-absolute-basics/problems/002-sum-of-digits.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/00-absolute-basics/problems/002-sum-of-digits.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/00-absolute-basics/problems/002-sum-of-digits.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/00-absolute-basics/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/00-absolute-basics/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="1" data-search="Math 00 · সংখ্যার ভিত্তি 003 — Count Digits digit extraction (count) Easy" markdown="1">
<label class="practice-check-label" for="check-math-00-003"><input class="practice-check" type="checkbox" id="check-math-00-003" data-key="01-math-based-programming-fundamentals/00-absolute-basics/problems/003-count-digits.md" disabled><span class="ds-status">সমাধান করেছি: 003 — Count Digits</span></label>
<div class="practice-problem" markdown="1">

**[003 — Count Digits](01-math-based-programming-fundamentals/00-absolute-basics/problems/003-count-digits.md)**

<p class="practice-pattern">digit extraction (count) · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/00-absolute-basics/problems/003-count-digits.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/00-absolute-basics/problems/003-count-digits.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/00-absolute-basics/problems/003-count-digits.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/00-absolute-basics/problems/003-count-digits.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/00-absolute-basics/problems/003-count-digits.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/00-absolute-basics/problems/003-count-digits.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/00-absolute-basics/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/00-absolute-basics/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="1" data-search="Math 00 · সংখ্যার ভিত্তি 004 — Reverse Number number building (rev  10 + d) Easy" markdown="1">
<label class="practice-check-label" for="check-math-00-004"><input class="practice-check" type="checkbox" id="check-math-00-004" data-key="01-math-based-programming-fundamentals/00-absolute-basics/problems/004-reverse-number.md" disabled><span class="ds-status">সমাধান করেছি: 004 — Reverse Number</span></label>
<div class="practice-problem" markdown="1">

**[004 — Reverse Number](01-math-based-programming-fundamentals/00-absolute-basics/problems/004-reverse-number.md)**

<p class="practice-pattern">number building (rev  10 + d) · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/00-absolute-basics/problems/004-reverse-number.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/00-absolute-basics/problems/004-reverse-number.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/00-absolute-basics/problems/004-reverse-number.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/00-absolute-basics/problems/004-reverse-number.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/00-absolute-basics/problems/004-reverse-number.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/00-absolute-basics/problems/004-reverse-number.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/00-absolute-basics/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/00-absolute-basics/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 00 · সংখ্যার ভিত্তি 005 — Palindrome Number reverse + compare Easy" markdown="1">
<label class="practice-check-label" for="check-math-00-005"><input class="practice-check" type="checkbox" id="check-math-00-005" data-key="01-math-based-programming-fundamentals/00-absolute-basics/problems/005-palindrome-number.md" disabled><span class="ds-status">সমাধান করেছি: 005 — Palindrome Number</span></label>
<div class="practice-problem" markdown="1">

**[005 — Palindrome Number](01-math-based-programming-fundamentals/00-absolute-basics/problems/005-palindrome-number.md)**

<p class="practice-pattern">reverse + compare · Easy</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/00-absolute-basics/problems/005-palindrome-number.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/00-absolute-basics/problems/005-palindrome-number.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/00-absolute-basics/problems/005-palindrome-number.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/00-absolute-basics/problems/005-palindrome-number.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/00-absolute-basics/problems/005-palindrome-number.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/00-absolute-basics/problems/005-palindrome-number.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/00-absolute-basics/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/00-absolute-basics/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 00 · সংখ্যার ভিত্তি 006 — Armstrong Number digit power sum Easy" markdown="1">
<label class="practice-check-label" for="check-math-00-006"><input class="practice-check" type="checkbox" id="check-math-00-006" data-key="01-math-based-programming-fundamentals/00-absolute-basics/problems/006-armstrong-number.md" disabled><span class="ds-status">সমাধান করেছি: 006 — Armstrong Number</span></label>
<div class="practice-problem" markdown="1">

**[006 — Armstrong Number](01-math-based-programming-fundamentals/00-absolute-basics/problems/006-armstrong-number.md)**

<p class="practice-pattern">digit power sum · Easy</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/00-absolute-basics/problems/006-armstrong-number.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/00-absolute-basics/problems/006-armstrong-number.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/00-absolute-basics/problems/006-armstrong-number.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/00-absolute-basics/problems/006-armstrong-number.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/00-absolute-basics/problems/006-armstrong-number.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/00-absolute-basics/problems/006-armstrong-number.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/00-absolute-basics/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/00-absolute-basics/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 00 · সংখ্যার ভিত্তি 007 — Digital Root repeated digit sum, mod 9 Easy" markdown="1">
<label class="practice-check-label" for="check-math-00-007"><input class="practice-check" type="checkbox" id="check-math-00-007" data-key="01-math-based-programming-fundamentals/00-absolute-basics/problems/007-digital-root.md" disabled><span class="ds-status">সমাধান করেছি: 007 — Digital Root</span></label>
<div class="practice-problem" markdown="1">

**[007 — Digital Root](01-math-based-programming-fundamentals/00-absolute-basics/problems/007-digital-root.md)**

<p class="practice-pattern">repeated digit sum, mod 9 · Easy</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/00-absolute-basics/problems/007-digital-root.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/00-absolute-basics/problems/007-digital-root.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/00-absolute-basics/problems/007-digital-root.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/00-absolute-basics/problems/007-digital-root.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/00-absolute-basics/problems/007-digital-root.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/00-absolute-basics/problems/007-digital-root.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/00-absolute-basics/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/00-absolute-basics/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 00 · সংখ্যার ভিত্তি 008 — Find Last Digit mod 10 Easy" markdown="1">
<label class="practice-check-label" for="check-math-00-008"><input class="practice-check" type="checkbox" id="check-math-00-008" data-key="01-math-based-programming-fundamentals/00-absolute-basics/problems/008-find-last-digit.md" disabled><span class="ds-status">সমাধান করেছি: 008 — Find Last Digit</span></label>
<div class="practice-problem" markdown="1">

**[008 — Find Last Digit](01-math-based-programming-fundamentals/00-absolute-basics/problems/008-find-last-digit.md)**

<p class="practice-pattern">mod 10 · Easy</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/00-absolute-basics/problems/008-find-last-digit.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/00-absolute-basics/problems/008-find-last-digit.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/00-absolute-basics/problems/008-find-last-digit.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/00-absolute-basics/problems/008-find-last-digit.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/00-absolute-basics/problems/008-find-last-digit.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/00-absolute-basics/problems/008-find-last-digit.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/00-absolute-basics/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/00-absolute-basics/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 00 · সংখ্যার ভিত্তি 009 — Power of 10 Check repeated division Easy" markdown="1">
<label class="practice-check-label" for="check-math-00-009"><input class="practice-check" type="checkbox" id="check-math-00-009" data-key="01-math-based-programming-fundamentals/00-absolute-basics/problems/009-power-of-10-check.md" disabled><span class="ds-status">সমাধান করেছি: 009 — Power of 10 Check</span></label>
<div class="practice-problem" markdown="1">

**[009 — Power of 10 Check](01-math-based-programming-fundamentals/00-absolute-basics/problems/009-power-of-10-check.md)**

<p class="practice-pattern">repeated division · Easy</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/00-absolute-basics/problems/009-power-of-10-check.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/00-absolute-basics/problems/009-power-of-10-check.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/00-absolute-basics/problems/009-power-of-10-check.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/00-absolute-basics/problems/009-power-of-10-check.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/00-absolute-basics/problems/009-power-of-10-check.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/00-absolute-basics/problems/009-power-of-10-check.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/00-absolute-basics/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/00-absolute-basics/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 00 · সংখ্যার ভিত্তি 010 — Number Pattern Printing nested loops Easy" markdown="1">
<label class="practice-check-label" for="check-math-00-010"><input class="practice-check" type="checkbox" id="check-math-00-010" data-key="01-math-based-programming-fundamentals/00-absolute-basics/problems/010-number-pattern-printing.md" disabled><span class="ds-status">সমাধান করেছি: 010 — Number Pattern Printing</span></label>
<div class="practice-problem" markdown="1">

**[010 — Number Pattern Printing](01-math-based-programming-fundamentals/00-absolute-basics/problems/010-number-pattern-printing.md)**

<p class="practice-pattern">nested loops · Easy</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/00-absolute-basics/problems/010-number-pattern-printing.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/00-absolute-basics/problems/010-number-pattern-printing.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/00-absolute-basics/problems/010-number-pattern-printing.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/00-absolute-basics/problems/010-number-pattern-printing.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/00-absolute-basics/problems/010-number-pattern-printing.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/00-absolute-basics/problems/010-number-pattern-printing.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/00-absolute-basics/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/00-absolute-basics/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

</ol>
</details>

<details class="practice-section" data-section="math-01" markdown="1">
<summary>Math 01 · ভাগ, prime, GCD ও LCM <span class="section-count">15টি</span></summary>

**আগে বুঝে নিন:** divisibility, factor, prime test, Euclid।

**আগে পড়ুন:** [ভিত্তি](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/visualization-ideas.md)।

**Section-এর বড় challenge:** [ধাপে ধাপে প্রয়োগ করুন](guided-practice/math.md)। সব individual problem-এর বিকল্প নয়; প্রধান কৌশল একসঙ্গে ব্যবহার করার পরীক্ষা।

<ol class="practice-list" markdown="1">

<li class="practice-item" data-course="support" data-must="1" data-search="Math 01 · ভাগ, prime, GCD ও LCM 011 — Divisibility Rules divisibility Easy" markdown="1">
<label class="practice-check-label" for="check-math-01-011"><input class="practice-check" type="checkbox" id="check-math-01-011" data-key="01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/011-divisibility-rules.md" disabled><span class="ds-status">সমাধান করেছি: 011 — Divisibility Rules</span></label>
<div class="practice-problem" markdown="1">

**[011 — Divisibility Rules](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/011-divisibility-rules.md)**

<p class="practice-pattern">divisibility · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/011-divisibility-rules.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/011-divisibility-rules.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/011-divisibility-rules.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/011-divisibility-rules.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/011-divisibility-rules.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/011-divisibility-rules.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="1" data-search="Math 01 · ভাগ, prime, GCD ও LCM 012 — Count Factors √n factor pairs Easy" markdown="1">
<label class="practice-check-label" for="check-math-01-012"><input class="practice-check" type="checkbox" id="check-math-01-012" data-key="01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/012-count-factors.md" disabled><span class="ds-status">সমাধান করেছি: 012 — Count Factors</span></label>
<div class="practice-problem" markdown="1">

**[012 — Count Factors](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/012-count-factors.md)**

<p class="practice-pattern">√n factor pairs · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/012-count-factors.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/012-count-factors.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/012-count-factors.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/012-count-factors.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/012-count-factors.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/012-count-factors.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="1" data-search="Math 01 · ভাগ, prime, GCD ও LCM 013 — Check Prime trial division Easy" markdown="1">
<label class="practice-check-label" for="check-math-01-013"><input class="practice-check" type="checkbox" id="check-math-01-013" data-key="01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/013-check-prime.md" disabled><span class="ds-status">সমাধান করেছি: 013 — Check Prime</span></label>
<div class="practice-problem" markdown="1">

**[013 — Check Prime](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/013-check-prime.md)**

<p class="practice-pattern">trial division · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/013-check-prime.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/013-check-prime.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/013-check-prime.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/013-check-prime.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/013-check-prime.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/013-check-prime.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="1" data-search="Math 01 · ভাগ, prime, GCD ও LCM 014 — Print All Primes up to N repeated prime check Easy" markdown="1">
<label class="practice-check-label" for="check-math-01-014"><input class="practice-check" type="checkbox" id="check-math-01-014" data-key="01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/014-print-all-primes.md" disabled><span class="ds-status">সমাধান করেছি: 014 — Print All Primes up to N</span></label>
<div class="practice-problem" markdown="1">

**[014 — Print All Primes up to N](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/014-print-all-primes.md)**

<p class="practice-pattern">repeated prime check · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/014-print-all-primes.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/014-print-all-primes.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/014-print-all-primes.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/014-print-all-primes.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/014-print-all-primes.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/014-print-all-primes.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 01 · ভাগ, prime, GCD ও LCM 015 — Sieve of Eratosthenes sieve Medium" markdown="1">
<label class="practice-check-label" for="check-math-01-015"><input class="practice-check" type="checkbox" id="check-math-01-015" data-key="01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/015-sieve-of-eratosthenes.md" disabled><span class="ds-status">সমাধান করেছি: 015 — Sieve of Eratosthenes</span></label>
<div class="practice-problem" markdown="1">

**[015 — Sieve of Eratosthenes](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/015-sieve-of-eratosthenes.md)**

<p class="practice-pattern">sieve · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/015-sieve-of-eratosthenes.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/015-sieve-of-eratosthenes.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/015-sieve-of-eratosthenes.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/015-sieve-of-eratosthenes.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/015-sieve-of-eratosthenes.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/015-sieve-of-eratosthenes.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 01 · ভাগ, prime, GCD ও LCM 016 — Prime Factorization peeling primes Medium" markdown="1">
<label class="practice-check-label" for="check-math-01-016"><input class="practice-check" type="checkbox" id="check-math-01-016" data-key="01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/016-prime-factorization.md" disabled><span class="ds-status">সমাধান করেছি: 016 — Prime Factorization</span></label>
<div class="practice-problem" markdown="1">

**[016 — Prime Factorization](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/016-prime-factorization.md)**

<p class="practice-pattern">peeling primes · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/016-prime-factorization.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/016-prime-factorization.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/016-prime-factorization.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/016-prime-factorization.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/016-prime-factorization.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/016-prime-factorization.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 01 · ভাগ, prime, GCD ও LCM 017 — Smallest Prime Factor SPF sieve Medium" markdown="1">
<label class="practice-check-label" for="check-math-01-017"><input class="practice-check" type="checkbox" id="check-math-01-017" data-key="01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/017-smallest-prime-factor.md" disabled><span class="ds-status">সমাধান করেছি: 017 — Smallest Prime Factor</span></label>
<div class="practice-problem" markdown="1">

**[017 — Smallest Prime Factor](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/017-smallest-prime-factor.md)**

<p class="practice-pattern">SPF sieve · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/017-smallest-prime-factor.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/017-smallest-prime-factor.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/017-smallest-prime-factor.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/017-smallest-prime-factor.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/017-smallest-prime-factor.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/017-smallest-prime-factor.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 01 · ভাগ, prime, GCD ও LCM 018 — GCD using Euclidean Algorithm Euclid — gcd(a, b) = gcd(b, a % b) Easy" markdown="1">
<label class="practice-check-label" for="check-math-01-018"><input class="practice-check" type="checkbox" id="check-math-01-018" data-key="01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/018-gcd-euclidean.md" disabled><span class="ds-status">সমাধান করেছি: 018 — GCD using Euclidean Algorithm</span></label>
<div class="practice-problem" markdown="1">

**[018 — GCD using Euclidean Algorithm](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/018-gcd-euclidean.md)**

<p class="practice-pattern">Euclid — gcd(a, b) = gcd(b, a % b) · Easy</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/018-gcd-euclidean.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/018-gcd-euclidean.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/018-gcd-euclidean.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/018-gcd-euclidean.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/018-gcd-euclidean.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/018-gcd-euclidean.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 01 · ভাগ, prime, GCD ও LCM 019 — Extended GCD Intro back-substitution — a·x + b·y = gcd(a, b) Hard" markdown="1">
<label class="practice-check-label" for="check-math-01-019"><input class="practice-check" type="checkbox" id="check-math-01-019" data-key="01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/019-extended-gcd-intro.md" disabled><span class="ds-status">সমাধান করেছি: 019 — Extended GCD Intro</span></label>
<div class="practice-problem" markdown="1">

**[019 — Extended GCD Intro](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/019-extended-gcd-intro.md)**

<p class="practice-pattern">back-substitution — a·x + b·y = gcd(a, b) · Hard</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/019-extended-gcd-intro.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/019-extended-gcd-intro.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/019-extended-gcd-intro.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/019-extended-gcd-intro.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/019-extended-gcd-intro.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/019-extended-gcd-intro.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 01 · ভাগ, prime, GCD ও LCM 020 — LCM using GCD lcm = a // gcd(a, b)  b Easy" markdown="1">
<label class="practice-check-label" for="check-math-01-020"><input class="practice-check" type="checkbox" id="check-math-01-020" data-key="01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/020-lcm-using-gcd.md" disabled><span class="ds-status">সমাধান করেছি: 020 — LCM using GCD</span></label>
<div class="practice-problem" markdown="1">

**[020 — LCM using GCD](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/020-lcm-using-gcd.md)**

<p class="practice-pattern">lcm = a // gcd(a, b)  b · Easy</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/020-lcm-using-gcd.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/020-lcm-using-gcd.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/020-lcm-using-gcd.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/020-lcm-using-gcd.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/020-lcm-using-gcd.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/020-lcm-using-gcd.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 01 · ভাগ, prime, GCD ও LCM 021 — Coprime Check gcd(a, b) == 1 Easy" markdown="1">
<label class="practice-check-label" for="check-math-01-021"><input class="practice-check" type="checkbox" id="check-math-01-021" data-key="01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/021-coprime-check.md" disabled><span class="ds-status">সমাধান করেছি: 021 — Coprime Check</span></label>
<div class="practice-problem" markdown="1">

**[021 — Coprime Check](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/021-coprime-check.md)**

<p class="practice-pattern">gcd(a, b) == 1 · Easy</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/021-coprime-check.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/021-coprime-check.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/021-coprime-check.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/021-coprime-check.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/021-coprime-check.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/021-coprime-check.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 01 · ভাগ, prime, GCD ও LCM 022 — Count Coprime Pairs Basic gcd over all pairs (i &lt; j) Medium" markdown="1">
<label class="practice-check-label" for="check-math-01-022"><input class="practice-check" type="checkbox" id="check-math-01-022" data-key="01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/022-count-coprime-pairs.md" disabled><span class="ds-status">সমাধান করেছি: 022 — Count Coprime Pairs Basic</span></label>
<div class="practice-problem" markdown="1">

**[022 — Count Coprime Pairs Basic](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/022-count-coprime-pairs.md)**

<p class="practice-pattern">gcd over all pairs (i &lt; j) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/022-count-coprime-pairs.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/022-count-coprime-pairs.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/022-count-coprime-pairs.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/022-count-coprime-pairs.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/022-count-coprime-pairs.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/022-count-coprime-pairs.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 01 · ভাগ, prime, GCD ও LCM 023 — Euler Phi Basic totient formula — φ(n) = n · ∏(1 − 1/p) Medium" markdown="1">
<label class="practice-check-label" for="check-math-01-023"><input class="practice-check" type="checkbox" id="check-math-01-023" data-key="01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/023-euler-phi-basic.md" disabled><span class="ds-status">সমাধান করেছি: 023 — Euler Phi Basic</span></label>
<div class="practice-problem" markdown="1">

**[023 — Euler Phi Basic](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/023-euler-phi-basic.md)**

<p class="practice-pattern">totient formula — φ(n) = n · ∏(1 − 1/p) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/023-euler-phi-basic.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/023-euler-phi-basic.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/023-euler-phi-basic.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/023-euler-phi-basic.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/023-euler-phi-basic.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/023-euler-phi-basic.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 01 · ভাগ, prime, GCD ও LCM 024 — Number of Divisors exponent formula — d(n) = ∏(eᵢ + 1) Medium" markdown="1">
<label class="practice-check-label" for="check-math-01-024"><input class="practice-check" type="checkbox" id="check-math-01-024" data-key="01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/024-number-of-divisors.md" disabled><span class="ds-status">সমাধান করেছি: 024 — Number of Divisors</span></label>
<div class="practice-problem" markdown="1">

**[024 — Number of Divisors](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/024-number-of-divisors.md)**

<p class="practice-pattern">exponent formula — d(n) = ∏(eᵢ + 1) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/024-number-of-divisors.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/024-number-of-divisors.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/024-number-of-divisors.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/024-number-of-divisors.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/024-number-of-divisors.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/024-number-of-divisors.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 01 · ভাগ, prime, GCD ও LCM 025 — Sum of Divisors exponent formula — σ(n) = ∏ (1 + p + ... + p^e) Medium" markdown="1">
<label class="practice-check-label" for="check-math-01-025"><input class="practice-check" type="checkbox" id="check-math-01-025" data-key="01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/025-sum-of-divisors.md" disabled><span class="ds-status">সমাধান করেছি: 025 — Sum of Divisors</span></label>
<div class="practice-problem" markdown="1">

**[025 — Sum of Divisors](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/025-sum-of-divisors.md)**

<p class="practice-pattern">exponent formula — σ(n) = ∏ (1 + p + ... + p^e) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/025-sum-of-divisors.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/025-sum-of-divisors.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/025-sum-of-divisors.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/025-sum-of-divisors.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/025-sum-of-divisors.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/problems/025-sum-of-divisors.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/01-divisibility-prime-gcd-lcm/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

</ol>
</details>

<details class="practice-section" data-section="math-02" markdown="1">
<summary>Math 02 · Modular arithmetic <span class="section-count">13টি</span></summary>

**আগে বুঝে নিন:** remainder-এর নিয়ম, fast power, inverse।

**আগে পড়ুন:** [ভিত্তি](01-math-based-programming-fundamentals/02-modular-arithmetic/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/02-modular-arithmetic/visualization-ideas.md)।

**Section-এর বড় challenge:** [ধাপে ধাপে প্রয়োগ করুন](guided-practice/math.md)। সব individual problem-এর বিকল্প নয়; প্রধান কৌশল একসঙ্গে ব্যবহার করার পরীক্ষা।

<ol class="practice-list" markdown="1">

<li class="practice-item" data-course="support" data-must="1" data-search="Math 02 · Modular arithmetic 026 — Remainder Basics mod basics (remainder + congruence) Easy" markdown="1">
<label class="practice-check-label" for="check-math-02-026"><input class="practice-check" type="checkbox" id="check-math-02-026" data-key="01-math-based-programming-fundamentals/02-modular-arithmetic/problems/026-remainder-basics.md" disabled><span class="ds-status">সমাধান করেছি: 026 — Remainder Basics</span></label>
<div class="practice-problem" markdown="1">

**[026 — Remainder Basics](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/026-remainder-basics.md)**

<p class="practice-pattern">mod basics (remainder + congruence) · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/026-remainder-basics.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/026-remainder-basics.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/026-remainder-basics.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/026-remainder-basics.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/026-remainder-basics.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/026-remainder-basics.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/02-modular-arithmetic/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/02-modular-arithmetic/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="1" data-search="Math 02 · Modular arithmetic 027 — Modular Addition (a+b)%m (modular addition / subtraction) Easy" markdown="1">
<label class="practice-check-label" for="check-math-02-027"><input class="practice-check" type="checkbox" id="check-math-02-027" data-key="01-math-based-programming-fundamentals/02-modular-arithmetic/problems/027-modular-addition.md" disabled><span class="ds-status">সমাধান করেছি: 027 — Modular Addition</span></label>
<div class="practice-problem" markdown="1">

**[027 — Modular Addition](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/027-modular-addition.md)**

<p class="practice-pattern">(a+b)%m (modular addition / subtraction) · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/027-modular-addition.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/027-modular-addition.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/027-modular-addition.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/027-modular-addition.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/027-modular-addition.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/027-modular-addition.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/02-modular-arithmetic/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/02-modular-arithmetic/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="1" data-search="Math 02 · Modular arithmetic 028 — Modular Multiplication (ab)%m (modular multiplication) Easy" markdown="1">
<label class="practice-check-label" for="check-math-02-028"><input class="practice-check" type="checkbox" id="check-math-02-028" data-key="01-math-based-programming-fundamentals/02-modular-arithmetic/problems/028-modular-multiplication.md" disabled><span class="ds-status">সমাধান করেছি: 028 — Modular Multiplication</span></label>
<div class="practice-problem" markdown="1">

**[028 — Modular Multiplication](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/028-modular-multiplication.md)**

<p class="practice-pattern">(ab)%m (modular multiplication) · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/028-modular-multiplication.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/028-modular-multiplication.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/028-modular-multiplication.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/028-modular-multiplication.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/028-modular-multiplication.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/028-modular-multiplication.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/02-modular-arithmetic/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/02-modular-arithmetic/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="1" data-search="Math 02 · Modular arithmetic 029 — Modular Exponentiation square &amp; multiply (binary exponentiation) Medium" markdown="1">
<label class="practice-check-label" for="check-math-02-029"><input class="practice-check" type="checkbox" id="check-math-02-029" data-key="01-math-based-programming-fundamentals/02-modular-arithmetic/problems/029-modular-exponentiation.md" disabled><span class="ds-status">সমাধান করেছি: 029 — Modular Exponentiation</span></label>
<div class="practice-problem" markdown="1">

**[029 — Modular Exponentiation](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/029-modular-exponentiation.md)**

<p class="practice-pattern">square &amp; multiply (binary exponentiation) · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/029-modular-exponentiation.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/029-modular-exponentiation.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/029-modular-exponentiation.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/029-modular-exponentiation.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/029-modular-exponentiation.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/029-modular-exponentiation.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/02-modular-arithmetic/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/02-modular-arithmetic/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 02 · Modular arithmetic 030 — Fast Power binary exponentiation (negative exponent twist) Medium" markdown="1">
<label class="practice-check-label" for="check-math-02-030"><input class="practice-check" type="checkbox" id="check-math-02-030" data-key="01-math-based-programming-fundamentals/02-modular-arithmetic/problems/030-fast-power.md" disabled><span class="ds-status">সমাধান করেছি: 030 — Fast Power</span></label>
<div class="practice-problem" markdown="1">

**[030 — Fast Power](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/030-fast-power.md)**

<p class="practice-pattern">binary exponentiation (negative exponent twist) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/030-fast-power.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/030-fast-power.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/030-fast-power.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/030-fast-power.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/030-fast-power.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/030-fast-power.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/02-modular-arithmetic/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/02-modular-arithmetic/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 02 · Modular arithmetic 031 — Large Number Mod digit-by-digit mod (Horner-style) Medium" markdown="1">
<label class="practice-check-label" for="check-math-02-031"><input class="practice-check" type="checkbox" id="check-math-02-031" data-key="01-math-based-programming-fundamentals/02-modular-arithmetic/problems/031-large-number-mod.md" disabled><span class="ds-status">সমাধান করেছি: 031 — Large Number Mod</span></label>
<div class="practice-problem" markdown="1">

**[031 — Large Number Mod](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/031-large-number-mod.md)**

<p class="practice-pattern">digit-by-digit mod (Horner-style) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/031-large-number-mod.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/031-large-number-mod.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/031-large-number-mod.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/031-large-number-mod.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/031-large-number-mod.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/031-large-number-mod.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/02-modular-arithmetic/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/02-modular-arithmetic/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 02 · Modular arithmetic 032 — Modular Inverse Basic Fermat inverse (a^(p−2) mod p) Medium" markdown="1">
<label class="practice-check-label" for="check-math-02-032"><input class="practice-check" type="checkbox" id="check-math-02-032" data-key="01-math-based-programming-fundamentals/02-modular-arithmetic/problems/032-modular-inverse-basic.md" disabled><span class="ds-status">সমাধান করেছি: 032 — Modular Inverse Basic</span></label>
<div class="practice-problem" markdown="1">

**[032 — Modular Inverse Basic](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/032-modular-inverse-basic.md)**

<p class="practice-pattern">Fermat inverse (a^(p−2) mod p) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/032-modular-inverse-basic.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/032-modular-inverse-basic.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/032-modular-inverse-basic.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/032-modular-inverse-basic.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/032-modular-inverse-basic.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/032-modular-inverse-basic.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/02-modular-arithmetic/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/02-modular-arithmetic/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 02 · Modular arithmetic 033 — Fermat Little Theorem a^(p−1) ≡ 1 (Fermat&#x27;s little theorem) Medium" markdown="1">
<label class="practice-check-label" for="check-math-02-033"><input class="practice-check" type="checkbox" id="check-math-02-033" data-key="01-math-based-programming-fundamentals/02-modular-arithmetic/problems/033-fermat-little-theorem.md" disabled><span class="ds-status">সমাধান করেছি: 033 — Fermat Little Theorem</span></label>
<div class="practice-problem" markdown="1">

**[033 — Fermat Little Theorem](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/033-fermat-little-theorem.md)**

<p class="practice-pattern">a^(p−1) ≡ 1 (Fermat&#x27;s little theorem) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/033-fermat-little-theorem.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/033-fermat-little-theorem.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/033-fermat-little-theorem.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/033-fermat-little-theorem.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/033-fermat-little-theorem.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/033-fermat-little-theorem.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/02-modular-arithmetic/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/02-modular-arithmetic/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 02 · Modular arithmetic 034 — nCr mod Prime factorial + inverse (nCr mod p pipeline) Hard" markdown="1">
<label class="practice-check-label" for="check-math-02-034"><input class="practice-check" type="checkbox" id="check-math-02-034" data-key="01-math-based-programming-fundamentals/02-modular-arithmetic/problems/034-ncr-mod-prime.md" disabled><span class="ds-status">সমাধান করেছি: 034 — nCr mod Prime</span></label>
<div class="practice-problem" markdown="1">

**[034 — nCr mod Prime](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/034-ncr-mod-prime.md)**

<p class="practice-pattern">factorial + inverse (nCr mod p pipeline) · Hard</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/034-ncr-mod-prime.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/034-ncr-mod-prime.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/034-ncr-mod-prime.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/034-ncr-mod-prime.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/034-ncr-mod-prime.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/034-ncr-mod-prime.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/02-modular-arithmetic/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/02-modular-arithmetic/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 02 · Modular arithmetic 035 — Modular Division multiply by inverse (modular division) Medium" markdown="1">
<label class="practice-check-label" for="check-math-02-035"><input class="practice-check" type="checkbox" id="check-math-02-035" data-key="01-math-based-programming-fundamentals/02-modular-arithmetic/problems/035-modular-division.md" disabled><span class="ds-status">সমাধান করেছি: 035 — Modular Division</span></label>
<div class="practice-problem" markdown="1">

**[035 — Modular Division](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/035-modular-division.md)**

<p class="practice-pattern">multiply by inverse (modular division) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/035-modular-division.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/035-modular-division.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/035-modular-division.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/035-modular-division.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/035-modular-division.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/035-modular-division.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/02-modular-arithmetic/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/02-modular-arithmetic/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 02 · Modular arithmetic 036 — Cyclic Remainder Pattern cycle in powers (cyclicity) Easy" markdown="1">
<label class="practice-check-label" for="check-math-02-036"><input class="practice-check" type="checkbox" id="check-math-02-036" data-key="01-math-based-programming-fundamentals/02-modular-arithmetic/problems/036-cyclic-remainder-pattern.md" disabled><span class="ds-status">সমাধান করেছি: 036 — Cyclic Remainder Pattern</span></label>
<div class="practice-problem" markdown="1">

**[036 — Cyclic Remainder Pattern](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/036-cyclic-remainder-pattern.md)**

<p class="practice-pattern">cycle in powers (cyclicity) · Easy</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/036-cyclic-remainder-pattern.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/036-cyclic-remainder-pattern.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/036-cyclic-remainder-pattern.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/036-cyclic-remainder-pattern.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/036-cyclic-remainder-pattern.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/036-cyclic-remainder-pattern.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/02-modular-arithmetic/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/02-modular-arithmetic/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 02 · Modular arithmetic 037 — Clock Arithmetic Problems clock model (wrap-around) Easy" markdown="1">
<label class="practice-check-label" for="check-math-02-037"><input class="practice-check" type="checkbox" id="check-math-02-037" data-key="01-math-based-programming-fundamentals/02-modular-arithmetic/problems/037-clock-arithmetic.md" disabled><span class="ds-status">সমাধান করেছি: 037 — Clock Arithmetic Problems</span></label>
<div class="practice-problem" markdown="1">

**[037 — Clock Arithmetic Problems](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/037-clock-arithmetic.md)**

<p class="practice-pattern">clock model (wrap-around) · Easy</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/037-clock-arithmetic.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/037-clock-arithmetic.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/037-clock-arithmetic.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/037-clock-arithmetic.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/037-clock-arithmetic.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/037-clock-arithmetic.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/02-modular-arithmetic/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/02-modular-arithmetic/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 02 · Modular arithmetic 038 — Hashing with Mod polynomial hash Medium" markdown="1">
<label class="practice-check-label" for="check-math-02-038"><input class="practice-check" type="checkbox" id="check-math-02-038" data-key="01-math-based-programming-fundamentals/02-modular-arithmetic/problems/038-hashing-with-mod.md" disabled><span class="ds-status">সমাধান করেছি: 038 — Hashing with Mod</span></label>
<div class="practice-problem" markdown="1">

**[038 — Hashing with Mod](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/038-hashing-with-mod.md)**

<p class="practice-pattern">polynomial hash · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/038-hashing-with-mod.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/038-hashing-with-mod.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/038-hashing-with-mod.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/038-hashing-with-mod.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/038-hashing-with-mod.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/02-modular-arithmetic/problems/038-hashing-with-mod.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/02-modular-arithmetic/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/02-modular-arithmetic/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

</ol>
</details>

<details class="practice-section" data-section="math-03" markdown="1">
<summary>Math 03 · Counting ও combinatorics <span class="section-count">14টি</span></summary>

**আগে বুঝে নিন:** sum/product rule, permutation, combination।

**আগে পড়ুন:** [ভিত্তি](01-math-based-programming-fundamentals/03-counting-combinatorics/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/03-counting-combinatorics/visualization-ideas.md)।

**Section-এর বড় challenge:** [ধাপে ধাপে প্রয়োগ করুন](guided-practice/math.md)। সব individual problem-এর বিকল্প নয়; প্রধান কৌশল একসঙ্গে ব্যবহার করার পরীক্ষা।

<ol class="practice-list" markdown="1">

<li class="practice-item" data-course="support" data-must="1" data-search="Math 03 · Counting ও combinatorics 039 — Factorial n! (factorial / iterative product) Easy" markdown="1">
<label class="practice-check-label" for="check-math-03-039"><input class="practice-check" type="checkbox" id="check-math-03-039" data-key="01-math-based-programming-fundamentals/03-counting-combinatorics/problems/039-factorial.md" disabled><span class="ds-status">সমাধান করেছি: 039 — Factorial</span></label>
<div class="practice-problem" markdown="1">

**[039 — Factorial](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/039-factorial.md)**

<p class="practice-pattern">n! (factorial / iterative product) · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/039-factorial.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/039-factorial.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/039-factorial.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/039-factorial.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/039-factorial.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/039-factorial.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/03-counting-combinatorics/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/03-counting-combinatorics/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="1" data-search="Math 03 · Counting ও combinatorics 040 — Permutation Basic nPr (permutation / partial product) Easy" markdown="1">
<label class="practice-check-label" for="check-math-03-040"><input class="practice-check" type="checkbox" id="check-math-03-040" data-key="01-math-based-programming-fundamentals/03-counting-combinatorics/problems/040-permutation-basic.md" disabled><span class="ds-status">সমাধান করেছি: 040 — Permutation Basic</span></label>
<div class="practice-problem" markdown="1">

**[040 — Permutation Basic](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/040-permutation-basic.md)**

<p class="practice-pattern">nPr (permutation / partial product) · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/040-permutation-basic.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/040-permutation-basic.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/040-permutation-basic.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/040-permutation-basic.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/040-permutation-basic.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/040-permutation-basic.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/03-counting-combinatorics/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/03-counting-combinatorics/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="1" data-search="Math 03 · Counting ও combinatorics 041 — Combination Basic nCr (combination / binomial coefficient) Easy" markdown="1">
<label class="practice-check-label" for="check-math-03-041"><input class="practice-check" type="checkbox" id="check-math-03-041" data-key="01-math-based-programming-fundamentals/03-counting-combinatorics/problems/041-combination-basic.md" disabled><span class="ds-status">সমাধান করেছি: 041 — Combination Basic</span></label>
<div class="practice-problem" markdown="1">

**[041 — Combination Basic](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/041-combination-basic.md)**

<p class="practice-pattern">nCr (combination / binomial coefficient) · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/041-combination-basic.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/041-combination-basic.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/041-combination-basic.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/041-combination-basic.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/041-combination-basic.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/041-combination-basic.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/03-counting-combinatorics/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/03-counting-combinatorics/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="1" data-search="Math 03 · Counting ও combinatorics 042 — nCr using Pascal Triangle DP-style build (Pascal&#x27;s rule / additive nCr) Medium" markdown="1">
<label class="practice-check-label" for="check-math-03-042"><input class="practice-check" type="checkbox" id="check-math-03-042" data-key="01-math-based-programming-fundamentals/03-counting-combinatorics/problems/042-ncr-pascal-triangle.md" disabled><span class="ds-status">সমাধান করেছি: 042 — nCr using Pascal Triangle</span></label>
<div class="practice-problem" markdown="1">

**[042 — nCr using Pascal Triangle](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/042-ncr-pascal-triangle.md)**

<p class="practice-pattern">DP-style build (Pascal&#x27;s rule / additive nCr) · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/042-ncr-pascal-triangle.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/042-ncr-pascal-triangle.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/042-ncr-pascal-triangle.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/042-ncr-pascal-triangle.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/042-ncr-pascal-triangle.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/042-ncr-pascal-triangle.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/03-counting-combinatorics/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/03-counting-combinatorics/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 03 · Counting ও combinatorics 043 — Stars and Bars Basic identical items split (stars and bars) Medium" markdown="1">
<label class="practice-check-label" for="check-math-03-043"><input class="practice-check" type="checkbox" id="check-math-03-043" data-key="01-math-based-programming-fundamentals/03-counting-combinatorics/problems/043-stars-and-bars.md" disabled><span class="ds-status">সমাধান করেছি: 043 — Stars and Bars Basic</span></label>
<div class="practice-problem" markdown="1">

**[043 — Stars and Bars Basic](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/043-stars-and-bars.md)**

<p class="practice-pattern">identical items split (stars and bars) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/043-stars-and-bars.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/043-stars-and-bars.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/043-stars-and-bars.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/043-stars-and-bars.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/043-stars-and-bars.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/043-stars-and-bars.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/03-counting-combinatorics/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/03-counting-combinatorics/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 03 · Counting ও combinatorics 044 — Inclusion-Exclusion Basic overcount correction (inclusion-exclusion) Medium" markdown="1">
<label class="practice-check-label" for="check-math-03-044"><input class="practice-check" type="checkbox" id="check-math-03-044" data-key="01-math-based-programming-fundamentals/03-counting-combinatorics/problems/044-inclusion-exclusion-basic.md" disabled><span class="ds-status">সমাধান করেছি: 044 — Inclusion-Exclusion Basic</span></label>
<div class="practice-problem" markdown="1">

**[044 — Inclusion-Exclusion Basic](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/044-inclusion-exclusion-basic.md)**

<p class="practice-pattern">overcount correction (inclusion-exclusion) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/044-inclusion-exclusion-basic.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/044-inclusion-exclusion-basic.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/044-inclusion-exclusion-basic.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/044-inclusion-exclusion-basic.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/044-inclusion-exclusion-basic.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/044-inclusion-exclusion-basic.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/03-counting-combinatorics/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/03-counting-combinatorics/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 03 · Counting ও combinatorics 045 — Count Pairs C(n, 2) (pair counting) Easy" markdown="1">
<label class="practice-check-label" for="check-math-03-045"><input class="practice-check" type="checkbox" id="check-math-03-045" data-key="01-math-based-programming-fundamentals/03-counting-combinatorics/problems/045-count-pairs.md" disabled><span class="ds-status">সমাধান করেছি: 045 — Count Pairs</span></label>
<div class="practice-problem" markdown="1">

**[045 — Count Pairs](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/045-count-pairs.md)**

<p class="practice-pattern">C(n, 2) (pair counting) · Easy</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/045-count-pairs.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/045-count-pairs.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/045-count-pairs.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/045-count-pairs.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/045-count-pairs.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/045-count-pairs.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/03-counting-combinatorics/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/03-counting-combinatorics/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 03 · Counting ও combinatorics 046 — Count Triplets C(n, 3) / grouping (triplet counting) Medium" markdown="1">
<label class="practice-check-label" for="check-math-03-046"><input class="practice-check" type="checkbox" id="check-math-03-046" data-key="01-math-based-programming-fundamentals/03-counting-combinatorics/problems/046-count-triplets.md" disabled><span class="ds-status">সমাধান করেছি: 046 — Count Triplets</span></label>
<div class="practice-problem" markdown="1">

**[046 — Count Triplets](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/046-count-triplets.md)**

<p class="practice-pattern">C(n, 3) / grouping (triplet counting) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/046-count-triplets.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/046-count-triplets.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/046-count-triplets.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/046-count-triplets.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/046-count-triplets.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/046-count-triplets.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/03-counting-combinatorics/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/03-counting-combinatorics/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 03 · Counting ও combinatorics 047 — Count Subsets 2^n choices (subset counting) Easy" markdown="1">
<label class="practice-check-label" for="check-math-03-047"><input class="practice-check" type="checkbox" id="check-math-03-047" data-key="01-math-based-programming-fundamentals/03-counting-combinatorics/problems/047-count-subsets.md" disabled><span class="ds-status">সমাধান করেছি: 047 — Count Subsets</span></label>
<div class="practice-problem" markdown="1">

**[047 — Count Subsets](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/047-count-subsets.md)**

<p class="practice-pattern">2^n choices (subset counting) · Easy</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/047-count-subsets.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/047-count-subsets.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/047-count-subsets.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/047-count-subsets.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/047-count-subsets.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/047-count-subsets.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/03-counting-combinatorics/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/03-counting-combinatorics/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 03 · Counting ও combinatorics 048 — Count Paths in Grid C(m+n, n) (grid path = arranging letters) Medium" markdown="1">
<label class="practice-check-label" for="check-math-03-048"><input class="practice-check" type="checkbox" id="check-math-03-048" data-key="01-math-based-programming-fundamentals/03-counting-combinatorics/problems/048-count-paths-in-grid.md" disabled><span class="ds-status">সমাধান করেছি: 048 — Count Paths in Grid</span></label>
<div class="practice-problem" markdown="1">

**[048 — Count Paths in Grid](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/048-count-paths-in-grid.md)**

<p class="practice-pattern">C(m+n, n) (grid path = arranging letters) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/048-count-paths-in-grid.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/048-count-paths-in-grid.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/048-count-paths-in-grid.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/048-count-paths-in-grid.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/048-count-paths-in-grid.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/048-count-paths-in-grid.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/03-counting-combinatorics/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/03-counting-combinatorics/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 03 · Counting ও combinatorics 049 — Catalan Number Intro balanced structures (Catalan number) Medium" markdown="1">
<label class="practice-check-label" for="check-math-03-049"><input class="practice-check" type="checkbox" id="check-math-03-049" data-key="01-math-based-programming-fundamentals/03-counting-combinatorics/problems/049-catalan-number-intro.md" disabled><span class="ds-status">সমাধান করেছি: 049 — Catalan Number Intro</span></label>
<div class="practice-problem" markdown="1">

**[049 — Catalan Number Intro](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/049-catalan-number-intro.md)**

<p class="practice-pattern">balanced structures (Catalan number) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/049-catalan-number-intro.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/049-catalan-number-intro.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/049-catalan-number-intro.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/049-catalan-number-intro.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/049-catalan-number-intro.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/049-catalan-number-intro.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/03-counting-combinatorics/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/03-counting-combinatorics/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 03 · Counting ও combinatorics 050 — Derangement Intro !n recurrence (derangement) Medium" markdown="1">
<label class="practice-check-label" for="check-math-03-050"><input class="practice-check" type="checkbox" id="check-math-03-050" data-key="01-math-based-programming-fundamentals/03-counting-combinatorics/problems/050-derangement-intro.md" disabled><span class="ds-status">সমাধান করেছি: 050 — Derangement Intro</span></label>
<div class="practice-problem" markdown="1">

**[050 — Derangement Intro](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/050-derangement-intro.md)**

<p class="practice-pattern">!n recurrence (derangement) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/050-derangement-intro.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/050-derangement-intro.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/050-derangement-intro.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/050-derangement-intro.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/050-derangement-intro.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/050-derangement-intro.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/03-counting-combinatorics/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/03-counting-combinatorics/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 03 · Counting ও combinatorics 051 — Pigeonhole Principle Problems existence argument (pigeonhole) Medium" markdown="1">
<label class="practice-check-label" for="check-math-03-051"><input class="practice-check" type="checkbox" id="check-math-03-051" data-key="01-math-based-programming-fundamentals/03-counting-combinatorics/problems/051-pigeonhole-principle.md" disabled><span class="ds-status">সমাধান করেছি: 051 — Pigeonhole Principle Problems</span></label>
<div class="practice-problem" markdown="1">

**[051 — Pigeonhole Principle Problems](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/051-pigeonhole-principle.md)**

<p class="practice-pattern">existence argument (pigeonhole) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/051-pigeonhole-principle.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/051-pigeonhole-principle.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/051-pigeonhole-principle.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/051-pigeonhole-principle.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/051-pigeonhole-principle.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/051-pigeonhole-principle.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/03-counting-combinatorics/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/03-counting-combinatorics/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 03 · Counting ও combinatorics 052 — Birthday Paradox Style Problems collision probability (birthday paradox) Medium" markdown="1">
<label class="practice-check-label" for="check-math-03-052"><input class="practice-check" type="checkbox" id="check-math-03-052" data-key="01-math-based-programming-fundamentals/03-counting-combinatorics/problems/052-birthday-paradox-style.md" disabled><span class="ds-status">সমাধান করেছি: 052 — Birthday Paradox Style Problems</span></label>
<div class="practice-problem" markdown="1">

**[052 — Birthday Paradox Style Problems](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/052-birthday-paradox-style.md)**

<p class="practice-pattern">collision probability (birthday paradox) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/052-birthday-paradox-style.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/052-birthday-paradox-style.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/052-birthday-paradox-style.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/052-birthday-paradox-style.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/052-birthday-paradox-style.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/03-counting-combinatorics/problems/052-birthday-paradox-style.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/03-counting-combinatorics/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/03-counting-combinatorics/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

</ol>
</details>

<details class="practice-section" data-section="math-04" markdown="1">
<summary>Math 04 · Bit manipulation <span class="section-count">14টি</span></summary>

**আগে বুঝে নিন:** binary place value, mask, XOR।

**আগে পড়ুন:** [ভিত্তি](01-math-based-programming-fundamentals/04-bit-manipulation/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/04-bit-manipulation/visualization-ideas.md)।

**Section-এর বড় challenge:** [ধাপে ধাপে প্রয়োগ করুন](guided-practice/math.md)। সব individual problem-এর বিকল্প নয়; প্রধান কৌশল একসঙ্গে ব্যবহার করার পরীক্ষা।

<ol class="practice-list" markdown="1">

<li class="practice-item" data-course="support" data-must="1" data-search="Math 04 · Bit manipulation 053 — Binary Representation base conversion (place value টেবিল) Easy" markdown="1">
<label class="practice-check-label" for="check-math-04-053"><input class="practice-check" type="checkbox" id="check-math-04-053" data-key="01-math-based-programming-fundamentals/04-bit-manipulation/problems/053-binary-representation.md" disabled><span class="ds-status">সমাধান করেছি: 053 — Binary Representation</span></label>
<div class="practice-problem" markdown="1">

**[053 — Binary Representation](01-math-based-programming-fundamentals/04-bit-manipulation/problems/053-binary-representation.md)**

<p class="practice-pattern">base conversion (place value টেবিল) · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/04-bit-manipulation/problems/053-binary-representation.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/04-bit-manipulation/problems/053-binary-representation.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/04-bit-manipulation/problems/053-binary-representation.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/04-bit-manipulation/problems/053-binary-representation.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/04-bit-manipulation/problems/053-binary-representation.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/04-bit-manipulation/problems/053-binary-representation.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/04-bit-manipulation/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/04-bit-manipulation/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="1" data-search="Math 04 · Bit manipulation 054 — Check ith Bit mask &amp; (AND দিয়ে নির্দিষ্ট bit পড়া) Easy" markdown="1">
<label class="practice-check-label" for="check-math-04-054"><input class="practice-check" type="checkbox" id="check-math-04-054" data-key="01-math-based-programming-fundamentals/04-bit-manipulation/problems/054-check-ith-bit.md" disabled><span class="ds-status">সমাধান করেছি: 054 — Check ith Bit</span></label>
<div class="practice-problem" markdown="1">

**[054 — Check ith Bit](01-math-based-programming-fundamentals/04-bit-manipulation/problems/054-check-ith-bit.md)**

<p class="practice-pattern">mask &amp; (AND দিয়ে নির্দিষ্ট bit পড়া) · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/04-bit-manipulation/problems/054-check-ith-bit.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/04-bit-manipulation/problems/054-check-ith-bit.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/04-bit-manipulation/problems/054-check-ith-bit.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/04-bit-manipulation/problems/054-check-ith-bit.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/04-bit-manipulation/problems/054-check-ith-bit.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/04-bit-manipulation/problems/054-check-ith-bit.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/04-bit-manipulation/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/04-bit-manipulation/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="1" data-search="Math 04 · Bit manipulation 055 — Set ith Bit mask OR (| দিয়ে নির্দিষ্ট bit জ্বালানো) Easy" markdown="1">
<label class="practice-check-label" for="check-math-04-055"><input class="practice-check" type="checkbox" id="check-math-04-055" data-key="01-math-based-programming-fundamentals/04-bit-manipulation/problems/055-set-ith-bit.md" disabled><span class="ds-status">সমাধান করেছি: 055 — Set ith Bit</span></label>
<div class="practice-problem" markdown="1">

**[055 — Set ith Bit](01-math-based-programming-fundamentals/04-bit-manipulation/problems/055-set-ith-bit.md)**

<p class="practice-pattern">mask OR (| দিয়ে নির্দিষ্ট bit জ্বালানো) · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/04-bit-manipulation/problems/055-set-ith-bit.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/04-bit-manipulation/problems/055-set-ith-bit.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/04-bit-manipulation/problems/055-set-ith-bit.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/04-bit-manipulation/problems/055-set-ith-bit.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/04-bit-manipulation/problems/055-set-ith-bit.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/04-bit-manipulation/problems/055-set-ith-bit.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/04-bit-manipulation/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/04-bit-manipulation/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="1" data-search="Math 04 · Bit manipulation 056 — Clear ith Bit mask &amp; ~ (উল্টানো mask দিয়ে নির্দিষ্ট bit নেভানো) Easy" markdown="1">
<label class="practice-check-label" for="check-math-04-056"><input class="practice-check" type="checkbox" id="check-math-04-056" data-key="01-math-based-programming-fundamentals/04-bit-manipulation/problems/056-clear-ith-bit.md" disabled><span class="ds-status">সমাধান করেছি: 056 — Clear ith Bit</span></label>
<div class="practice-problem" markdown="1">

**[056 — Clear ith Bit](01-math-based-programming-fundamentals/04-bit-manipulation/problems/056-clear-ith-bit.md)**

<p class="practice-pattern">mask &amp; ~ (উল্টানো mask দিয়ে নির্দিষ্ট bit নেভানো) · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/04-bit-manipulation/problems/056-clear-ith-bit.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/04-bit-manipulation/problems/056-clear-ith-bit.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/04-bit-manipulation/problems/056-clear-ith-bit.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/04-bit-manipulation/problems/056-clear-ith-bit.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/04-bit-manipulation/problems/056-clear-ith-bit.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/04-bit-manipulation/problems/056-clear-ith-bit.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/04-bit-manipulation/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/04-bit-manipulation/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 04 · Bit manipulation 057 — Toggle ith Bit mask ^ (XOR দিয়ে নির্দিষ্ট bit উল্টানো) Easy" markdown="1">
<label class="practice-check-label" for="check-math-04-057"><input class="practice-check" type="checkbox" id="check-math-04-057" data-key="01-math-based-programming-fundamentals/04-bit-manipulation/problems/057-toggle-ith-bit.md" disabled><span class="ds-status">সমাধান করেছি: 057 — Toggle ith Bit</span></label>
<div class="practice-problem" markdown="1">

**[057 — Toggle ith Bit](01-math-based-programming-fundamentals/04-bit-manipulation/problems/057-toggle-ith-bit.md)**

<p class="practice-pattern">mask ^ (XOR দিয়ে নির্দিষ্ট bit উল্টানো) · Easy</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/04-bit-manipulation/problems/057-toggle-ith-bit.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/04-bit-manipulation/problems/057-toggle-ith-bit.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/04-bit-manipulation/problems/057-toggle-ith-bit.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/04-bit-manipulation/problems/057-toggle-ith-bit.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/04-bit-manipulation/problems/057-toggle-ith-bit.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/04-bit-manipulation/problems/057-toggle-ith-bit.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/04-bit-manipulation/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/04-bit-manipulation/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 04 · Bit manipulation 058 — Count Set Bits n &amp; (n - 1) loop (lowest set bit বারবার মুছে গোনা) Easy" markdown="1">
<label class="practice-check-label" for="check-math-04-058"><input class="practice-check" type="checkbox" id="check-math-04-058" data-key="01-math-based-programming-fundamentals/04-bit-manipulation/problems/058-count-set-bits.md" disabled><span class="ds-status">সমাধান করেছি: 058 — Count Set Bits</span></label>
<div class="practice-problem" markdown="1">

**[058 — Count Set Bits](01-math-based-programming-fundamentals/04-bit-manipulation/problems/058-count-set-bits.md)**

<p class="practice-pattern">n &amp; (n - 1) loop (lowest set bit বারবার মুছে গোনা) · Easy</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/04-bit-manipulation/problems/058-count-set-bits.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/04-bit-manipulation/problems/058-count-set-bits.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/04-bit-manipulation/problems/058-count-set-bits.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/04-bit-manipulation/problems/058-count-set-bits.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/04-bit-manipulation/problems/058-count-set-bits.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/04-bit-manipulation/problems/058-count-set-bits.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/04-bit-manipulation/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/04-bit-manipulation/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 04 · Bit manipulation 059 — Power of Two n &amp; (n - 1) == 0 (একটাই set bit আছে কিনা) Easy" markdown="1">
<label class="practice-check-label" for="check-math-04-059"><input class="practice-check" type="checkbox" id="check-math-04-059" data-key="01-math-based-programming-fundamentals/04-bit-manipulation/problems/059-power-of-two.md" disabled><span class="ds-status">সমাধান করেছি: 059 — Power of Two</span></label>
<div class="practice-problem" markdown="1">

**[059 — Power of Two](01-math-based-programming-fundamentals/04-bit-manipulation/problems/059-power-of-two.md)**

<p class="practice-pattern">n &amp; (n - 1) == 0 (একটাই set bit আছে কিনা) · Easy</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/04-bit-manipulation/problems/059-power-of-two.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/04-bit-manipulation/problems/059-power-of-two.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/04-bit-manipulation/problems/059-power-of-two.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/04-bit-manipulation/problems/059-power-of-two.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/04-bit-manipulation/problems/059-power-of-two.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/04-bit-manipulation/problems/059-power-of-two.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/04-bit-manipulation/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/04-bit-manipulation/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 04 · Bit manipulation 060 — Odd One Out using XOR XOR cancel (a ^ a = 0 দিয়ে জোড়া বাতিল) Easy" markdown="1">
<label class="practice-check-label" for="check-math-04-060"><input class="practice-check" type="checkbox" id="check-math-04-060" data-key="01-math-based-programming-fundamentals/04-bit-manipulation/problems/060-odd-one-out-xor.md" disabled><span class="ds-status">সমাধান করেছি: 060 — Odd One Out using XOR</span></label>
<div class="practice-problem" markdown="1">

**[060 — Odd One Out using XOR](01-math-based-programming-fundamentals/04-bit-manipulation/problems/060-odd-one-out-xor.md)**

<p class="practice-pattern">XOR cancel (a ^ a = 0 দিয়ে জোড়া বাতিল) · Easy</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/04-bit-manipulation/problems/060-odd-one-out-xor.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/04-bit-manipulation/problems/060-odd-one-out-xor.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/04-bit-manipulation/problems/060-odd-one-out-xor.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/04-bit-manipulation/problems/060-odd-one-out-xor.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/04-bit-manipulation/problems/060-odd-one-out-xor.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/04-bit-manipulation/problems/060-odd-one-out-xor.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/04-bit-manipulation/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/04-bit-manipulation/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 04 · Bit manipulation 061 — Find Two Unique Numbers XOR partition (XOR all, তারপর একটা set bit দিয়ে দুই দলে ভাগ) Medium" markdown="1">
<label class="practice-check-label" for="check-math-04-061"><input class="practice-check" type="checkbox" id="check-math-04-061" data-key="01-math-based-programming-fundamentals/04-bit-manipulation/problems/061-find-two-unique-numbers.md" disabled><span class="ds-status">সমাধান করেছি: 061 — Find Two Unique Numbers</span></label>
<div class="practice-problem" markdown="1">

**[061 — Find Two Unique Numbers](01-math-based-programming-fundamentals/04-bit-manipulation/problems/061-find-two-unique-numbers.md)**

<p class="practice-pattern">XOR partition (XOR all, তারপর একটা set bit দিয়ে দুই দলে ভাগ) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/04-bit-manipulation/problems/061-find-two-unique-numbers.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/04-bit-manipulation/problems/061-find-two-unique-numbers.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/04-bit-manipulation/problems/061-find-two-unique-numbers.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/04-bit-manipulation/problems/061-find-two-unique-numbers.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/04-bit-manipulation/problems/061-find-two-unique-numbers.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/04-bit-manipulation/problems/061-find-two-unique-numbers.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/04-bit-manipulation/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/04-bit-manipulation/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 04 · Bit manipulation 062 — Subset Generation using Bits bitmask enumeration (0 থেকে 2^n - 1, প্রতিটা mask = একটা subset) Medium" markdown="1">
<label class="practice-check-label" for="check-math-04-062"><input class="practice-check" type="checkbox" id="check-math-04-062" data-key="01-math-based-programming-fundamentals/04-bit-manipulation/problems/062-subset-generation-bits.md" disabled><span class="ds-status">সমাধান করেছি: 062 — Subset Generation using Bits</span></label>
<div class="practice-problem" markdown="1">

**[062 — Subset Generation using Bits](01-math-based-programming-fundamentals/04-bit-manipulation/problems/062-subset-generation-bits.md)**

<p class="practice-pattern">bitmask enumeration (0 থেকে 2^n - 1, প্রতিটা mask = একটা subset) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/04-bit-manipulation/problems/062-subset-generation-bits.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/04-bit-manipulation/problems/062-subset-generation-bits.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/04-bit-manipulation/problems/062-subset-generation-bits.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/04-bit-manipulation/problems/062-subset-generation-bits.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/04-bit-manipulation/problems/062-subset-generation-bits.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/04-bit-manipulation/problems/062-subset-generation-bits.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/04-bit-manipulation/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/04-bit-manipulation/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 04 · Bit manipulation 063 — Bitmask DP Intro state as mask (visited set = একটা int, dp[mask]) Hard" markdown="1">
<label class="practice-check-label" for="check-math-04-063"><input class="practice-check" type="checkbox" id="check-math-04-063" data-key="01-math-based-programming-fundamentals/04-bit-manipulation/problems/063-bitmask-dp-intro.md" disabled><span class="ds-status">সমাধান করেছি: 063 — Bitmask DP Intro</span></label>
<div class="practice-problem" markdown="1">

**[063 — Bitmask DP Intro](01-math-based-programming-fundamentals/04-bit-manipulation/problems/063-bitmask-dp-intro.md)**

<p class="practice-pattern">state as mask (visited set = একটা int, dp[mask]) · Hard</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/04-bit-manipulation/problems/063-bitmask-dp-intro.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/04-bit-manipulation/problems/063-bitmask-dp-intro.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/04-bit-manipulation/problems/063-bitmask-dp-intro.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/04-bit-manipulation/problems/063-bitmask-dp-intro.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/04-bit-manipulation/problems/063-bitmask-dp-intro.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/04-bit-manipulation/problems/063-bitmask-dp-intro.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/04-bit-manipulation/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/04-bit-manipulation/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 04 · Bit manipulation 064 — Gray Code n ^ (n &gt;&gt; 1) (binary থেকে gray code রূপান্তর) Medium" markdown="1">
<label class="practice-check-label" for="check-math-04-064"><input class="practice-check" type="checkbox" id="check-math-04-064" data-key="01-math-based-programming-fundamentals/04-bit-manipulation/problems/064-gray-code.md" disabled><span class="ds-status">সমাধান করেছি: 064 — Gray Code</span></label>
<div class="practice-problem" markdown="1">

**[064 — Gray Code](01-math-based-programming-fundamentals/04-bit-manipulation/problems/064-gray-code.md)**

<p class="practice-pattern">n ^ (n &gt;&gt; 1) (binary থেকে gray code রূপান্তর) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/04-bit-manipulation/problems/064-gray-code.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/04-bit-manipulation/problems/064-gray-code.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/04-bit-manipulation/problems/064-gray-code.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/04-bit-manipulation/problems/064-gray-code.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/04-bit-manipulation/problems/064-gray-code.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/04-bit-manipulation/problems/064-gray-code.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/04-bit-manipulation/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/04-bit-manipulation/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 04 · Bit manipulation 065 — AND/OR/XOR Range Tricks common prefix (range AND = l আর r-এর common binary prefix) Medium" markdown="1">
<label class="practice-check-label" for="check-math-04-065"><input class="practice-check" type="checkbox" id="check-math-04-065" data-key="01-math-based-programming-fundamentals/04-bit-manipulation/problems/065-and-or-xor-range-tricks.md" disabled><span class="ds-status">সমাধান করেছি: 065 — AND/OR/XOR Range Tricks</span></label>
<div class="practice-problem" markdown="1">

**[065 — AND/OR/XOR Range Tricks](01-math-based-programming-fundamentals/04-bit-manipulation/problems/065-and-or-xor-range-tricks.md)**

<p class="practice-pattern">common prefix (range AND = l আর r-এর common binary prefix) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/04-bit-manipulation/problems/065-and-or-xor-range-tricks.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/04-bit-manipulation/problems/065-and-or-xor-range-tricks.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/04-bit-manipulation/problems/065-and-or-xor-range-tricks.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/04-bit-manipulation/problems/065-and-or-xor-range-tricks.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/04-bit-manipulation/problems/065-and-or-xor-range-tricks.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/04-bit-manipulation/problems/065-and-or-xor-range-tricks.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/04-bit-manipulation/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/04-bit-manipulation/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 04 · Bit manipulation 066 — Maximum XOR Pair greedy by bit / trie (উপরের bit থেকে greedy, hash set/trie দিয়ে check) Hard" markdown="1">
<label class="practice-check-label" for="check-math-04-066"><input class="practice-check" type="checkbox" id="check-math-04-066" data-key="01-math-based-programming-fundamentals/04-bit-manipulation/problems/066-maximum-xor-pair.md" disabled><span class="ds-status">সমাধান করেছি: 066 — Maximum XOR Pair</span></label>
<div class="practice-problem" markdown="1">

**[066 — Maximum XOR Pair](01-math-based-programming-fundamentals/04-bit-manipulation/problems/066-maximum-xor-pair.md)**

<p class="practice-pattern">greedy by bit / trie (উপরের bit থেকে greedy, hash set/trie দিয়ে check) · Hard</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/04-bit-manipulation/problems/066-maximum-xor-pair.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/04-bit-manipulation/problems/066-maximum-xor-pair.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/04-bit-manipulation/problems/066-maximum-xor-pair.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/04-bit-manipulation/problems/066-maximum-xor-pair.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/04-bit-manipulation/problems/066-maximum-xor-pair.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/04-bit-manipulation/problems/066-maximum-xor-pair.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/04-bit-manipulation/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/04-bit-manipulation/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

</ol>
</details>

<details class="practice-section" data-section="math-05" markdown="1">
<summary>Math 05 · Prefix, difference ও contribution <span class="section-count">14টি</span></summary>

**আগে বুঝে নিন:** half-open range, prefix হিসাব, delta।

**আগে পড়ুন:** [ভিত্তি](01-math-based-programming-fundamentals/05-prefix-difference-contribution/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/05-prefix-difference-contribution/visualization-ideas.md)।

**Section-এর বড় challenge:** [ধাপে ধাপে প্রয়োগ করুন](guided-practice/math.md)। সব individual problem-এর বিকল্প নয়; প্রধান কৌশল একসঙ্গে ব্যবহার করার পরীক্ষা।

<ol class="practice-list" markdown="1">

<li class="practice-item" data-course="support" data-must="1" data-search="Math 05 · Prefix, difference ও contribution 067 — Prefix Sum running total (prefix sum build) Easy" markdown="1">
<label class="practice-check-label" for="check-math-05-067"><input class="practice-check" type="checkbox" id="check-math-05-067" data-key="01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/067-prefix-sum.md" disabled><span class="ds-status">সমাধান করেছি: 067 — Prefix Sum</span></label>
<div class="practice-problem" markdown="1">

**[067 — Prefix Sum](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/067-prefix-sum.md)**

<p class="practice-pattern">running total (prefix sum build) · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/067-prefix-sum.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/067-prefix-sum.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/067-prefix-sum.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/067-prefix-sum.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/067-prefix-sum.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/067-prefix-sum.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/05-prefix-difference-contribution/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/05-prefix-difference-contribution/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="1" data-search="Math 05 · Prefix, difference ও contribution 068 — Range Sum Query range sum via P[r] - P[l-1] Easy" markdown="1">
<label class="practice-check-label" for="check-math-05-068"><input class="practice-check" type="checkbox" id="check-math-05-068" data-key="01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/068-range-sum-query.md" disabled><span class="ds-status">সমাধান করেছি: 068 — Range Sum Query</span></label>
<div class="practice-problem" markdown="1">

**[068 — Range Sum Query](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/068-range-sum-query.md)**

<p class="practice-pattern">range sum via P[r] - P[l-1] · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/068-range-sum-query.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/068-range-sum-query.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/068-range-sum-query.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/068-range-sum-query.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/068-range-sum-query.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/068-range-sum-query.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/05-prefix-difference-contribution/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/05-prefix-difference-contribution/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="1" data-search="Math 05 · Prefix, difference ও contribution 069 — Difference Array range update via two-point marking Medium" markdown="1">
<label class="practice-check-label" for="check-math-05-069"><input class="practice-check" type="checkbox" id="check-math-05-069" data-key="01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/069-difference-array.md" disabled><span class="ds-status">সমাধান করেছি: 069 — Difference Array</span></label>
<div class="practice-problem" markdown="1">

**[069 — Difference Array](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/069-difference-array.md)**

<p class="practice-pattern">range update via two-point marking · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/069-difference-array.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/069-difference-array.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/069-difference-array.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/069-difference-array.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/069-difference-array.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/069-difference-array.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/05-prefix-difference-contribution/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/05-prefix-difference-contribution/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="1" data-search="Math 05 · Prefix, difference ও contribution 070 — Range Update Query difference array (update) + prefix sum (query) Medium" markdown="1">
<label class="practice-check-label" for="check-math-05-070"><input class="practice-check" type="checkbox" id="check-math-05-070" data-key="01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/070-range-update-query.md" disabled><span class="ds-status">সমাধান করেছি: 070 — Range Update Query</span></label>
<div class="practice-problem" markdown="1">

**[070 — Range Update Query](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/070-range-update-query.md)**

<p class="practice-pattern">difference array (update) + prefix sum (query) · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/070-range-update-query.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/070-range-update-query.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/070-range-update-query.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/070-range-update-query.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/070-range-update-query.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/070-range-update-query.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/05-prefix-difference-contribution/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/05-prefix-difference-contribution/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 05 · Prefix, difference ও contribution 071 — Prefix XOR prefix XOR (range XOR via PX[r+1] ^ PX[l]) Medium" markdown="1">
<label class="practice-check-label" for="check-math-05-071"><input class="practice-check" type="checkbox" id="check-math-05-071" data-key="01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/071-prefix-xor.md" disabled><span class="ds-status">সমাধান করেছি: 071 — Prefix XOR</span></label>
<div class="practice-problem" markdown="1">

**[071 — Prefix XOR](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/071-prefix-xor.md)**

<p class="practice-pattern">prefix XOR (range XOR via PX[r+1] ^ PX[l]) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/071-prefix-xor.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/071-prefix-xor.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/071-prefix-xor.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/071-prefix-xor.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/071-prefix-xor.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/071-prefix-xor.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/05-prefix-difference-contribution/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/05-prefix-difference-contribution/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 05 · Prefix, difference ও contribution 072 — 2D Prefix Sum 2D prefix sum (rectangle sum via inclusion-exclusion) Medium" markdown="1">
<label class="practice-check-label" for="check-math-05-072"><input class="practice-check" type="checkbox" id="check-math-05-072" data-key="01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/072-2d-prefix-sum.md" disabled><span class="ds-status">সমাধান করেছি: 072 — 2D Prefix Sum</span></label>
<div class="practice-problem" markdown="1">

**[072 — 2D Prefix Sum](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/072-2d-prefix-sum.md)**

<p class="practice-pattern">2D prefix sum (rectangle sum via inclusion-exclusion) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/072-2d-prefix-sum.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/072-2d-prefix-sum.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/072-2d-prefix-sum.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/072-2d-prefix-sum.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/072-2d-prefix-sum.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/072-2d-prefix-sum.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/05-prefix-difference-contribution/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/05-prefix-difference-contribution/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support M4" data-must="0" data-search="Math 05 · Prefix, difference ও contribution 073 — Subarray Sum Equals K prefix sum + hash map (complement lookup) Medium" markdown="1">
<label class="practice-check-label" for="check-math-05-073"><input class="practice-check" type="checkbox" id="check-math-05-073" data-key="01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/073-subarray-sum-equals-k.md" disabled><span class="ds-status">সমাধান করেছি: 073 — Subarray Sum Equals K</span></label>
<div class="practice-problem" markdown="1">

**[073 — Subarray Sum Equals K](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/073-subarray-sum-equals-k.md)**

<p class="practice-pattern">prefix sum + hash map (complement lookup) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/073-subarray-sum-equals-k.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/073-subarray-sum-equals-k.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/073-subarray-sum-equals-k.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/073-subarray-sum-equals-k.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/073-subarray-sum-equals-k.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/073-subarray-sum-equals-k.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/05-prefix-difference-contribution/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/05-prefix-difference-contribution/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 05 · Prefix, difference ও contribution 074 — Count Subarrays Divisible by K prefix sum mod K + hash map (same-remainder counting) Medium" markdown="1">
<label class="practice-check-label" for="check-math-05-074"><input class="practice-check" type="checkbox" id="check-math-05-074" data-key="01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/074-subarrays-divisible-by-k.md" disabled><span class="ds-status">সমাধান করেছি: 074 — Count Subarrays Divisible by K</span></label>
<div class="practice-problem" markdown="1">

**[074 — Count Subarrays Divisible by K](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/074-subarrays-divisible-by-k.md)**

<p class="practice-pattern">prefix sum mod K + hash map (same-remainder counting) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/074-subarrays-divisible-by-k.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/074-subarrays-divisible-by-k.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/074-subarrays-divisible-by-k.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/074-subarrays-divisible-by-k.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/074-subarrays-divisible-by-k.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/074-subarrays-divisible-by-k.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/05-prefix-difference-contribution/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/05-prefix-difference-contribution/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 05 · Prefix, difference ও contribution 075 — Contribution Technique Basic contribution technique (count subarrays containing each index) Medium" markdown="1">
<label class="practice-check-label" for="check-math-05-075"><input class="practice-check" type="checkbox" id="check-math-05-075" data-key="01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/075-contribution-technique-basic.md" disabled><span class="ds-status">সমাধান করেছি: 075 — Contribution Technique Basic</span></label>
<div class="practice-problem" markdown="1">

**[075 — Contribution Technique Basic](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/075-contribution-technique-basic.md)**

<p class="practice-pattern">contribution technique (count subarrays containing each index) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/075-contribution-technique-basic.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/075-contribution-technique-basic.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/075-contribution-technique-basic.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/075-contribution-technique-basic.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/075-contribution-technique-basic.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/075-contribution-technique-basic.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/05-prefix-difference-contribution/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/05-prefix-difference-contribution/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 05 · Prefix, difference ও contribution 076 — Sum of All Subarrays contribution technique — sum of all subarrays via (i+1)(n-i) Medium" markdown="1">
<label class="practice-check-label" for="check-math-05-076"><input class="practice-check" type="checkbox" id="check-math-05-076" data-key="01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/076-sum-of-all-subarrays.md" disabled><span class="ds-status">সমাধান করেছি: 076 — Sum of All Subarrays</span></label>
<div class="practice-problem" markdown="1">

**[076 — Sum of All Subarrays](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/076-sum-of-all-subarrays.md)**

<p class="practice-pattern">contribution technique — sum of all subarrays via (i+1)(n-i) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/076-sum-of-all-subarrays.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/076-sum-of-all-subarrays.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/076-sum-of-all-subarrays.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/076-sum-of-all-subarrays.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/076-sum-of-all-subarrays.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/076-sum-of-all-subarrays.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/05-prefix-difference-contribution/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/05-prefix-difference-contribution/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 05 · Prefix, difference ও contribution 077 — Sum of Subarray Minimums contribution + next/previous-smaller spans (monotonic stack) Hard" markdown="1">
<label class="practice-check-label" for="check-math-05-077"><input class="practice-check" type="checkbox" id="check-math-05-077" data-key="01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/077-sum-of-subarray-minimums.md" disabled><span class="ds-status">সমাধান করেছি: 077 — Sum of Subarray Minimums</span></label>
<div class="practice-problem" markdown="1">

**[077 — Sum of Subarray Minimums](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/077-sum-of-subarray-minimums.md)**

<p class="practice-pattern">contribution + next/previous-smaller spans (monotonic stack) · Hard</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/077-sum-of-subarray-minimums.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/077-sum-of-subarray-minimums.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/077-sum-of-subarray-minimums.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/077-sum-of-subarray-minimums.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/077-sum-of-subarray-minimums.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/077-sum-of-subarray-minimums.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/05-prefix-difference-contribution/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/05-prefix-difference-contribution/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 05 · Prefix, difference ও contribution 078 — Pair Contribution Problems pair contribution (count pairs each element participates in) Medium" markdown="1">
<label class="practice-check-label" for="check-math-05-078"><input class="practice-check" type="checkbox" id="check-math-05-078" data-key="01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/078-pair-contribution-problems.md" disabled><span class="ds-status">সমাধান করেছি: 078 — Pair Contribution Problems</span></label>
<div class="practice-problem" markdown="1">

**[078 — Pair Contribution Problems](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/078-pair-contribution-problems.md)**

<p class="practice-pattern">pair contribution (count pairs each element participates in) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/078-pair-contribution-problems.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/078-pair-contribution-problems.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/078-pair-contribution-problems.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/078-pair-contribution-problems.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/078-pair-contribution-problems.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/078-pair-contribution-problems.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/05-prefix-difference-contribution/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/05-prefix-difference-contribution/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 05 · Prefix, difference ও contribution 079 — Imos Method Basic imos method (interval → +1/−1 events → prefix) Medium" markdown="1">
<label class="practice-check-label" for="check-math-05-079"><input class="practice-check" type="checkbox" id="check-math-05-079" data-key="01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/079-imos-method-basic.md" disabled><span class="ds-status">সমাধান করেছি: 079 — Imos Method Basic</span></label>
<div class="practice-problem" markdown="1">

**[079 — Imos Method Basic](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/079-imos-method-basic.md)**

<p class="practice-pattern">imos method (interval → +1/−1 events → prefix) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/079-imos-method-basic.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/079-imos-method-basic.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/079-imos-method-basic.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/079-imos-method-basic.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/079-imos-method-basic.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/079-imos-method-basic.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/05-prefix-difference-contribution/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/05-prefix-difference-contribution/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 05 · Prefix, difference ও contribution 080 — Sweep Line Intro sweep line (sort +1/−1 events, running count) Medium" markdown="1">
<label class="practice-check-label" for="check-math-05-080"><input class="practice-check" type="checkbox" id="check-math-05-080" data-key="01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/080-sweep-line-intro.md" disabled><span class="ds-status">সমাধান করেছি: 080 — Sweep Line Intro</span></label>
<div class="practice-problem" markdown="1">

**[080 — Sweep Line Intro](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/080-sweep-line-intro.md)**

<p class="practice-pattern">sweep line (sort +1/−1 events, running count) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/080-sweep-line-intro.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/080-sweep-line-intro.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/080-sweep-line-intro.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/080-sweep-line-intro.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/080-sweep-line-intro.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/05-prefix-difference-contribution/problems/080-sweep-line-intro.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/05-prefix-difference-contribution/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/05-prefix-difference-contribution/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

</ol>
</details>

<details class="practice-section" data-section="math-06" markdown="1">
<summary>Math 06 · Two pointers ও sliding window <span class="section-count">10টি</span></summary>

**আগে বুঝে নিন:** sorted order, positive window, frequency।

**আগে পড়ুন:** [ভিত্তি](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/visualization-ideas.md)।

**Section-এর বড় challenge:** [ধাপে ধাপে প্রয়োগ করুন](guided-practice/math.md)। সব individual problem-এর বিকল্প নয়; প্রধান কৌশল একসঙ্গে ব্যবহার করার পরীক্ষা।

<ol class="practice-list" markdown="1">

<li class="practice-item" data-course="support" data-must="1" data-search="Math 06 · Two pointers ও sliding window 081 — Two Sum Sorted opposite pointers (দুই প্রান্ত থেকে চাপা) Easy" markdown="1">
<label class="practice-check-label" for="check-math-06-081"><input class="practice-check" type="checkbox" id="check-math-06-081" data-key="01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/081-two-sum-sorted.md" disabled><span class="ds-status">সমাধান করেছি: 081 — Two Sum Sorted</span></label>
<div class="practice-problem" markdown="1">

**[081 — Two Sum Sorted](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/081-two-sum-sorted.md)**

<p class="practice-pattern">opposite pointers (দুই প্রান্ত থেকে চাপা) · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/081-two-sum-sorted.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/081-two-sum-sorted.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/081-two-sum-sorted.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/081-two-sum-sorted.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/081-two-sum-sorted.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/081-two-sum-sorted.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="1" data-search="Math 06 · Two pointers ও sliding window 082 — Pair with Difference K same-direction pointers (পেছনেরটা সামনেরটাকে তাড়া করে) Medium" markdown="1">
<label class="practice-check-label" for="check-math-06-082"><input class="practice-check" type="checkbox" id="check-math-06-082" data-key="01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/082-pair-with-difference-k.md" disabled><span class="ds-status">সমাধান করেছি: 082 — Pair with Difference K</span></label>
<div class="practice-problem" markdown="1">

**[082 — Pair with Difference K](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/082-pair-with-difference-k.md)**

<p class="practice-pattern">same-direction pointers (পেছনেরটা সামনেরটাকে তাড়া করে) · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/082-pair-with-difference-k.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/082-pair-with-difference-k.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/082-pair-with-difference-k.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/082-pair-with-difference-k.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/082-pair-with-difference-k.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/082-pair-with-difference-k.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="1" data-search="Math 06 · Two pointers ও sliding window 083 — Three Sum fix + two pointers (একজনকে বসিয়ে বাকি দুজনে opposite খোঁজ) Medium" markdown="1">
<label class="practice-check-label" for="check-math-06-083"><input class="practice-check" type="checkbox" id="check-math-06-083" data-key="01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/083-three-sum.md" disabled><span class="ds-status">সমাধান করেছি: 083 — Three Sum</span></label>
<div class="practice-problem" markdown="1">

**[083 — Three Sum](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/083-three-sum.md)**

<p class="practice-pattern">fix + two pointers (একজনকে বসিয়ে বাকি দুজনে opposite খোঁজ) · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/083-three-sum.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/083-three-sum.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/083-three-sum.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/083-three-sum.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/083-three-sum.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/083-three-sum.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="1" data-search="Math 06 · Two pointers ও sliding window 084 — Container With Most Water move shorter wall (ছোট দেয়াল সরাও — প্রমাণসহ greedy) Medium" markdown="1">
<label class="practice-check-label" for="check-math-06-084"><input class="practice-check" type="checkbox" id="check-math-06-084" data-key="01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/084-container-with-most-water.md" disabled><span class="ds-status">সমাধান করেছি: 084 — Container With Most Water</span></label>
<div class="practice-problem" markdown="1">

**[084 — Container With Most Water](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/084-container-with-most-water.md)**

<p class="practice-pattern">move shorter wall (ছোট দেয়াল সরাও — প্রমাণসহ greedy) · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/084-container-with-most-water.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/084-container-with-most-water.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/084-container-with-most-water.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/084-container-with-most-water.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/084-container-with-most-water.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/084-container-with-most-water.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 06 · Two pointers ও sliding window 085 — Sliding Window Sum fixed window (একটা ঢোকে, একটা বেরোয়) Easy" markdown="1">
<label class="practice-check-label" for="check-math-06-085"><input class="practice-check" type="checkbox" id="check-math-06-085" data-key="01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/085-sliding-window-sum.md" disabled><span class="ds-status">সমাধান করেছি: 085 — Sliding Window Sum</span></label>
<div class="practice-problem" markdown="1">

**[085 — Sliding Window Sum](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/085-sliding-window-sum.md)**

<p class="practice-pattern">fixed window (একটা ঢোকে, একটা বেরোয়) · Easy</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/085-sliding-window-sum.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/085-sliding-window-sum.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/085-sliding-window-sum.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/085-sliding-window-sum.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/085-sliding-window-sum.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/085-sliding-window-sum.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 06 · Two pointers ও sliding window 086 — Longest Subarray with Sum K (Positive) grow/shrink window (শুঁয়োপোকা — ডান বাড়ে, বাঁ গুটায়) Medium" markdown="1">
<label class="practice-check-label" for="check-math-06-086"><input class="practice-check" type="checkbox" id="check-math-06-086" data-key="01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/086-longest-subarray-sum-k.md" disabled><span class="ds-status">সমাধান করেছি: 086 — Longest Subarray with Sum K (Positive)</span></label>
<div class="practice-problem" markdown="1">

**[086 — Longest Subarray with Sum K (Positive)](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/086-longest-subarray-sum-k.md)**

<p class="practice-pattern">grow/shrink window (শুঁয়োপোকা — ডান বাড়ে, বাঁ গুটায়) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/086-longest-subarray-sum-k.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/086-longest-subarray-sum-k.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/086-longest-subarray-sum-k.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/086-longest-subarray-sum-k.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/086-longest-subarray-sum-k.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/086-longest-subarray-sum-k.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 06 · Two pointers ও sliding window 087 — Minimum Size Subarray Sum shrinkable window (যত পারো লেজ গুটাও) Medium" markdown="1">
<label class="practice-check-label" for="check-math-06-087"><input class="practice-check" type="checkbox" id="check-math-06-087" data-key="01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/087-minimum-size-subarray-sum.md" disabled><span class="ds-status">সমাধান করেছি: 087 — Minimum Size Subarray Sum</span></label>
<div class="practice-problem" markdown="1">

**[087 — Minimum Size Subarray Sum](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/087-minimum-size-subarray-sum.md)**

<p class="practice-pattern">shrinkable window (যত পারো লেজ গুটাও) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/087-minimum-size-subarray-sum.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/087-minimum-size-subarray-sum.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/087-minimum-size-subarray-sum.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/087-minimum-size-subarray-sum.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/087-minimum-size-subarray-sum.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/087-minimum-size-subarray-sum.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 06 · Two pointers ও sliding window 088 — Count Subarrays with At Most K Distinct window + count map (distinct ≤ K invariant; ans += r−l+1) Medium" markdown="1">
<label class="practice-check-label" for="check-math-06-088"><input class="practice-check" type="checkbox" id="check-math-06-088" data-key="01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/088-at-most-k-distinct.md" disabled><span class="ds-status">সমাধান করেছি: 088 — Count Subarrays with At Most K Distinct</span></label>
<div class="practice-problem" markdown="1">

**[088 — Count Subarrays with At Most K Distinct](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/088-at-most-k-distinct.md)**

<p class="practice-pattern">window + count map (distinct ≤ K invariant; ans += r−l+1) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/088-at-most-k-distinct.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/088-at-most-k-distinct.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/088-at-most-k-distinct.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/088-at-most-k-distinct.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/088-at-most-k-distinct.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/088-at-most-k-distinct.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 06 · Two pointers ও sliding window 089 — Count Subarrays with Exactly K Distinct atMost(K) − atMost(K−1) (কঠিনকে দুই সহজের বিয়োগ) Hard" markdown="1">
<label class="practice-check-label" for="check-math-06-089"><input class="practice-check" type="checkbox" id="check-math-06-089" data-key="01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/089-exactly-k-distinct.md" disabled><span class="ds-status">সমাধান করেছি: 089 — Count Subarrays with Exactly K Distinct</span></label>
<div class="practice-problem" markdown="1">

**[089 — Count Subarrays with Exactly K Distinct](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/089-exactly-k-distinct.md)**

<p class="practice-pattern">atMost(K) − atMost(K−1) (কঠিনকে দুই সহজের বিয়োগ) · Hard</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/089-exactly-k-distinct.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/089-exactly-k-distinct.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/089-exactly-k-distinct.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/089-exactly-k-distinct.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/089-exactly-k-distinct.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/089-exactly-k-distinct.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 06 · Two pointers ও sliding window 090 — Number of Subarrays with Product Less Than K window count r−l+1 (window-এ নতুন উপাদান জুড়ে কতগুলো নতুন subarray যোগ হলো গোনা) Medium" markdown="1">
<label class="practice-check-label" for="check-math-06-090"><input class="practice-check" type="checkbox" id="check-math-06-090" data-key="01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/090-product-less-than-k.md" disabled><span class="ds-status">সমাধান করেছি: 090 — Number of Subarrays with Product Less Than K</span></label>
<div class="practice-problem" markdown="1">

**[090 — Number of Subarrays with Product Less Than K](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/090-product-less-than-k.md)**

<p class="practice-pattern">window count r−l+1 (window-এ নতুন উপাদান জুড়ে কতগুলো নতুন subarray যোগ হলো গোনা) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/090-product-less-than-k.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/090-product-less-than-k.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/090-product-less-than-k.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/090-product-less-than-k.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/090-product-less-than-k.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/problems/090-product-less-than-k.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/06-two-pointers-sliding-window-math/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

</ol>
</details>

<details class="practice-section" data-section="math-07" markdown="1">
<summary>Math 07 · Binary search on answer <span class="section-count">12টি</span></summary>

**আগে বুঝে নিন:** monotone predicate, low/high, feasibility।

**আগে পড়ুন:** [ভিত্তি](01-math-based-programming-fundamentals/07-binary-search-on-answer/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/07-binary-search-on-answer/visualization-ideas.md)।

**Section-এর বড় challenge:** [ধাপে ধাপে প্রয়োগ করুন](guided-practice/math.md)। সব individual problem-এর বিকল্প নয়; প্রধান কৌশল একসঙ্গে ব্যবহার করার পরীক্ষা।

<ol class="practice-list" markdown="1">

<li class="practice-item" data-course="M2" data-must="1" data-search="Math 07 · Binary search on answer 091 — Basic Binary Search halving (search space অর্ধেক করা) Easy" markdown="1">
<label class="practice-check-label" for="check-math-07-091"><input class="practice-check" type="checkbox" id="check-math-07-091" data-key="01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/091-basic-binary-search.md" disabled><span class="ds-status">সমাধান করেছি: 091 — Basic Binary Search</span></label>
<div class="practice-problem" markdown="1">

**[091 — Basic Binary Search](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/091-basic-binary-search.md)**

<p class="practice-pattern">halving (search space অর্ধেক করা) · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M2</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/091-basic-binary-search.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/091-basic-binary-search.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/091-basic-binary-search.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/091-basic-binary-search.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/091-basic-binary-search.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/091-basic-binary-search.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/07-binary-search-on-answer/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/07-binary-search-on-answer/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M2" data-must="1" data-search="Math 07 · Binary search on answer 092 — Lower Bound first ≥ x (প্রথম যেখানে a[i] &gt;= x) Easy" markdown="1">
<label class="practice-check-label" for="check-math-07-092"><input class="practice-check" type="checkbox" id="check-math-07-092" data-key="01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/092-lower-bound.md" disabled><span class="ds-status">সমাধান করেছি: 092 — Lower Bound</span></label>
<div class="practice-problem" markdown="1">

**[092 — Lower Bound](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/092-lower-bound.md)**

<p class="practice-pattern">first ≥ x (প্রথম যেখানে a[i] &gt;= x) · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M2</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/092-lower-bound.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/092-lower-bound.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/092-lower-bound.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/092-lower-bound.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/092-lower-bound.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/092-lower-bound.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/07-binary-search-on-answer/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/07-binary-search-on-answer/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M2" data-must="1" data-search="Math 07 · Binary search on answer 093 — Upper Bound first &gt; x (প্রথম যেখানে a[i] &gt; x) Easy" markdown="1">
<label class="practice-check-label" for="check-math-07-093"><input class="practice-check" type="checkbox" id="check-math-07-093" data-key="01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/093-upper-bound.md" disabled><span class="ds-status">সমাধান করেছি: 093 — Upper Bound</span></label>
<div class="practice-problem" markdown="1">

**[093 — Upper Bound](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/093-upper-bound.md)**

<p class="practice-pattern">first &gt; x (প্রথম যেখানে a[i] &gt; x) · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M2</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/093-upper-bound.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/093-upper-bound.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/093-upper-bound.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/093-upper-bound.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/093-upper-bound.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/093-upper-bound.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/07-binary-search-on-answer/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/07-binary-search-on-answer/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M2" data-must="1" data-search="Math 07 · Binary search on answer 094 — Search Insert Position lower bound apply (092-এর সরাসরি প্রয়োগ) Easy" markdown="1">
<label class="practice-check-label" for="check-math-07-094"><input class="practice-check" type="checkbox" id="check-math-07-094" data-key="01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/094-search-insert-position.md" disabled><span class="ds-status">সমাধান করেছি: 094 — Search Insert Position</span></label>
<div class="practice-problem" markdown="1">

**[094 — Search Insert Position](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/094-search-insert-position.md)**

<p class="practice-pattern">lower bound apply (092-এর সরাসরি প্রয়োগ) · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M2</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/094-search-insert-position.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/094-search-insert-position.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/094-search-insert-position.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/094-search-insert-position.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/094-search-insert-position.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/094-search-insert-position.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/07-binary-search-on-answer/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/07-binary-search-on-answer/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M2" data-must="0" data-search="Math 07 · Binary search on answer 095 — Square Root using Binary Search first BSoA (answer space-এর উপর প্রথম binary search) Easy" markdown="1">
<label class="practice-check-label" for="check-math-07-095"><input class="practice-check" type="checkbox" id="check-math-07-095" data-key="01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/095-square-root-binary-search.md" disabled><span class="ds-status">সমাধান করেছি: 095 — Square Root using Binary Search</span></label>
<div class="practice-problem" markdown="1">

**[095 — Square Root using Binary Search](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/095-square-root-binary-search.md)**

<p class="practice-pattern">first BSoA (answer space-এর উপর প্রথম binary search) · Easy</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M2</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/095-square-root-binary-search.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/095-square-root-binary-search.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/095-square-root-binary-search.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/095-square-root-binary-search.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/095-square-root-binary-search.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/095-square-root-binary-search.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/07-binary-search-on-answer/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/07-binary-search-on-answer/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M2" data-must="0" data-search="Math 07 · Binary search on answer 096 — Minimum Eating Speed (Koko Eating Bananas) BSoA minimize (সবচেয়ে ছোট feasible উত্তর) Medium" markdown="1">
<label class="practice-check-label" for="check-math-07-096"><input class="practice-check" type="checkbox" id="check-math-07-096" data-key="01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/096-minimum-eating-speed.md" disabled><span class="ds-status">সমাধান করেছি: 096 — Minimum Eating Speed (Koko Eating Bananas)</span></label>
<div class="practice-problem" markdown="1">

**[096 — Minimum Eating Speed (Koko Eating Bananas)](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/096-minimum-eating-speed.md)**

<p class="practice-pattern">BSoA minimize (সবচেয়ে ছোট feasible উত্তর) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M2</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/096-minimum-eating-speed.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/096-minimum-eating-speed.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/096-minimum-eating-speed.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/096-minimum-eating-speed.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/096-minimum-eating-speed.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/096-minimum-eating-speed.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/07-binary-search-on-answer/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/07-binary-search-on-answer/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M2" data-must="0" data-search="Math 07 · Binary search on answer 097 — Ship Packages Within D Days BSoA minimize (সবচেয়ে ছোট feasible capacity) Medium" markdown="1">
<label class="practice-check-label" for="check-math-07-097"><input class="practice-check" type="checkbox" id="check-math-07-097" data-key="01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/097-ship-packages-d-days.md" disabled><span class="ds-status">সমাধান করেছি: 097 — Ship Packages Within D Days</span></label>
<div class="practice-problem" markdown="1">

**[097 — Ship Packages Within D Days](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/097-ship-packages-d-days.md)**

<p class="practice-pattern">BSoA minimize (সবচেয়ে ছোট feasible capacity) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M2</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/097-ship-packages-d-days.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/097-ship-packages-d-days.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/097-ship-packages-d-days.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/097-ship-packages-d-days.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/097-ship-packages-d-days.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/097-ship-packages-d-days.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/07-binary-search-on-answer/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/07-binary-search-on-answer/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M2" data-must="0" data-search="Math 07 · Binary search on answer 098 — Aggressive Cows BSoA maximize (সবচেয়ে বড় feasible উত্তর; সিঁড়ি TTTFFF) Medium" markdown="1">
<label class="practice-check-label" for="check-math-07-098"><input class="practice-check" type="checkbox" id="check-math-07-098" data-key="01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/098-aggressive-cows.md" disabled><span class="ds-status">সমাধান করেছি: 098 — Aggressive Cows</span></label>
<div class="practice-problem" markdown="1">

**[098 — Aggressive Cows](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/098-aggressive-cows.md)**

<p class="practice-pattern">BSoA maximize (সবচেয়ে বড় feasible উত্তর; সিঁড়ি TTTFFF) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M2</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/098-aggressive-cows.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/098-aggressive-cows.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/098-aggressive-cows.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/098-aggressive-cows.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/098-aggressive-cows.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/098-aggressive-cows.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/07-binary-search-on-answer/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/07-binary-search-on-answer/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M2" data-must="0" data-search="Math 07 · Binary search on answer 099 — Allocate Minimum Pages (Book Allocation) minimize max load (সবচেয়ে বড় ভাগকে minimize) Medium" markdown="1">
<label class="practice-check-label" for="check-math-07-099"><input class="practice-check" type="checkbox" id="check-math-07-099" data-key="01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/099-allocate-minimum-pages.md" disabled><span class="ds-status">সমাধান করেছি: 099 — Allocate Minimum Pages (Book Allocation)</span></label>
<div class="practice-problem" markdown="1">

**[099 — Allocate Minimum Pages (Book Allocation)](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/099-allocate-minimum-pages.md)**

<p class="practice-pattern">minimize max load (সবচেয়ে বড় ভাগকে minimize) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M2</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/099-allocate-minimum-pages.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/099-allocate-minimum-pages.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/099-allocate-minimum-pages.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/099-allocate-minimum-pages.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/099-allocate-minimum-pages.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/099-allocate-minimum-pages.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/07-binary-search-on-answer/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/07-binary-search-on-answer/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M2" data-must="0" data-search="Math 07 · Binary search on answer 100 — Split Array Largest Sum minimize max load (সবচেয়ে ভারী ভাগকে যত হালকা সম্ভব) Hard" markdown="1">
<label class="practice-check-label" for="check-math-07-100"><input class="practice-check" type="checkbox" id="check-math-07-100" data-key="01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/100-split-array-largest-sum.md" disabled><span class="ds-status">সমাধান করেছি: 100 — Split Array Largest Sum</span></label>
<div class="practice-problem" markdown="1">

**[100 — Split Array Largest Sum](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/100-split-array-largest-sum.md)**

<p class="practice-pattern">minimize max load (সবচেয়ে ভারী ভাগকে যত হালকা সম্ভব) · Hard</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M2</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/100-split-array-largest-sum.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/100-split-array-largest-sum.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/100-split-array-largest-sum.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/100-split-array-largest-sum.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/100-split-array-largest-sum.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/100-split-array-largest-sum.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/07-binary-search-on-answer/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/07-binary-search-on-answer/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M2" data-must="0" data-search="Math 07 · Binary search on answer 101 — Median of Two Sorted Arrays partition search (দুই array-কে এক জায়গায় কেটে বাঁ-অর্ধ ও ডান-অর্ধ সাজানো) Hard" markdown="1">
<label class="practice-check-label" for="check-math-07-101"><input class="practice-check" type="checkbox" id="check-math-07-101" data-key="01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/101-median-two-sorted-arrays.md" disabled><span class="ds-status">সমাধান করেছি: 101 — Median of Two Sorted Arrays</span></label>
<div class="practice-problem" markdown="1">

**[101 — Median of Two Sorted Arrays](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/101-median-two-sorted-arrays.md)**

<p class="practice-pattern">partition search (দুই array-কে এক জায়গায় কেটে বাঁ-অর্ধ ও ডান-অর্ধ সাজানো) · Hard</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M2</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/101-median-two-sorted-arrays.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/101-median-two-sorted-arrays.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/101-median-two-sorted-arrays.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/101-median-two-sorted-arrays.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/101-median-two-sorted-arrays.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/101-median-two-sorted-arrays.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/07-binary-search-on-answer/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/07-binary-search-on-answer/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M2" data-must="0" data-search="Math 07 · Binary search on answer 102 — Kth Smallest in Multiplication Table BSoA + counting (উত্তরের উপর binary search, check = &quot;≤ x কতগুলো&quot; গোনা) Hard" markdown="1">
<label class="practice-check-label" for="check-math-07-102"><input class="practice-check" type="checkbox" id="check-math-07-102" data-key="01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/102-kth-smallest-multiplication-table.md" disabled><span class="ds-status">সমাধান করেছি: 102 — Kth Smallest in Multiplication Table</span></label>
<div class="practice-problem" markdown="1">

**[102 — Kth Smallest in Multiplication Table](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/102-kth-smallest-multiplication-table.md)**

<p class="practice-pattern">BSoA + counting (উত্তরের উপর binary search, check = &quot;≤ x কতগুলো&quot; গোনা) · Hard</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M2</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/102-kth-smallest-multiplication-table.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/102-kth-smallest-multiplication-table.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/102-kth-smallest-multiplication-table.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/102-kth-smallest-multiplication-table.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/102-kth-smallest-multiplication-table.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/102-kth-smallest-multiplication-table.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/07-binary-search-on-answer/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/07-binary-search-on-answer/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

</ol>
</details>

<details class="practice-section" data-section="math-08" markdown="1">
<summary>Math 08 · Greedy math <span class="section-count">10টি</span></summary>

**আগে বুঝে নিন:** sorting, exchange argument, counterexample।

**আগে পড়ুন:** [ভিত্তি](01-math-based-programming-fundamentals/08-greedy-math-tricks/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/08-greedy-math-tricks/visualization-ideas.md)।

**Section-এর বড় challenge:** [ধাপে ধাপে প্রয়োগ করুন](guided-practice/math.md)। সব individual problem-এর বিকল্প নয়; প্রধান কৌশল একসঙ্গে ব্যবহার করার পরীক্ষা।

<ol class="practice-list" markdown="1">

<li class="practice-item" data-course="M4" data-must="1" data-search="Math 08 · Greedy math 103 — Minimum Coins Basic canonical greedy (বড় coin আগে নাও — কিন্তু প্রমাণসহ) Easy" markdown="1">
<label class="practice-check-label" for="check-math-08-103"><input class="practice-check" type="checkbox" id="check-math-08-103" data-key="01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/103-minimum-coins-basic.md" disabled><span class="ds-status">সমাধান করেছি: 103 — Minimum Coins Basic</span></label>
<div class="practice-problem" markdown="1">

**[103 — Minimum Coins Basic](01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/103-minimum-coins-basic.md)**

<p class="practice-pattern">canonical greedy (বড় coin আগে নাও — কিন্তু প্রমাণসহ) · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/103-minimum-coins-basic.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/103-minimum-coins-basic.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/103-minimum-coins-basic.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/103-minimum-coins-basic.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/103-minimum-coins-basic.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/103-minimum-coins-basic.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/08-greedy-math-tricks/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/08-greedy-math-tricks/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M4" data-must="1" data-search="Math 08 · Greedy math 104 — Jump Game furthest reach (এক pass-এ &quot;সর্বোচ্চ কোথায় পৌঁছাই&quot; track) Medium" markdown="1">
<label class="practice-check-label" for="check-math-08-104"><input class="practice-check" type="checkbox" id="check-math-08-104" data-key="01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/104-jump-game.md" disabled><span class="ds-status">সমাধান করেছি: 104 — Jump Game</span></label>
<div class="practice-problem" markdown="1">

**[104 — Jump Game](01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/104-jump-game.md)**

<p class="practice-pattern">furthest reach (এক pass-এ &quot;সর্বোচ্চ কোথায় পৌঁছাই&quot; track) · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/104-jump-game.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/104-jump-game.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/104-jump-game.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/104-jump-game.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/104-jump-game.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/104-jump-game.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/08-greedy-math-tricks/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/08-greedy-math-tricks/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M4" data-must="1" data-search="Math 08 · Greedy math 105 — Gas Station reset point (tank negative হলে নতুন start) Medium" markdown="1">
<label class="practice-check-label" for="check-math-08-105"><input class="practice-check" type="checkbox" id="check-math-08-105" data-key="01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/105-gas-station.md" disabled><span class="ds-status">সমাধান করেছি: 105 — Gas Station</span></label>
<div class="practice-problem" markdown="1">

**[105 — Gas Station](01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/105-gas-station.md)**

<p class="practice-pattern">reset point (tank negative হলে নতুন start) · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/105-gas-station.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/105-gas-station.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/105-gas-station.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/105-gas-station.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/105-gas-station.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/105-gas-station.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/08-greedy-math-tricks/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/08-greedy-math-tricks/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M4" data-must="1" data-search="Math 08 · Greedy math 106 — Candy Distribution two pass (এক দিক থেকে এক pass, আরেক দিক থেকে আরেক, তারপর max) Hard" markdown="1">
<label class="practice-check-label" for="check-math-08-106"><input class="practice-check" type="checkbox" id="check-math-08-106" data-key="01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/106-candy-distribution.md" disabled><span class="ds-status">সমাধান করেছি: 106 — Candy Distribution</span></label>
<div class="practice-problem" markdown="1">

**[106 — Candy Distribution](01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/106-candy-distribution.md)**

<p class="practice-pattern">two pass (এক দিক থেকে এক pass, আরেক দিক থেকে আরেক, তারপর max) · Hard</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/106-candy-distribution.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/106-candy-distribution.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/106-candy-distribution.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/106-candy-distribution.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/106-candy-distribution.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/106-candy-distribution.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/08-greedy-math-tricks/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/08-greedy-math-tricks/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M4" data-must="0" data-search="Math 08 · Greedy math 107 — Interval Scheduling earliest finish first (শেষ-সময় দিয়ে sort করে greedy) Medium" markdown="1">
<label class="practice-check-label" for="check-math-08-107"><input class="practice-check" type="checkbox" id="check-math-08-107" data-key="01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/107-interval-scheduling.md" disabled><span class="ds-status">সমাধান করেছি: 107 — Interval Scheduling</span></label>
<div class="practice-problem" markdown="1">

**[107 — Interval Scheduling](01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/107-interval-scheduling.md)**

<p class="practice-pattern">earliest finish first (শেষ-সময় দিয়ে sort করে greedy) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/107-interval-scheduling.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/107-interval-scheduling.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/107-interval-scheduling.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/107-interval-scheduling.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/107-interval-scheduling.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/107-interval-scheduling.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/08-greedy-math-tricks/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/08-greedy-math-tricks/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M4" data-must="0" data-search="Math 08 · Greedy math 108 — Minimum Platforms event sweep (arrival +1, departure −1, চলন্ত যোগফলের max) Medium" markdown="1">
<label class="practice-check-label" for="check-math-08-108"><input class="practice-check" type="checkbox" id="check-math-08-108" data-key="01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/108-minimum-platforms.md" disabled><span class="ds-status">সমাধান করেছি: 108 — Minimum Platforms</span></label>
<div class="practice-problem" markdown="1">

**[108 — Minimum Platforms](01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/108-minimum-platforms.md)**

<p class="practice-pattern">event sweep (arrival +1, departure −1, চলন্ত যোগফলের max) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/108-minimum-platforms.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/108-minimum-platforms.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/108-minimum-platforms.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/108-minimum-platforms.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/108-minimum-platforms.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/108-minimum-platforms.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/08-greedy-math-tricks/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/08-greedy-math-tricks/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M4" data-must="0" data-search="Math 08 · Greedy math 109 — Rearrange with Constraints most frequent first (সবচেয়ে frequent character আগে ছড়াও) Medium" markdown="1">
<label class="practice-check-label" for="check-math-08-109"><input class="practice-check" type="checkbox" id="check-math-08-109" data-key="01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/109-rearrange-with-constraints.md" disabled><span class="ds-status">সমাধান করেছি: 109 — Rearrange with Constraints</span></label>
<div class="practice-problem" markdown="1">

**[109 — Rearrange with Constraints](01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/109-rearrange-with-constraints.md)**

<p class="practice-pattern">most frequent first (সবচেয়ে frequent character আগে ছড়াও) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/109-rearrange-with-constraints.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/109-rearrange-with-constraints.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/109-rearrange-with-constraints.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/109-rearrange-with-constraints.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/109-rearrange-with-constraints.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/109-rearrange-with-constraints.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/08-greedy-math-tricks/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/08-greedy-math-tricks/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M4" data-must="0" data-search="Math 08 · Greedy math 110 — Maximum Product by Splitting (Integer Break) break into 3s (সংখ্যাকে যথাসম্ভব 3-এর টুকরোয় ভাগ করা) Medium" markdown="1">
<label class="practice-check-label" for="check-math-08-110"><input class="practice-check" type="checkbox" id="check-math-08-110" data-key="01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/110-maximum-product-splitting.md" disabled><span class="ds-status">সমাধান করেছি: 110 — Maximum Product by Splitting (Integer Break)</span></label>
<div class="practice-problem" markdown="1">

**[110 — Maximum Product by Splitting (Integer Break)](01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/110-maximum-product-splitting.md)**

<p class="practice-pattern">break into 3s (সংখ্যাকে যথাসম্ভব 3-এর টুকরোয় ভাগ করা) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/110-maximum-product-splitting.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/110-maximum-product-splitting.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/110-maximum-product-splitting.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/110-maximum-product-splitting.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/110-maximum-product-splitting.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/110-maximum-product-splitting.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/08-greedy-math-tricks/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/08-greedy-math-tricks/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M4" data-must="0" data-search="Math 08 · Greedy math 111 — Make Array Equal with Minimum Moves median target (সবাইকে median-এ আনলে মোট দূরত্ব সর্বনিম্ন) Medium" markdown="1">
<label class="practice-check-label" for="check-math-08-111"><input class="practice-check" type="checkbox" id="check-math-08-111" data-key="01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/111-make-array-equal-min-moves.md" disabled><span class="ds-status">সমাধান করেছি: 111 — Make Array Equal with Minimum Moves</span></label>
<div class="practice-problem" markdown="1">

**[111 — Make Array Equal with Minimum Moves](01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/111-make-array-equal-min-moves.md)**

<p class="practice-pattern">median target (সবাইকে median-এ আনলে মোট দূরত্ব সর্বনিম্ন) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/111-make-array-equal-min-moves.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/111-make-array-equal-min-moves.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/111-make-array-equal-min-moves.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/111-make-array-equal-min-moves.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/111-make-array-equal-min-moves.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/111-make-array-equal-min-moves.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/08-greedy-math-tricks/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/08-greedy-math-tricks/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M4" data-must="0" data-search="Math 08 · Greedy math 112 — Minimize Maximum Difference sort + adjacent / BSoA (sort করে পাশাপাশি ফাঁক দেখা, উত্তরের উপর binary search) Medium" markdown="1">
<label class="practice-check-label" for="check-math-08-112"><input class="practice-check" type="checkbox" id="check-math-08-112" data-key="01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/112-minimize-maximum-difference.md" disabled><span class="ds-status">সমাধান করেছি: 112 — Minimize Maximum Difference</span></label>
<div class="practice-problem" markdown="1">

**[112 — Minimize Maximum Difference](01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/112-minimize-maximum-difference.md)**

<p class="practice-pattern">sort + adjacent / BSoA (sort করে পাশাপাশি ফাঁক দেখা, উত্তরের উপর binary search) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/112-minimize-maximum-difference.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/112-minimize-maximum-difference.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/112-minimize-maximum-difference.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/112-minimize-maximum-difference.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/112-minimize-maximum-difference.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/08-greedy-math-tricks/problems/112-minimize-maximum-difference.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/08-greedy-math-tricks/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/08-greedy-math-tricks/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

</ol>
</details>

<details class="practice-section" data-section="math-09" markdown="1">
<summary>Math 09 · Geometry ও coordinates <span class="section-count">12টি</span></summary>

**আগে বুঝে নিন:** x/y, distance, cross product, boundary।

**আগে পড়ুন:** [ভিত্তি](01-math-based-programming-fundamentals/09-geometry-coordinate-math/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/09-geometry-coordinate-math/visualization-ideas.md)।

**Section-এর বড় challenge:** [ধাপে ধাপে প্রয়োগ করুন](guided-practice/math.md)। সব individual problem-এর বিকল্প নয়; প্রধান কৌশল একসঙ্গে ব্যবহার করার পরীক্ষা।

<ol class="practice-list" markdown="1">

<li class="practice-item" data-course="support" data-must="1" data-search="Math 09 · Geometry ও coordinates 113 — Distance Between Points squared distance Easy" markdown="1">
<label class="practice-check-label" for="check-math-09-113"><input class="practice-check" type="checkbox" id="check-math-09-113" data-key="01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/113-distance-between-points.md" disabled><span class="ds-status">সমাধান করেছি: 113 — Distance Between Points</span></label>
<div class="practice-problem" markdown="1">

**[113 — Distance Between Points](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/113-distance-between-points.md)**

<p class="practice-pattern">squared distance · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/113-distance-between-points.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/113-distance-between-points.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/113-distance-between-points.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/113-distance-between-points.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/113-distance-between-points.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/113-distance-between-points.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/09-geometry-coordinate-math/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/09-geometry-coordinate-math/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="1" data-search="Math 09 · Geometry ও coordinates 114 — Slope and Collinearity cross multiply Easy" markdown="1">
<label class="practice-check-label" for="check-math-09-114"><input class="practice-check" type="checkbox" id="check-math-09-114" data-key="01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/114-slope-and-collinearity.md" disabled><span class="ds-status">সমাধান করেছি: 114 — Slope and Collinearity</span></label>
<div class="practice-problem" markdown="1">

**[114 — Slope and Collinearity](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/114-slope-and-collinearity.md)**

<p class="practice-pattern">cross multiply · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/114-slope-and-collinearity.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/114-slope-and-collinearity.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/114-slope-and-collinearity.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/114-slope-and-collinearity.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/114-slope-and-collinearity.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/114-slope-and-collinearity.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/09-geometry-coordinate-math/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/09-geometry-coordinate-math/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="1" data-search="Math 09 · Geometry ও coordinates 115 — Area of Triangle shoelace Easy" markdown="1">
<label class="practice-check-label" for="check-math-09-115"><input class="practice-check" type="checkbox" id="check-math-09-115" data-key="01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/115-area-of-triangle.md" disabled><span class="ds-status">সমাধান করেছি: 115 — Area of Triangle</span></label>
<div class="practice-problem" markdown="1">

**[115 — Area of Triangle](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/115-area-of-triangle.md)**

<p class="practice-pattern">shoelace · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/115-area-of-triangle.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/115-area-of-triangle.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/115-area-of-triangle.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/115-area-of-triangle.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/115-area-of-triangle.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/115-area-of-triangle.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/09-geometry-coordinate-math/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/09-geometry-coordinate-math/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="1" data-search="Math 09 · Geometry ও coordinates 116 — Orientation of Three Points cross product sign Medium" markdown="1">
<label class="practice-check-label" for="check-math-09-116"><input class="practice-check" type="checkbox" id="check-math-09-116" data-key="01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/116-orientation-three-points.md" disabled><span class="ds-status">সমাধান করেছি: 116 — Orientation of Three Points</span></label>
<div class="practice-problem" markdown="1">

**[116 — Orientation of Three Points](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/116-orientation-three-points.md)**

<p class="practice-pattern">cross product sign · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/116-orientation-three-points.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/116-orientation-three-points.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/116-orientation-three-points.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/116-orientation-three-points.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/116-orientation-three-points.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/116-orientation-three-points.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/09-geometry-coordinate-math/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/09-geometry-coordinate-math/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 09 · Geometry ও coordinates 117 — Line Intersection Basic orientation test Medium" markdown="1">
<label class="practice-check-label" for="check-math-09-117"><input class="practice-check" type="checkbox" id="check-math-09-117" data-key="01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/117-line-intersection-basic.md" disabled><span class="ds-status">সমাধান করেছি: 117 — Line Intersection Basic</span></label>
<div class="practice-problem" markdown="1">

**[117 — Line Intersection Basic](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/117-line-intersection-basic.md)**

<p class="practice-pattern">orientation test · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/117-line-intersection-basic.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/117-line-intersection-basic.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/117-line-intersection-basic.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/117-line-intersection-basic.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/117-line-intersection-basic.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/117-line-intersection-basic.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/09-geometry-coordinate-math/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/09-geometry-coordinate-math/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 09 · Geometry ও coordinates 118 — Rectangle Overlap interval logic Medium" markdown="1">
<label class="practice-check-label" for="check-math-09-118"><input class="practice-check" type="checkbox" id="check-math-09-118" data-key="01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/118-rectangle-overlap.md" disabled><span class="ds-status">সমাধান করেছি: 118 — Rectangle Overlap</span></label>
<div class="practice-problem" markdown="1">

**[118 — Rectangle Overlap](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/118-rectangle-overlap.md)**

<p class="practice-pattern">interval logic · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/118-rectangle-overlap.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/118-rectangle-overlap.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/118-rectangle-overlap.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/118-rectangle-overlap.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/118-rectangle-overlap.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/118-rectangle-overlap.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/09-geometry-coordinate-math/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/09-geometry-coordinate-math/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 09 · Geometry ও coordinates 119 — Circle and Point r² compare Easy" markdown="1">
<label class="practice-check-label" for="check-math-09-119"><input class="practice-check" type="checkbox" id="check-math-09-119" data-key="01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/119-circle-and-point.md" disabled><span class="ds-status">সমাধান করেছি: 119 — Circle and Point</span></label>
<div class="practice-problem" markdown="1">

**[119 — Circle and Point](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/119-circle-and-point.md)**

<p class="practice-pattern">r² compare · Easy</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/119-circle-and-point.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/119-circle-and-point.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/119-circle-and-point.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/119-circle-and-point.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/119-circle-and-point.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/119-circle-and-point.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/09-geometry-coordinate-math/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/09-geometry-coordinate-math/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 09 · Geometry ও coordinates 120 — Convex Hull Intro monotone chain Hard" markdown="1">
<label class="practice-check-label" for="check-math-09-120"><input class="practice-check" type="checkbox" id="check-math-09-120" data-key="01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/120-convex-hull-intro.md" disabled><span class="ds-status">সমাধান করেছি: 120 — Convex Hull Intro</span></label>
<div class="practice-problem" markdown="1">

**[120 — Convex Hull Intro](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/120-convex-hull-intro.md)**

<p class="practice-pattern">monotone chain · Hard</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/120-convex-hull-intro.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/120-convex-hull-intro.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/120-convex-hull-intro.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/120-convex-hull-intro.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/120-convex-hull-intro.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/120-convex-hull-intro.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/09-geometry-coordinate-math/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/09-geometry-coordinate-math/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 09 · Geometry ও coordinates 121 — Manhattan Distance Tricks 45° rotation (coordinate ঘুরিয়ে Manhattan-কে Chebyshev বানানো) Medium" markdown="1">
<label class="practice-check-label" for="check-math-09-121"><input class="practice-check" type="checkbox" id="check-math-09-121" data-key="01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/121-manhattan-distance-tricks.md" disabled><span class="ds-status">সমাধান করেছি: 121 — Manhattan Distance Tricks</span></label>
<div class="practice-problem" markdown="1">

**[121 — Manhattan Distance Tricks](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/121-manhattan-distance-tricks.md)**

<p class="practice-pattern">45° rotation (coordinate ঘুরিয়ে Manhattan-কে Chebyshev বানানো) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/121-manhattan-distance-tricks.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/121-manhattan-distance-tricks.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/121-manhattan-distance-tricks.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/121-manhattan-distance-tricks.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/121-manhattan-distance-tricks.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/121-manhattan-distance-tricks.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/09-geometry-coordinate-math/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/09-geometry-coordinate-math/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 09 · Geometry ও coordinates 122 — Rotate Matrix and Coordinates coordinate map (ঘর (r, c) কোথায় যায় তার সূত্র) Medium" markdown="1">
<label class="practice-check-label" for="check-math-09-122"><input class="practice-check" type="checkbox" id="check-math-09-122" data-key="01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/122-rotate-matrix-coordinates.md" disabled><span class="ds-status">সমাধান করেছি: 122 — Rotate Matrix and Coordinates</span></label>
<div class="practice-problem" markdown="1">

**[122 — Rotate Matrix and Coordinates](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/122-rotate-matrix-coordinates.md)**

<p class="practice-pattern">coordinate map (ঘর (r, c) কোথায় যায় তার সূত্র) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/122-rotate-matrix-coordinates.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/122-rotate-matrix-coordinates.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/122-rotate-matrix-coordinates.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/122-rotate-matrix-coordinates.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/122-rotate-matrix-coordinates.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/122-rotate-matrix-coordinates.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/09-geometry-coordinate-math/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/09-geometry-coordinate-math/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 09 · Geometry ও coordinates 123 — Grid Movement Math parity reachability (জোড়/বিজোড় দিয়ে পৌঁছানো সম্ভব কিনা) Medium" markdown="1">
<label class="practice-check-label" for="check-math-09-123"><input class="practice-check" type="checkbox" id="check-math-09-123" data-key="01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/123-grid-movement-math.md" disabled><span class="ds-status">সমাধান করেছি: 123 — Grid Movement Math</span></label>
<div class="practice-problem" markdown="1">

**[123 — Grid Movement Math](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/123-grid-movement-math.md)**

<p class="practice-pattern">parity reachability (জোড়/বিজোড় দিয়ে পৌঁছানো সম্ভব কিনা) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/123-grid-movement-math.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/123-grid-movement-math.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/123-grid-movement-math.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/123-grid-movement-math.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/123-grid-movement-math.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/123-grid-movement-math.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/09-geometry-coordinate-math/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/09-geometry-coordinate-math/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 09 · Geometry ও coordinates 124 — Pick&#x27;s Theorem Intro lattice counting (গ্রিড-বিন্দু গণনা ↔ ক্ষেত্রফল) Hard" markdown="1">
<label class="practice-check-label" for="check-math-09-124"><input class="practice-check" type="checkbox" id="check-math-09-124" data-key="01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/124-picks-theorem-intro.md" disabled><span class="ds-status">সমাধান করেছি: 124 — Pick&#x27;s Theorem Intro</span></label>
<div class="practice-problem" markdown="1">

**[124 — Pick's Theorem Intro](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/124-picks-theorem-intro.md)**

<p class="practice-pattern">lattice counting (গ্রিড-বিন্দু গণনা ↔ ক্ষেত্রফল) · Hard</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/124-picks-theorem-intro.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/124-picks-theorem-intro.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/124-picks-theorem-intro.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/124-picks-theorem-intro.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/124-picks-theorem-intro.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/09-geometry-coordinate-math/problems/124-picks-theorem-intro.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/09-geometry-coordinate-math/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/09-geometry-coordinate-math/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

</ol>
</details>

<details class="practice-section" data-section="math-10" markdown="1">
<summary>Math 10 · Advanced number theory <span class="section-count">14টি</span></summary>

**আগে বুঝে নিন:** GCD, modular inverse, matrix/CRT ধারণা।

**আগে পড়ুন:** [ভিত্তি](01-math-based-programming-fundamentals/10-advanced-number-theory/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/10-advanced-number-theory/visualization-ideas.md)।

**Section-এর বড় challenge:** [ধাপে ধাপে প্রয়োগ করুন](guided-practice/math.md)। সব individual problem-এর বিকল্প নয়; প্রধান কৌশল একসঙ্গে ব্যবহার করার পরীক্ষা।

<ol class="practice-list" markdown="1">

<li class="practice-item" data-course="support" data-must="1" data-search="Math 10 · Advanced number theory 125 — Extended Euclidean Algorithm back substitution Medium" markdown="1">
<label class="practice-check-label" for="check-math-10-125"><input class="practice-check" type="checkbox" id="check-math-10-125" data-key="01-math-based-programming-fundamentals/10-advanced-number-theory/problems/125-extended-euclidean.md" disabled><span class="ds-status">সমাধান করেছি: 125 — Extended Euclidean Algorithm</span></label>
<div class="practice-problem" markdown="1">

**[125 — Extended Euclidean Algorithm](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/125-extended-euclidean.md)**

<p class="practice-pattern">back substitution · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/125-extended-euclidean.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/125-extended-euclidean.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/125-extended-euclidean.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/125-extended-euclidean.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/125-extended-euclidean.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/125-extended-euclidean.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/10-advanced-number-theory/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/10-advanced-number-theory/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="1" data-search="Math 10 · Advanced number theory 126 — Linear Diophantine Equation gcd divisibility Medium" markdown="1">
<label class="practice-check-label" for="check-math-10-126"><input class="practice-check" type="checkbox" id="check-math-10-126" data-key="01-math-based-programming-fundamentals/10-advanced-number-theory/problems/126-linear-diophantine.md" disabled><span class="ds-status">সমাধান করেছি: 126 — Linear Diophantine Equation</span></label>
<div class="practice-problem" markdown="1">

**[126 — Linear Diophantine Equation](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/126-linear-diophantine.md)**

<p class="practice-pattern">gcd divisibility · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/126-linear-diophantine.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/126-linear-diophantine.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/126-linear-diophantine.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/126-linear-diophantine.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/126-linear-diophantine.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/126-linear-diophantine.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/10-advanced-number-theory/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/10-advanced-number-theory/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="1" data-search="Math 10 · Advanced number theory 127 — Chinese Remainder Theorem Basic modulus merge Hard" markdown="1">
<label class="practice-check-label" for="check-math-10-127"><input class="practice-check" type="checkbox" id="check-math-10-127" data-key="01-math-based-programming-fundamentals/10-advanced-number-theory/problems/127-crt-basic.md" disabled><span class="ds-status">সমাধান করেছি: 127 — Chinese Remainder Theorem Basic</span></label>
<div class="practice-problem" markdown="1">

**[127 — Chinese Remainder Theorem Basic](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/127-crt-basic.md)**

<p class="practice-pattern">modulus merge · Hard</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/127-crt-basic.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/127-crt-basic.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/127-crt-basic.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/127-crt-basic.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/127-crt-basic.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/127-crt-basic.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/10-advanced-number-theory/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/10-advanced-number-theory/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="1" data-search="Math 10 · Advanced number theory 128 — Euler Totient Advanced multiplicative phi Medium" markdown="1">
<label class="practice-check-label" for="check-math-10-128"><input class="practice-check" type="checkbox" id="check-math-10-128" data-key="01-math-based-programming-fundamentals/10-advanced-number-theory/problems/128-euler-totient-advanced.md" disabled><span class="ds-status">সমাধান করেছি: 128 — Euler Totient Advanced</span></label>
<div class="practice-problem" markdown="1">

**[128 — Euler Totient Advanced](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/128-euler-totient-advanced.md)**

<p class="practice-pattern">multiplicative phi · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/128-euler-totient-advanced.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/128-euler-totient-advanced.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/128-euler-totient-advanced.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/128-euler-totient-advanced.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/128-euler-totient-advanced.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/128-euler-totient-advanced.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/10-advanced-number-theory/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/10-advanced-number-theory/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 10 · Advanced number theory 129 — Mobius Function Intro IE encoding (inclusion-exclusion encoding) Hard" markdown="1">
<label class="practice-check-label" for="check-math-10-129"><input class="practice-check" type="checkbox" id="check-math-10-129" data-key="01-math-based-programming-fundamentals/10-advanced-number-theory/problems/129-mobius-function-intro.md" disabled><span class="ds-status">সমাধান করেছি: 129 — Mobius Function Intro</span></label>
<div class="practice-problem" markdown="1">

**[129 — Mobius Function Intro](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/129-mobius-function-intro.md)**

<p class="practice-pattern">IE encoding (inclusion-exclusion encoding) · Hard</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/129-mobius-function-intro.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/129-mobius-function-intro.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/129-mobius-function-intro.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/129-mobius-function-intro.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/129-mobius-function-intro.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/129-mobius-function-intro.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/10-advanced-number-theory/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/10-advanced-number-theory/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 10 · Advanced number theory 130 — Modular Inverse Advanced ext-gcd inverse Medium" markdown="1">
<label class="practice-check-label" for="check-math-10-130"><input class="practice-check" type="checkbox" id="check-math-10-130" data-key="01-math-based-programming-fundamentals/10-advanced-number-theory/problems/130-modular-inverse-advanced.md" disabled><span class="ds-status">সমাধান করেছি: 130 — Modular Inverse Advanced</span></label>
<div class="practice-problem" markdown="1">

**[130 — Modular Inverse Advanced](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/130-modular-inverse-advanced.md)**

<p class="practice-pattern">ext-gcd inverse · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/130-modular-inverse-advanced.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/130-modular-inverse-advanced.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/130-modular-inverse-advanced.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/130-modular-inverse-advanced.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/130-modular-inverse-advanced.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/130-modular-inverse-advanced.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/10-advanced-number-theory/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/10-advanced-number-theory/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 10 · Advanced number theory 131 — Matrix Exponentiation recurrence as matrix Hard" markdown="1">
<label class="practice-check-label" for="check-math-10-131"><input class="practice-check" type="checkbox" id="check-math-10-131" data-key="01-math-based-programming-fundamentals/10-advanced-number-theory/problems/131-matrix-exponentiation.md" disabled><span class="ds-status">সমাধান করেছি: 131 — Matrix Exponentiation</span></label>
<div class="practice-problem" markdown="1">

**[131 — Matrix Exponentiation](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/131-matrix-exponentiation.md)**

<p class="practice-pattern">recurrence as matrix · Hard</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/131-matrix-exponentiation.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/131-matrix-exponentiation.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/131-matrix-exponentiation.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/131-matrix-exponentiation.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/131-matrix-exponentiation.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/131-matrix-exponentiation.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/10-advanced-number-theory/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/10-advanced-number-theory/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 10 · Advanced number theory 132 — Fibonacci using Matrix Exponentiation matrix power Hard" markdown="1">
<label class="practice-check-label" for="check-math-10-132"><input class="practice-check" type="checkbox" id="check-math-10-132" data-key="01-math-based-programming-fundamentals/10-advanced-number-theory/problems/132-fibonacci-matrix-expo.md" disabled><span class="ds-status">সমাধান করেছি: 132 — Fibonacci using Matrix Exponentiation</span></label>
<div class="practice-problem" markdown="1">

**[132 — Fibonacci using Matrix Exponentiation](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/132-fibonacci-matrix-expo.md)**

<p class="practice-pattern">matrix power · Hard</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/132-fibonacci-matrix-expo.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/132-fibonacci-matrix-expo.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/132-fibonacci-matrix-expo.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/132-fibonacci-matrix-expo.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/132-fibonacci-matrix-expo.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/132-fibonacci-matrix-expo.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/10-advanced-number-theory/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/10-advanced-number-theory/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 10 · Advanced number theory 133 — Fast Doubling Fibonacci F(2k) formulas Hard" markdown="1">
<label class="practice-check-label" for="check-math-10-133"><input class="practice-check" type="checkbox" id="check-math-10-133" data-key="01-math-based-programming-fundamentals/10-advanced-number-theory/problems/133-fast-doubling-fibonacci.md" disabled><span class="ds-status">সমাধান করেছি: 133 — Fast Doubling Fibonacci</span></label>
<div class="practice-problem" markdown="1">

**[133 — Fast Doubling Fibonacci](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/133-fast-doubling-fibonacci.md)**

<p class="practice-pattern">F(2k) formulas · Hard</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/133-fast-doubling-fibonacci.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/133-fast-doubling-fibonacci.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/133-fast-doubling-fibonacci.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/133-fast-doubling-fibonacci.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/133-fast-doubling-fibonacci.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/133-fast-doubling-fibonacci.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/10-advanced-number-theory/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/10-advanced-number-theory/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 10 · Advanced number theory 134 — Primality Test Advanced beyond trial division Medium" markdown="1">
<label class="practice-check-label" for="check-math-10-134"><input class="practice-check" type="checkbox" id="check-math-10-134" data-key="01-math-based-programming-fundamentals/10-advanced-number-theory/problems/134-primality-test-advanced.md" disabled><span class="ds-status">সমাধান করেছি: 134 — Primality Test Advanced</span></label>
<div class="practice-problem" markdown="1">

**[134 — Primality Test Advanced](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/134-primality-test-advanced.md)**

<p class="practice-pattern">beyond trial division · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/134-primality-test-advanced.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/134-primality-test-advanced.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/134-primality-test-advanced.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/134-primality-test-advanced.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/134-primality-test-advanced.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/134-primality-test-advanced.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/10-advanced-number-theory/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/10-advanced-number-theory/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 10 · Advanced number theory 135 — Miller-Rabin Intro probabilistic test Hard" markdown="1">
<label class="practice-check-label" for="check-math-10-135"><input class="practice-check" type="checkbox" id="check-math-10-135" data-key="01-math-based-programming-fundamentals/10-advanced-number-theory/problems/135-miller-rabin-intro.md" disabled><span class="ds-status">সমাধান করেছি: 135 — Miller-Rabin Intro</span></label>
<div class="practice-problem" markdown="1">

**[135 — Miller-Rabin Intro](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/135-miller-rabin-intro.md)**

<p class="practice-pattern">probabilistic test · Hard</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/135-miller-rabin-intro.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/135-miller-rabin-intro.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/135-miller-rabin-intro.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/135-miller-rabin-intro.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/135-miller-rabin-intro.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/135-miller-rabin-intro.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/10-advanced-number-theory/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/10-advanced-number-theory/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 10 · Advanced number theory 136 — Pollard Rho Intro cycle factoring Hard" markdown="1">
<label class="practice-check-label" for="check-math-10-136"><input class="practice-check" type="checkbox" id="check-math-10-136" data-key="01-math-based-programming-fundamentals/10-advanced-number-theory/problems/136-pollard-rho-intro.md" disabled><span class="ds-status">সমাধান করেছি: 136 — Pollard Rho Intro</span></label>
<div class="practice-problem" markdown="1">

**[136 — Pollard Rho Intro](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/136-pollard-rho-intro.md)**

<p class="practice-pattern">cycle factoring · Hard</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/136-pollard-rho-intro.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/136-pollard-rho-intro.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/136-pollard-rho-intro.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/136-pollard-rho-intro.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/136-pollard-rho-intro.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/136-pollard-rho-intro.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/10-advanced-number-theory/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/10-advanced-number-theory/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 10 · Advanced number theory 137 — Sieve Variants SPF / linear sieve Medium" markdown="1">
<label class="practice-check-label" for="check-math-10-137"><input class="practice-check" type="checkbox" id="check-math-10-137" data-key="01-math-based-programming-fundamentals/10-advanced-number-theory/problems/137-sieve-variants.md" disabled><span class="ds-status">সমাধান করেছি: 137 — Sieve Variants</span></label>
<div class="practice-problem" markdown="1">

**[137 — Sieve Variants](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/137-sieve-variants.md)**

<p class="practice-pattern">SPF / linear sieve · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/137-sieve-variants.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/137-sieve-variants.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/137-sieve-variants.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/137-sieve-variants.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/137-sieve-variants.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/137-sieve-variants.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/10-advanced-number-theory/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/10-advanced-number-theory/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 10 · Advanced number theory 138 — Segmented Sieve windowed sieve Hard" markdown="1">
<label class="practice-check-label" for="check-math-10-138"><input class="practice-check" type="checkbox" id="check-math-10-138" data-key="01-math-based-programming-fundamentals/10-advanced-number-theory/problems/138-segmented-sieve.md" disabled><span class="ds-status">সমাধান করেছি: 138 — Segmented Sieve</span></label>
<div class="practice-problem" markdown="1">

**[138 — Segmented Sieve](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/138-segmented-sieve.md)**

<p class="practice-pattern">windowed sieve · Hard</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/138-segmented-sieve.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/138-segmented-sieve.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/138-segmented-sieve.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/138-segmented-sieve.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/138-segmented-sieve.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/10-advanced-number-theory/problems/138-segmented-sieve.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/10-advanced-number-theory/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/10-advanced-number-theory/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

</ol>
</details>

<details class="practice-section" data-section="math-11" markdown="1">
<summary>Math 11 · Mixed CP patterns <span class="section-count">12টি</span></summary>

**আগে বুঝে নিন:** আগের কৌশল বাছাই, state, subset split।

**আগে পড়ুন:** [ভিত্তি](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/visualization-ideas.md)।

**Section-এর বড় challenge:** [ধাপে ধাপে প্রয়োগ করুন](guided-practice/math.md)। সব individual problem-এর বিকল্প নয়; প্রধান কৌশল একসঙ্গে ব্যবহার করার পরীক্ষা।

<ol class="practice-list" markdown="1">

<li class="practice-item" data-course="support" data-must="1" data-search="Math 11 · Mixed CP patterns 139 — Meet in the Middle split + merge (subset enumeration in two halves) Hard" markdown="1">
<label class="practice-check-label" for="check-math-11-139"><input class="practice-check" type="checkbox" id="check-math-11-139" data-key="01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/139-meet-in-the-middle.md" disabled><span class="ds-status">সমাধান করেছি: 139 — Meet in the Middle</span></label>
<div class="practice-problem" markdown="1">

**[139 — Meet in the Middle](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/139-meet-in-the-middle.md)**

<p class="practice-pattern">split + merge (subset enumeration in two halves) · Hard</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/139-meet-in-the-middle.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/139-meet-in-the-middle.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/139-meet-in-the-middle.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/139-meet-in-the-middle.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/139-meet-in-the-middle.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/139-meet-in-the-middle.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="1" data-search="Math 11 · Mixed CP patterns 140 — Ternary Search unimodal function-এর চূড়া/খাদ খোঁজা Medium" markdown="1">
<label class="practice-check-label" for="check-math-11-140"><input class="practice-check" type="checkbox" id="check-math-11-140" data-key="01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/140-ternary-search.md" disabled><span class="ds-status">সমাধান করেছি: 140 — Ternary Search</span></label>
<div class="practice-problem" markdown="1">

**[140 — Ternary Search](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/140-ternary-search.md)**

<p class="practice-pattern">unimodal function-এর চূড়া/খাদ খোঁজা · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/140-ternary-search.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/140-ternary-search.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/140-ternary-search.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/140-ternary-search.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/140-ternary-search.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/140-ternary-search.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="1" data-search="Math 11 · Mixed CP patterns 141 — Game Theory Basics W/L labeling (backward DP over game states) Medium" markdown="1">
<label class="practice-check-label" for="check-math-11-141"><input class="practice-check" type="checkbox" id="check-math-11-141" data-key="01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/141-game-theory-basics.md" disabled><span class="ds-status">সমাধান করেছি: 141 — Game Theory Basics</span></label>
<div class="practice-problem" markdown="1">

**[141 — Game Theory Basics](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/141-game-theory-basics.md)**

<p class="practice-pattern">W/L labeling (backward DP over game states) · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/141-game-theory-basics.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/141-game-theory-basics.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/141-game-theory-basics.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/141-game-theory-basics.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/141-game-theory-basics.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/141-game-theory-basics.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="1" data-search="Math 11 · Mixed CP patterns 142 — Nim Game XOR theorem (Nim-value of piles) Medium" markdown="1">
<label class="practice-check-label" for="check-math-11-142"><input class="practice-check" type="checkbox" id="check-math-11-142" data-key="01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/142-nim-game.md" disabled><span class="ds-status">সমাধান করেছি: 142 — Nim Game</span></label>
<div class="practice-problem" markdown="1">

**[142 — Nim Game](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/142-nim-game.md)**

<p class="practice-pattern">XOR theorem (Nim-value of piles) · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/142-nim-game.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/142-nim-game.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/142-nim-game.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/142-nim-game.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/142-nim-game.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/142-nim-game.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 11 · Mixed CP patterns 143 — Grundy Number Intro mex + XOR (Grundy value, sum of games) Hard" markdown="1">
<label class="practice-check-label" for="check-math-11-143"><input class="practice-check" type="checkbox" id="check-math-11-143" data-key="01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/143-grundy-number-intro.md" disabled><span class="ds-status">সমাধান করেছি: 143 — Grundy Number Intro</span></label>
<div class="practice-problem" markdown="1">

**[143 — Grundy Number Intro](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/143-grundy-number-intro.md)**

<p class="practice-pattern">mex + XOR (Grundy value, sum of games) · Hard</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/143-grundy-number-intro.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/143-grundy-number-intro.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/143-grundy-number-intro.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/143-grundy-number-intro.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/143-grundy-number-intro.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/143-grundy-number-intro.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 11 · Mixed CP patterns 144 — Expected Value Problems linearity of expectation (ভাঙো-যোগ করো) Medium" markdown="1">
<label class="practice-check-label" for="check-math-11-144"><input class="practice-check" type="checkbox" id="check-math-11-144" data-key="01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/144-expected-value-problems.md" disabled><span class="ds-status">সমাধান করেছি: 144 — Expected Value Problems</span></label>
<div class="practice-problem" markdown="1">

**[144 — Expected Value Problems](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/144-expected-value-problems.md)**

<p class="practice-pattern">linearity of expectation (ভাঙো-যোগ করো) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/144-expected-value-problems.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/144-expected-value-problems.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/144-expected-value-problems.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/144-expected-value-problems.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/144-expected-value-problems.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/144-expected-value-problems.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 11 · Mixed CP patterns 145 — Probability DP probability state (DP-তে সম্ভাবনা বওয়া) Hard" markdown="1">
<label class="practice-check-label" for="check-math-11-145"><input class="practice-check" type="checkbox" id="check-math-11-145" data-key="01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/145-probability-dp.md" disabled><span class="ds-status">সমাধান করেছি: 145 — Probability DP</span></label>
<div class="practice-problem" markdown="1">

**[145 — Probability DP](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/145-probability-dp.md)**

<p class="practice-pattern">probability state (DP-তে সম্ভাবনা বওয়া) · Hard</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/145-probability-dp.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/145-probability-dp.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/145-probability-dp.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/145-probability-dp.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/145-probability-dp.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/145-probability-dp.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 11 · Mixed CP patterns 146 — Burnside Lemma Intro average fixed points (group action counting) Hard" markdown="1">
<label class="practice-check-label" for="check-math-11-146"><input class="practice-check" type="checkbox" id="check-math-11-146" data-key="01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/146-burnside-lemma-intro.md" disabled><span class="ds-status">সমাধান করেছি: 146 — Burnside Lemma Intro</span></label>
<div class="practice-problem" markdown="1">

**[146 — Burnside Lemma Intro](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/146-burnside-lemma-intro.md)**

<p class="practice-pattern">average fixed points (group action counting) · Hard</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/146-burnside-lemma-intro.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/146-burnside-lemma-intro.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/146-burnside-lemma-intro.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/146-burnside-lemma-intro.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/146-burnside-lemma-intro.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/146-burnside-lemma-intro.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 11 · Mixed CP patterns 147 — Matrix Power on Graphs path counting (A^k = length-k walk count) Hard" markdown="1">
<label class="practice-check-label" for="check-math-11-147"><input class="practice-check" type="checkbox" id="check-math-11-147" data-key="01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/147-matrix-power-on-graphs.md" disabled><span class="ds-status">সমাধান করেছি: 147 — Matrix Power on Graphs</span></label>
<div class="practice-problem" markdown="1">

**[147 — Matrix Power on Graphs](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/147-matrix-power-on-graphs.md)**

<p class="practice-pattern">path counting (A^k = length-k walk count) · Hard</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/147-matrix-power-on-graphs.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/147-matrix-power-on-graphs.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/147-matrix-power-on-graphs.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/147-matrix-power-on-graphs.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/147-matrix-power-on-graphs.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/147-matrix-power-on-graphs.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 11 · Mixed CP patterns 148 — Inclusion-Exclusion Hard forbidden properties (sign-সহ subset যোগফল) Hard" markdown="1">
<label class="practice-check-label" for="check-math-11-148"><input class="practice-check" type="checkbox" id="check-math-11-148" data-key="01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/148-inclusion-exclusion-hard.md" disabled><span class="ds-status">সমাধান করেছি: 148 — Inclusion-Exclusion Hard</span></label>
<div class="practice-problem" markdown="1">

**[148 — Inclusion-Exclusion Hard](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/148-inclusion-exclusion-hard.md)**

<p class="practice-pattern">forbidden properties (sign-সহ subset যোগফল) · Hard</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/148-inclusion-exclusion-hard.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/148-inclusion-exclusion-hard.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/148-inclusion-exclusion-hard.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/148-inclusion-exclusion-hard.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/148-inclusion-exclusion-hard.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/148-inclusion-exclusion-hard.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 11 · Mixed CP patterns 149 — Combinatorics with DP counting DP (state = সারাংশ, মান = উপায়সংখ্যা) Hard" markdown="1">
<label class="practice-check-label" for="check-math-11-149"><input class="practice-check" type="checkbox" id="check-math-11-149" data-key="01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/149-combinatorics-with-dp.md" disabled><span class="ds-status">সমাধান করেছি: 149 — Combinatorics with DP</span></label>
<div class="practice-problem" markdown="1">

**[149 — Combinatorics with DP](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/149-combinatorics-with-dp.md)**

<p class="practice-pattern">counting DP (state = সারাংশ, মান = উপায়সংখ্যা) · Hard</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/149-combinatorics-with-dp.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/149-combinatorics-with-dp.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/149-combinatorics-with-dp.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/149-combinatorics-with-dp.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/149-combinatorics-with-dp.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/149-combinatorics-with-dp.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Math 11 · Mixed CP patterns 150 — Constructive Math Problems build + invariant (construction বা parity-proof) Hard" markdown="1">
<label class="practice-check-label" for="check-math-11-150"><input class="practice-check" type="checkbox" id="check-math-11-150" data-key="01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/150-constructive-math-problems.md" disabled><span class="ds-status">সমাধান করেছি: 150 — Constructive Math Problems</span></label>
<div class="practice-problem" markdown="1">

**[150 — Constructive Math Problems](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/150-constructive-math-problems.md)**

<p class="practice-pattern">build + invariant (construction বা parity-proof) · Hard</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/150-constructive-math-problems.md#problem) → [২. ভিত্তি](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/150-constructive-math-problems.md#idea) → [৩. ধাপ ও ছবি](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/150-constructive-math-problems.md#walkthrough) → [৪. কোড](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/150-constructive-math-problems.md#code) → [৫. খরচ ও ভুল](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/150-constructive-math-problems.md#cost) → [৬. নিজে আবার করুন](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/problems/150-constructive-math-problems.md#practice)

আটকে গেলে section-এর [ভিত্তি](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/concept-notes.md) · [চিত্র](01-math-based-programming-fundamentals/11-hard-mixed-cp-patterns/visualization-ideas.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

</ol>
</details>

</div>

<div class="practice-chapter" data-family="arrays" markdown="1">

## Array ও String {#section-arrays}

<details class="practice-section" data-section="arrays" markdown="1">
<summary>Array ও String <span class="section-count">23টি</span></summary>

**আগে বুঝে নিন:** index, traversal, boundary, immutable string।

**আগে পড়ুন:** [ভিত্তি](02-arrays-and-strings/concept.md) · [চিত্র ও ব্যবহার](02-arrays-and-strings/visual-explanation.md)।

**Section-এর বড় challenge:** [ধাপে ধাপে প্রয়োগ করুন](guided-practice/arrays.md)। সব individual problem-এর বিকল্প নয়; প্রধান কৌশল একসঙ্গে ব্যবহার করার পরীক্ষা।

<ol class="practice-list" markdown="1">

<li class="practice-item" data-course="M1" data-must="1" data-search="Array ও String 001 — Reverse String two pointers (দুই প্রান্ত থেকে swap) Easy" markdown="1">
<label class="practice-check-label" for="check-arrays-001"><input class="practice-check" type="checkbox" id="check-arrays-001" data-key="02-arrays-and-strings/problems/001-reverse-string.md" disabled><span class="ds-status">সমাধান করেছি: 001 — Reverse String</span></label>
<div class="practice-problem" markdown="1">

**[001 — Reverse String](02-arrays-and-strings/problems/001-reverse-string.md)**

<p class="practice-pattern">two pointers (দুই প্রান্ত থেকে swap) · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M1</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](02-arrays-and-strings/problems/001-reverse-string.md#problem) → [২. ভিত্তি](02-arrays-and-strings/problems/001-reverse-string.md#idea) → [৩. ধাপ ও ছবি](02-arrays-and-strings/problems/001-reverse-string.md#walkthrough) → [৪. কোড](02-arrays-and-strings/problems/001-reverse-string.md#code) → [৫. খরচ ও ভুল](02-arrays-and-strings/problems/001-reverse-string.md#cost) → [৬. নিজে আবার করুন](02-arrays-and-strings/problems/001-reverse-string.md#practice)

আটকে গেলে section-এর [ভিত্তি](02-arrays-and-strings/concept.md) · [চিত্র ও ব্যবহার](02-arrays-and-strings/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M4" data-must="1" data-search="Array ও String 002 — Two Sum frequency / complement lookup (hash map) Easy" markdown="1">
<label class="practice-check-label" for="check-arrays-002"><input class="practice-check" type="checkbox" id="check-arrays-002" data-key="02-arrays-and-strings/problems/002-two-sum.md" disabled><span class="ds-status">সমাধান করেছি: 002 — Two Sum</span></label>
<div class="practice-problem" markdown="1">

**[002 — Two Sum](02-arrays-and-strings/problems/002-two-sum.md)**

<p class="practice-pattern">frequency / complement lookup (hash map) · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](02-arrays-and-strings/problems/002-two-sum.md#problem) → [২. ভিত্তি](02-arrays-and-strings/problems/002-two-sum.md#idea) → [৩. ধাপ ও ছবি](02-arrays-and-strings/problems/002-two-sum.md#walkthrough) → [৪. কোড](02-arrays-and-strings/problems/002-two-sum.md#code) → [৫. খরচ ও ভুল](02-arrays-and-strings/problems/002-two-sum.md#cost) → [৬. নিজে আবার করুন](02-arrays-and-strings/problems/002-two-sum.md#practice)

আটকে গেলে section-এর [ভিত্তি](02-arrays-and-strings/concept.md) · [চিত্র ও ব্যবহার](02-arrays-and-strings/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M4" data-must="1" data-search="Array ও String 003 — Valid Anagram frequency counting (count map সমান কিনা) Easy" markdown="1">
<label class="practice-check-label" for="check-arrays-003"><input class="practice-check" type="checkbox" id="check-arrays-003" data-key="02-arrays-and-strings/problems/003-valid-anagram.md" disabled><span class="ds-status">সমাধান করেছি: 003 — Valid Anagram</span></label>
<div class="practice-problem" markdown="1">

**[003 — Valid Anagram](02-arrays-and-strings/problems/003-valid-anagram.md)**

<p class="practice-pattern">frequency counting (count map সমান কিনা) · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](02-arrays-and-strings/problems/003-valid-anagram.md#problem) → [২. ভিত্তি](02-arrays-and-strings/problems/003-valid-anagram.md#idea) → [৩. ধাপ ও ছবি](02-arrays-and-strings/problems/003-valid-anagram.md#walkthrough) → [৪. কোড](02-arrays-and-strings/problems/003-valid-anagram.md#code) → [৫. খরচ ও ভুল](02-arrays-and-strings/problems/003-valid-anagram.md#cost) → [৬. নিজে আবার করুন](02-arrays-and-strings/problems/003-valid-anagram.md#practice)

আটকে গেলে section-এর [ভিত্তি](02-arrays-and-strings/concept.md) · [চিত্র ও ব্যবহার](02-arrays-and-strings/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M1 M2" data-must="1" data-search="Array ও String 004 — Remove Duplicates from Sorted Array two pointers (slow/fast, same direction) Easy" markdown="1">
<label class="practice-check-label" for="check-arrays-004"><input class="practice-check" type="checkbox" id="check-arrays-004" data-key="02-arrays-and-strings/problems/004-remove-duplicates-sorted.md" disabled><span class="ds-status">সমাধান করেছি: 004 — Remove Duplicates from Sorted Array</span></label>
<div class="practice-problem" markdown="1">

**[004 — Remove Duplicates from Sorted Array](02-arrays-and-strings/problems/004-remove-duplicates-sorted.md)**

<p class="practice-pattern">two pointers (slow/fast, same direction) · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M1</a>
<a class="practice-badge is-course" href="#course-map">Microsoft · M2</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](02-arrays-and-strings/problems/004-remove-duplicates-sorted.md#problem) → [২. ভিত্তি](02-arrays-and-strings/problems/004-remove-duplicates-sorted.md#idea) → [৩. ধাপ ও ছবি](02-arrays-and-strings/problems/004-remove-duplicates-sorted.md#walkthrough) → [৪. কোড](02-arrays-and-strings/problems/004-remove-duplicates-sorted.md#code) → [৫. খরচ ও ভুল](02-arrays-and-strings/problems/004-remove-duplicates-sorted.md#cost) → [৬. নিজে আবার করুন](02-arrays-and-strings/problems/004-remove-duplicates-sorted.md#practice)

আটকে গেলে section-এর [ভিত্তি](02-arrays-and-strings/concept.md) · [চিত্র ও ব্যবহার](02-arrays-and-strings/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M1 M2" data-must="1" data-search="Array ও String 005 — Merge Sorted Array two pointers (পেছন থেকে সামনে) Easy" markdown="1">
<label class="practice-check-label" for="check-arrays-005"><input class="practice-check" type="checkbox" id="check-arrays-005" data-key="02-arrays-and-strings/problems/005-merge-sorted-array.md" disabled><span class="ds-status">সমাধান করেছি: 005 — Merge Sorted Array</span></label>
<div class="practice-problem" markdown="1">

**[005 — Merge Sorted Array](02-arrays-and-strings/problems/005-merge-sorted-array.md)**

<p class="practice-pattern">two pointers (পেছন থেকে সামনে) · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M1</a>
<a class="practice-badge is-course" href="#course-map">Microsoft · M2</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](02-arrays-and-strings/problems/005-merge-sorted-array.md#problem) → [২. ভিত্তি](02-arrays-and-strings/problems/005-merge-sorted-array.md#idea) → [৩. ধাপ ও ছবি](02-arrays-and-strings/problems/005-merge-sorted-array.md#walkthrough) → [৪. কোড](02-arrays-and-strings/problems/005-merge-sorted-array.md#code) → [৫. খরচ ও ভুল](02-arrays-and-strings/problems/005-merge-sorted-array.md#cost) → [৬. নিজে আবার করুন](02-arrays-and-strings/problems/005-merge-sorted-array.md#practice)

আটকে গেলে section-এর [ভিত্তি](02-arrays-and-strings/concept.md) · [চিত্র ও ব্যবহার](02-arrays-and-strings/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M1" data-must="1" data-search="Array ও String 006 — Move Zeroes two pointers (slow/fast, same direction) Easy" markdown="1">
<label class="practice-check-label" for="check-arrays-006"><input class="practice-check" type="checkbox" id="check-arrays-006" data-key="02-arrays-and-strings/problems/006-move-zeroes.md" disabled><span class="ds-status">সমাধান করেছি: 006 — Move Zeroes</span></label>
<div class="practice-problem" markdown="1">

**[006 — Move Zeroes](02-arrays-and-strings/problems/006-move-zeroes.md)**

<p class="practice-pattern">two pointers (slow/fast, same direction) · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M1</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](02-arrays-and-strings/problems/006-move-zeroes.md#problem) → [২. ভিত্তি](02-arrays-and-strings/problems/006-move-zeroes.md#idea) → [৩. ধাপ ও ছবি](02-arrays-and-strings/problems/006-move-zeroes.md#walkthrough) → [৪. কোড](02-arrays-and-strings/problems/006-move-zeroes.md#code) → [৫. খরচ ও ভুল](02-arrays-and-strings/problems/006-move-zeroes.md#cost) → [৬. নিজে আবার করুন](02-arrays-and-strings/problems/006-move-zeroes.md#practice)

আটকে গেলে section-এর [ভিত্তি](02-arrays-and-strings/concept.md) · [চিত্র ও ব্যবহার](02-arrays-and-strings/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M1" data-must="0" data-search="Array ও String 007 — Best Time to Buy and Sell Stock running min (Kadane-flavored one pass) Easy" markdown="1">
<label class="practice-check-label" for="check-arrays-007"><input class="practice-check" type="checkbox" id="check-arrays-007" data-key="02-arrays-and-strings/problems/007-buy-sell-stock.md" disabled><span class="ds-status">সমাধান করেছি: 007 — Best Time to Buy and Sell Stock</span></label>
<div class="practice-problem" markdown="1">

**[007 — Best Time to Buy and Sell Stock](02-arrays-and-strings/problems/007-buy-sell-stock.md)**

<p class="practice-pattern">running min (Kadane-flavored one pass) · Easy</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M1</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](02-arrays-and-strings/problems/007-buy-sell-stock.md#problem) → [২. ভিত্তি](02-arrays-and-strings/problems/007-buy-sell-stock.md#idea) → [৩. ধাপ ও ছবি](02-arrays-and-strings/problems/007-buy-sell-stock.md#walkthrough) → [৪. কোড](02-arrays-and-strings/problems/007-buy-sell-stock.md#code) → [৫. খরচ ও ভুল](02-arrays-and-strings/problems/007-buy-sell-stock.md#cost) → [৬. নিজে আবার করুন](02-arrays-and-strings/problems/007-buy-sell-stock.md#practice)

আটকে গেলে section-এর [ভিত্তি](02-arrays-and-strings/concept.md) · [চিত্র ও ব্যবহার](02-arrays-and-strings/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Array ও String 008 — Watermelon parity warm-up (modulo arithmetic) Easy" markdown="1">
<label class="practice-check-label" for="check-arrays-008"><input class="practice-check" type="checkbox" id="check-arrays-008" data-key="02-arrays-and-strings/problems/008-watermelon.md" disabled><span class="ds-status">সমাধান করেছি: 008 — Watermelon</span></label>
<div class="practice-problem" markdown="1">

**[008 — Watermelon](02-arrays-and-strings/problems/008-watermelon.md)**

<p class="practice-pattern">parity warm-up (modulo arithmetic) · Easy</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](02-arrays-and-strings/problems/008-watermelon.md#problem) → [২. ভিত্তি](02-arrays-and-strings/problems/008-watermelon.md#idea) → [৩. ধাপ ও ছবি](02-arrays-and-strings/problems/008-watermelon.md#walkthrough) → [৪. কোড](02-arrays-and-strings/problems/008-watermelon.md#code) → [৫. খরচ ও ভুল](02-arrays-and-strings/problems/008-watermelon.md#cost) → [৬. নিজে আবার করুন](02-arrays-and-strings/problems/008-watermelon.md#practice)

আটকে গেলে section-এর [ভিত্তি](02-arrays-and-strings/concept.md) · [চিত্র ও ব্যবহার](02-arrays-and-strings/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M1" data-must="1" data-search="Array ও String 009 — Static Range Sum Queries prefix sums (একবার precompute, প্রতিটা query O(1)) Easy" markdown="1">
<label class="practice-check-label" for="check-arrays-009"><input class="practice-check" type="checkbox" id="check-arrays-009" data-key="02-arrays-and-strings/problems/009-static-range-sum.md" disabled><span class="ds-status">সমাধান করেছি: 009 — Static Range Sum Queries</span></label>
<div class="practice-problem" markdown="1">

**[009 — Static Range Sum Queries](02-arrays-and-strings/problems/009-static-range-sum.md)**

<p class="practice-pattern">prefix sums (একবার precompute, প্রতিটা query O(1)) · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M1</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](02-arrays-and-strings/problems/009-static-range-sum.md#problem) → [২. ভিত্তি](02-arrays-and-strings/problems/009-static-range-sum.md#idea) → [৩. ধাপ ও ছবি](02-arrays-and-strings/problems/009-static-range-sum.md#walkthrough) → [৪. কোড](02-arrays-and-strings/problems/009-static-range-sum.md#code) → [৫. খরচ ও ভুল](02-arrays-and-strings/problems/009-static-range-sum.md#cost) → [৬. নিজে আবার করুন](02-arrays-and-strings/problems/009-static-range-sum.md#practice)

আটকে গেলে section-এর [ভিত্তি](02-arrays-and-strings/concept.md) · [চিত্র ও ব্যবহার](02-arrays-and-strings/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M1" data-must="1" data-search="Array ও String 010 — Longest Substring Without Repeating Characters sliding window (variable size, repair করে চলা) Medium" markdown="1">
<label class="practice-check-label" for="check-arrays-010"><input class="practice-check" type="checkbox" id="check-arrays-010" data-key="02-arrays-and-strings/problems/010-longest-unique-substring.md" disabled><span class="ds-status">সমাধান করেছি: 010 — Longest Substring Without Repeating Characters</span></label>
<div class="practice-problem" markdown="1">

**[010 — Longest Substring Without Repeating Characters](02-arrays-and-strings/problems/010-longest-unique-substring.md)**

<p class="practice-pattern">sliding window (variable size, repair করে চলা) · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M1</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](02-arrays-and-strings/problems/010-longest-unique-substring.md#problem) → [২. ভিত্তি](02-arrays-and-strings/problems/010-longest-unique-substring.md#idea) → [৩. ধাপ ও ছবি](02-arrays-and-strings/problems/010-longest-unique-substring.md#walkthrough) → [৪. কোড](02-arrays-and-strings/problems/010-longest-unique-substring.md#code) → [৫. খরচ ও ভুল](02-arrays-and-strings/problems/010-longest-unique-substring.md#cost) → [৬. নিজে আবার করুন](02-arrays-and-strings/problems/010-longest-unique-substring.md#practice)

আটকে গেলে section-এর [ভিত্তি](02-arrays-and-strings/concept.md) · [চিত্র ও ব্যবহার](02-arrays-and-strings/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M4" data-must="1" data-search="Array ও String 011 — Maximum Subarray Kadane&#x27;s algorithm (best ending here vs best so far) Medium" markdown="1">
<label class="practice-check-label" for="check-arrays-011"><input class="practice-check" type="checkbox" id="check-arrays-011" data-key="02-arrays-and-strings/problems/011-maximum-subarray.md" disabled><span class="ds-status">সমাধান করেছি: 011 — Maximum Subarray</span></label>
<div class="practice-problem" markdown="1">

**[011 — Maximum Subarray](02-arrays-and-strings/problems/011-maximum-subarray.md)**

<p class="practice-pattern">Kadane&#x27;s algorithm (best ending here vs best so far) · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](02-arrays-and-strings/problems/011-maximum-subarray.md#problem) → [২. ভিত্তি](02-arrays-and-strings/problems/011-maximum-subarray.md#idea) → [৩. ধাপ ও ছবি](02-arrays-and-strings/problems/011-maximum-subarray.md#walkthrough) → [৪. কোড](02-arrays-and-strings/problems/011-maximum-subarray.md#code) → [৫. খরচ ও ভুল](02-arrays-and-strings/problems/011-maximum-subarray.md#cost) → [৬. নিজে আবার করুন](02-arrays-and-strings/problems/011-maximum-subarray.md#practice)

আটকে গেলে section-এর [ভিত্তি](02-arrays-and-strings/concept.md) · [চিত্র ও ব্যবহার](02-arrays-and-strings/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M1" data-must="0" data-search="Array ও String 012 — Container With Most Water two pointers (দুই প্রান্ত থেকে, ছোট দেয়াল discard) Medium" markdown="1">
<label class="practice-check-label" for="check-arrays-012"><input class="practice-check" type="checkbox" id="check-arrays-012" data-key="02-arrays-and-strings/problems/012-container-most-water.md" disabled><span class="ds-status">সমাধান করেছি: 012 — Container With Most Water</span></label>
<div class="practice-problem" markdown="1">

**[012 — Container With Most Water](02-arrays-and-strings/problems/012-container-most-water.md)**

<p class="practice-pattern">two pointers (দুই প্রান্ত থেকে, ছোট দেয়াল discard) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M1</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](02-arrays-and-strings/problems/012-container-most-water.md#problem) → [২. ভিত্তি](02-arrays-and-strings/problems/012-container-most-water.md#idea) → [৩. ধাপ ও ছবি](02-arrays-and-strings/problems/012-container-most-water.md#walkthrough) → [৪. কোড](02-arrays-and-strings/problems/012-container-most-water.md#code) → [৫. খরচ ও ভুল](02-arrays-and-strings/problems/012-container-most-water.md#cost) → [৬. নিজে আবার করুন](02-arrays-and-strings/problems/012-container-most-water.md#practice)

আটকে গেলে section-এর [ভিত্তি](02-arrays-and-strings/concept.md) · [চিত্র ও ব্যবহার](02-arrays-and-strings/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M1" data-must="0" data-search="Array ও String 013 — Rotate Array triple reversal (তিনবার reverse করে O(1) space rotation) Medium" markdown="1">
<label class="practice-check-label" for="check-arrays-013"><input class="practice-check" type="checkbox" id="check-arrays-013" data-key="02-arrays-and-strings/problems/013-rotate-array.md" disabled><span class="ds-status">সমাধান করেছি: 013 — Rotate Array</span></label>
<div class="practice-problem" markdown="1">

**[013 — Rotate Array](02-arrays-and-strings/problems/013-rotate-array.md)**

<p class="practice-pattern">triple reversal (তিনবার reverse করে O(1) space rotation) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M1</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](02-arrays-and-strings/problems/013-rotate-array.md#problem) → [২. ভিত্তি](02-arrays-and-strings/problems/013-rotate-array.md#idea) → [৩. ধাপ ও ছবি](02-arrays-and-strings/problems/013-rotate-array.md#walkthrough) → [৪. কোড](02-arrays-and-strings/problems/013-rotate-array.md#code) → [৫. খরচ ও ভুল](02-arrays-and-strings/problems/013-rotate-array.md#cost) → [৬. নিজে আবার করুন](02-arrays-and-strings/problems/013-rotate-array.md#practice)

আটকে গেলে section-এর [ভিত্তি](02-arrays-and-strings/concept.md) · [চিত্র ও ব্যবহার](02-arrays-and-strings/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M1" data-must="1" data-search="Array ও String 014 — Product of Array Except Self prefix products (বাঁ পাশের product × ডান পাশের product) Medium" markdown="1">
<label class="practice-check-label" for="check-arrays-014"><input class="practice-check" type="checkbox" id="check-arrays-014" data-key="02-arrays-and-strings/problems/014-product-except-self.md" disabled><span class="ds-status">সমাধান করেছি: 014 — Product of Array Except Self</span></label>
<div class="practice-problem" markdown="1">

**[014 — Product of Array Except Self](02-arrays-and-strings/problems/014-product-except-self.md)**

<p class="practice-pattern">prefix products (বাঁ পাশের product × ডান পাশের product) · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M1</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](02-arrays-and-strings/problems/014-product-except-self.md#problem) → [২. ভিত্তি](02-arrays-and-strings/problems/014-product-except-self.md#idea) → [৩. ধাপ ও ছবি](02-arrays-and-strings/problems/014-product-except-self.md#walkthrough) → [৪. কোড](02-arrays-and-strings/problems/014-product-except-self.md#code) → [৫. খরচ ও ভুল](02-arrays-and-strings/problems/014-product-except-self.md#cost) → [৬. নিজে আবার করুন](02-arrays-and-strings/problems/014-product-except-self.md#practice)

আটকে গেলে section-এর [ভিত্তি](02-arrays-and-strings/concept.md) · [চিত্র ও ব্যবহার](02-arrays-and-strings/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M4" data-must="1" data-search="Array ও String 015 — Subarray Sum Equals K prefix sums + hash map (running prefix-এর complement খোঁজা) Medium" markdown="1">
<label class="practice-check-label" for="check-arrays-015"><input class="practice-check" type="checkbox" id="check-arrays-015" data-key="02-arrays-and-strings/problems/015-subarray-sum-k.md" disabled><span class="ds-status">সমাধান করেছি: 015 — Subarray Sum Equals K</span></label>
<div class="practice-problem" markdown="1">

**[015 — Subarray Sum Equals K](02-arrays-and-strings/problems/015-subarray-sum-k.md)**

<p class="practice-pattern">prefix sums + hash map (running prefix-এর complement খোঁজা) · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](02-arrays-and-strings/problems/015-subarray-sum-k.md#problem) → [২. ভিত্তি](02-arrays-and-strings/problems/015-subarray-sum-k.md#idea) → [৩. ধাপ ও ছবি](02-arrays-and-strings/problems/015-subarray-sum-k.md#walkthrough) → [৪. কোড](02-arrays-and-strings/problems/015-subarray-sum-k.md#code) → [৫. খরচ ও ভুল](02-arrays-and-strings/problems/015-subarray-sum-k.md#cost) → [৬. নিজে আবার করুন](02-arrays-and-strings/problems/015-subarray-sum-k.md#practice)

আটকে গেলে section-এর [ভিত্তি](02-arrays-and-strings/concept.md) · [চিত্র ও ব্যবহার](02-arrays-and-strings/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M1 M2" data-must="1" data-search="Array ও String 016 — 3Sum sort + two pointers (একটা element fix করে বাকি দুটো pair-sum) Medium" markdown="1">
<label class="practice-check-label" for="check-arrays-016"><input class="practice-check" type="checkbox" id="check-arrays-016" data-key="02-arrays-and-strings/problems/016-three-sum.md" disabled><span class="ds-status">সমাধান করেছি: 016 — 3Sum</span></label>
<div class="practice-problem" markdown="1">

**[016 — 3Sum](02-arrays-and-strings/problems/016-three-sum.md)**

<p class="practice-pattern">sort + two pointers (একটা element fix করে বাকি দুটো pair-sum) · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M1</a>
<a class="practice-badge is-course" href="#course-map">Microsoft · M2</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](02-arrays-and-strings/problems/016-three-sum.md#problem) → [২. ভিত্তি](02-arrays-and-strings/problems/016-three-sum.md#idea) → [৩. ধাপ ও ছবি](02-arrays-and-strings/problems/016-three-sum.md#walkthrough) → [৪. কোড](02-arrays-and-strings/problems/016-three-sum.md#code) → [৫. খরচ ও ভুল](02-arrays-and-strings/problems/016-three-sum.md#cost) → [৬. নিজে আবার করুন](02-arrays-and-strings/problems/016-three-sum.md#practice)

আটকে গেলে section-এর [ভিত্তি](02-arrays-and-strings/concept.md) · [চিত্র ও ব্যবহার](02-arrays-and-strings/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M4" data-must="0" data-search="Array ও String 017 — Group Anagrams frequency counting / canonical key (একই signature-এর word একসাথে bucket-এ) Medium" markdown="1">
<label class="practice-check-label" for="check-arrays-017"><input class="practice-check" type="checkbox" id="check-arrays-017" data-key="02-arrays-and-strings/problems/017-group-anagrams.md" disabled><span class="ds-status">সমাধান করেছি: 017 — Group Anagrams</span></label>
<div class="practice-problem" markdown="1">

**[017 — Group Anagrams](02-arrays-and-strings/problems/017-group-anagrams.md)**

<p class="practice-pattern">frequency counting / canonical key (একই signature-এর word একসাথে bucket-এ) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](02-arrays-and-strings/problems/017-group-anagrams.md#problem) → [২. ভিত্তি](02-arrays-and-strings/problems/017-group-anagrams.md#idea) → [৩. ধাপ ও ছবি](02-arrays-and-strings/problems/017-group-anagrams.md#walkthrough) → [৪. কোড](02-arrays-and-strings/problems/017-group-anagrams.md#code) → [৫. খরচ ও ভুল](02-arrays-and-strings/problems/017-group-anagrams.md#cost) → [৬. নিজে আবার করুন](02-arrays-and-strings/problems/017-group-anagrams.md#practice)

আটকে গেলে section-এর [ভিত্তি](02-arrays-and-strings/concept.md) · [চিত্র ও ব্যবহার](02-arrays-and-strings/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M4" data-must="0" data-search="Array ও String 018 — Longest Consecutive Sequence set + smart start detection (শুধু streak-এর শুরু থেকে গোনা) Medium" markdown="1">
<label class="practice-check-label" for="check-arrays-018"><input class="practice-check" type="checkbox" id="check-arrays-018" data-key="02-arrays-and-strings/problems/018-longest-consecutive.md" disabled><span class="ds-status">সমাধান করেছি: 018 — Longest Consecutive Sequence</span></label>
<div class="practice-problem" markdown="1">

**[018 — Longest Consecutive Sequence](02-arrays-and-strings/problems/018-longest-consecutive.md)**

<p class="practice-pattern">set + smart start detection (শুধু streak-এর শুরু থেকে গোনা) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](02-arrays-and-strings/problems/018-longest-consecutive.md#problem) → [২. ভিত্তি](02-arrays-and-strings/problems/018-longest-consecutive.md#idea) → [৩. ধাপ ও ছবি](02-arrays-and-strings/problems/018-longest-consecutive.md#walkthrough) → [৪. কোড](02-arrays-and-strings/problems/018-longest-consecutive.md#code) → [৫. খরচ ও ভুল](02-arrays-and-strings/problems/018-longest-consecutive.md#cost) → [৬. নিজে আবার করুন](02-arrays-and-strings/problems/018-longest-consecutive.md#practice)

আটকে গেলে section-এর [ভিত্তি](02-arrays-and-strings/concept.md) · [চিত্র ও ব্যবহার](02-arrays-and-strings/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M1" data-must="0" data-search="Array ও String 019 — Decode String string building + stack (nested repeat খুলে আনা) Medium" markdown="1">
<label class="practice-check-label" for="check-arrays-019"><input class="practice-check" type="checkbox" id="check-arrays-019" data-key="02-arrays-and-strings/problems/019-decode-string.md" disabled><span class="ds-status">সমাধান করেছি: 019 — Decode String</span></label>
<div class="practice-problem" markdown="1">

**[019 — Decode String](02-arrays-and-strings/problems/019-decode-string.md)**

<p class="practice-pattern">string building + stack (nested repeat খুলে আনা) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M1</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](02-arrays-and-strings/problems/019-decode-string.md#problem) → [২. ভিত্তি](02-arrays-and-strings/problems/019-decode-string.md#idea) → [৩. ধাপ ও ছবি](02-arrays-and-strings/problems/019-decode-string.md#walkthrough) → [৪. কোড](02-arrays-and-strings/problems/019-decode-string.md#code) → [৫. খরচ ও ভুল](02-arrays-and-strings/problems/019-decode-string.md#cost) → [৬. নিজে আবার করুন](02-arrays-and-strings/problems/019-decode-string.md#practice)

আটকে গেলে section-এর [ভিত্তি](02-arrays-and-strings/concept.md) · [চিত্র ও ব্যবহার](02-arrays-and-strings/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M4" data-must="1" data-search="Array ও String 020 — Minimum Window Substring sliding window (shrinkable) + frequency counting Hard" markdown="1">
<label class="practice-check-label" for="check-arrays-020"><input class="practice-check" type="checkbox" id="check-arrays-020" data-key="02-arrays-and-strings/problems/020-minimum-window-substring.md" disabled><span class="ds-status">সমাধান করেছি: 020 — Minimum Window Substring</span></label>
<div class="practice-problem" markdown="1">

**[020 — Minimum Window Substring](02-arrays-and-strings/problems/020-minimum-window-substring.md)**

<p class="practice-pattern">sliding window (shrinkable) + frequency counting · Hard</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](02-arrays-and-strings/problems/020-minimum-window-substring.md#problem) → [২. ভিত্তি](02-arrays-and-strings/problems/020-minimum-window-substring.md#idea) → [৩. ধাপ ও ছবি](02-arrays-and-strings/problems/020-minimum-window-substring.md#walkthrough) → [৪. কোড](02-arrays-and-strings/problems/020-minimum-window-substring.md#code) → [৫. খরচ ও ভুল](02-arrays-and-strings/problems/020-minimum-window-substring.md#cost) → [৬. নিজে আবার করুন](02-arrays-and-strings/problems/020-minimum-window-substring.md#practice)

আটকে গেলে section-এর [ভিত্তি](02-arrays-and-strings/concept.md) · [চিত্র ও ব্যবহার](02-arrays-and-strings/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M4" data-must="1" data-search="Array ও String 021 — Trapping Rain Water two pointers / prefix max (প্রতিটা ঘরের উপর জমা পানি) Hard" markdown="1">
<label class="practice-check-label" for="check-arrays-021"><input class="practice-check" type="checkbox" id="check-arrays-021" data-key="02-arrays-and-strings/problems/021-trapping-rain-water.md" disabled><span class="ds-status">সমাধান করেছি: 021 — Trapping Rain Water</span></label>
<div class="practice-problem" markdown="1">

**[021 — Trapping Rain Water](02-arrays-and-strings/problems/021-trapping-rain-water.md)**

<p class="practice-pattern">two pointers / prefix max (প্রতিটা ঘরের উপর জমা পানি) · Hard</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](02-arrays-and-strings/problems/021-trapping-rain-water.md#problem) → [২. ভিত্তি](02-arrays-and-strings/problems/021-trapping-rain-water.md#idea) → [৩. ধাপ ও ছবি](02-arrays-and-strings/problems/021-trapping-rain-water.md#walkthrough) → [৪. কোড](02-arrays-and-strings/problems/021-trapping-rain-water.md#code) → [৫. খরচ ও ভুল](02-arrays-and-strings/problems/021-trapping-rain-water.md#cost) → [৬. নিজে আবার করুন](02-arrays-and-strings/problems/021-trapping-rain-water.md#practice)

আটকে গেলে section-এর [ভিত্তি](02-arrays-and-strings/concept.md) · [চিত্র ও ব্যবহার](02-arrays-and-strings/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="extension" data-must="0" data-search="Array ও String 022 — First Missing Positive in-place index marking (cyclic placement) Hard" markdown="1">
<label class="practice-check-label" for="check-arrays-022"><input class="practice-check" type="checkbox" id="check-arrays-022" data-key="02-arrays-and-strings/problems/022-first-missing-positive.md" disabled><span class="ds-status">সমাধান করেছি: 022 — First Missing Positive</span></label>
<div class="practice-problem" markdown="1">

**[022 — First Missing Positive](02-arrays-and-strings/problems/022-first-missing-positive.md)**

<p class="practice-pattern">in-place index marking (cyclic placement) · Hard</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">বাড়তি অনুশীলন</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](02-arrays-and-strings/problems/022-first-missing-positive.md#problem) → [২. ভিত্তি](02-arrays-and-strings/problems/022-first-missing-positive.md#idea) → [৩. ধাপ ও ছবি](02-arrays-and-strings/problems/022-first-missing-positive.md#walkthrough) → [৪. কোড](02-arrays-and-strings/problems/022-first-missing-positive.md#code) → [৫. খরচ ও ভুল](02-arrays-and-strings/problems/022-first-missing-positive.md#cost) → [৬. নিজে আবার করুন](02-arrays-and-strings/problems/022-first-missing-positive.md#practice)

আটকে গেলে section-এর [ভিত্তি](02-arrays-and-strings/concept.md) · [চিত্র ও ব্যবহার](02-arrays-and-strings/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M1" data-must="1" data-search="Array ও String 023 — Sliding Window Maximum monotonic deque (descending) Hard" markdown="1">
<label class="practice-check-label" for="check-arrays-023"><input class="practice-check" type="checkbox" id="check-arrays-023" data-key="02-arrays-and-strings/problems/023-sliding-window-maximum.md" disabled><span class="ds-status">সমাধান করেছি: 023 — Sliding Window Maximum</span></label>
<div class="practice-problem" markdown="1">

**[023 — Sliding Window Maximum](02-arrays-and-strings/problems/023-sliding-window-maximum.md)**

<p class="practice-pattern">monotonic deque (descending) · Hard</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M1</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](02-arrays-and-strings/problems/023-sliding-window-maximum.md#problem) → [২. ভিত্তি](02-arrays-and-strings/problems/023-sliding-window-maximum.md#idea) → [৩. ধাপ ও ছবি](02-arrays-and-strings/problems/023-sliding-window-maximum.md#walkthrough) → [৪. কোড](02-arrays-and-strings/problems/023-sliding-window-maximum.md#code) → [৫. খরচ ও ভুল](02-arrays-and-strings/problems/023-sliding-window-maximum.md#cost) → [৬. নিজে আবার করুন](02-arrays-and-strings/problems/023-sliding-window-maximum.md#practice)

আটকে গেলে section-এর [ভিত্তি](02-arrays-and-strings/concept.md) · [চিত্র ও ব্যবহার](02-arrays-and-strings/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

</ol>
</details>

</div>

<div class="practice-chapter" data-family="sorting" markdown="1">

## Sorting ও Searching {#section-sorting}

<details class="practice-section" data-section="sorting" markdown="1">
<summary>Sorting ও Searching <span class="section-count">4টি</span></summary>

**আগে বুঝে নিন:** comparison, swap, recursion/stack, sorted interval।

**আগে পড়ুন:** [ভিত্তি](sorting-searching/concept.md) · [চিত্র ও ব্যবহার](sorting-searching/README.md)।

**Section-এর বড় challenge:** [ধাপে ধাপে প্রয়োগ করুন](guided-practice/sorting-searching.md)। সব individual problem-এর বিকল্প নয়; প্রধান কৌশল একসঙ্গে ব্যবহার করার পরীক্ষা।

<ol class="practice-list" markdown="1">

<li class="practice-item" data-course="M2" data-must="1" data-search="Sorting ও Searching Bubble sort — pass ধরে সাজানো adjacent comparison / stable swap Easy" markdown="1">
<label class="practice-check-label" for="check-sorting-001"><input class="practice-check" type="checkbox" id="check-sorting-001" data-key="sorting-searching/problems/001-bubble-sort.md" disabled><span class="ds-status">সমাধান করেছি: Bubble sort — pass ধরে সাজানো</span></label>
<div class="practice-problem" markdown="1">

**[Bubble sort — pass ধরে সাজানো](sorting-searching/problems/001-bubble-sort.md)**

<p class="practice-pattern">adjacent comparison / stable swap · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M2</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](sorting-searching/problems/001-bubble-sort.md#problem) → [২. ভিত্তি](sorting-searching/problems/001-bubble-sort.md#idea) → [৩. ধাপ ও ছবি](sorting-searching/problems/001-bubble-sort.md#walkthrough) → [৪. কোড](sorting-searching/problems/001-bubble-sort.md#code) → [৫. খরচ ও ভুল](sorting-searching/problems/001-bubble-sort.md#cost) → [৬. নিজে আবার করুন](sorting-searching/problems/001-bubble-sort.md#practice)

আটকে গেলে section-এর [ভিত্তি](sorting-searching/concept.md) · [চিত্র ও ব্যবহার](sorting-searching/README.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M2" data-must="1" data-search="Sorting ও Searching Merge sort — sorted অংশ জোড়া divide and conquer / merge Easy" markdown="1">
<label class="practice-check-label" for="check-sorting-002"><input class="practice-check" type="checkbox" id="check-sorting-002" data-key="sorting-searching/problems/002-merge-sort.md" disabled><span class="ds-status">সমাধান করেছি: Merge sort — sorted অংশ জোড়া</span></label>
<div class="practice-problem" markdown="1">

**[Merge sort — sorted অংশ জোড়া](sorting-searching/problems/002-merge-sort.md)**

<p class="practice-pattern">divide and conquer / merge · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M2</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](sorting-searching/problems/002-merge-sort.md#problem) → [২. ভিত্তি](sorting-searching/problems/002-merge-sort.md#idea) → [৩. ধাপ ও ছবি](sorting-searching/problems/002-merge-sort.md#walkthrough) → [৪. কোড](sorting-searching/problems/002-merge-sort.md#code) → [৫. খরচ ও ভুল](sorting-searching/problems/002-merge-sort.md#cost) → [৬. নিজে আবার করুন](sorting-searching/problems/002-merge-sort.md#practice)

আটকে গেলে section-এর [ভিত্তি](sorting-searching/concept.md) · [চিত্র ও ব্যবহার](sorting-searching/README.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M2" data-must="1" data-search="Sorting ও Searching Quicksort — pivot দিয়ে তিন ভাগ partition / explicit stack Medium" markdown="1">
<label class="practice-check-label" for="check-sorting-003"><input class="practice-check" type="checkbox" id="check-sorting-003" data-key="sorting-searching/problems/003-quicksort.md" disabled><span class="ds-status">সমাধান করেছি: Quicksort — pivot দিয়ে তিন ভাগ</span></label>
<div class="practice-problem" markdown="1">

**[Quicksort — pivot দিয়ে তিন ভাগ](sorting-searching/problems/003-quicksort.md)**

<p class="practice-pattern">partition / explicit stack · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M2</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](sorting-searching/problems/003-quicksort.md#problem) → [২. ভিত্তি](sorting-searching/problems/003-quicksort.md#idea) → [৩. ধাপ ও ছবি](sorting-searching/problems/003-quicksort.md#walkthrough) → [৪. কোড](sorting-searching/problems/003-quicksort.md#code) → [৫. খরচ ও ভুল](sorting-searching/problems/003-quicksort.md#cost) → [৬. নিজে আবার করুন](sorting-searching/problems/003-quicksort.md#practice)

আটকে গেলে section-এর [ভিত্তি](sorting-searching/concept.md) · [চিত্র ও ব্যবহার](sorting-searching/README.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M2" data-must="1" data-search="Sorting ও Searching Binary search — duplicate-এর দুই সীমা lower bound / upper bound Easy" markdown="1">
<label class="practice-check-label" for="check-sorting-004"><input class="practice-check" type="checkbox" id="check-sorting-004" data-key="sorting-searching/problems/004-binary-search.md" disabled><span class="ds-status">সমাধান করেছি: Binary search — duplicate-এর দুই সীমা</span></label>
<div class="practice-problem" markdown="1">

**[Binary search — duplicate-এর দুই সীমা](sorting-searching/problems/004-binary-search.md)**

<p class="practice-pattern">lower bound / upper bound · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M2</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](sorting-searching/problems/004-binary-search.md#problem) → [২. ভিত্তি](sorting-searching/problems/004-binary-search.md#idea) → [৩. ধাপ ও ছবি](sorting-searching/problems/004-binary-search.md#walkthrough) → [৪. কোড](sorting-searching/problems/004-binary-search.md#code) → [৫. খরচ ও ভুল](sorting-searching/problems/004-binary-search.md#cost) → [৬. নিজে আবার করুন](sorting-searching/problems/004-binary-search.md#practice)

আটকে গেলে section-এর [ভিত্তি](sorting-searching/concept.md) · [চিত্র ও ব্যবহার](sorting-searching/README.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

</ol>
</details>

</div>

<div class="practice-chapter" data-family="linked-list" markdown="1">

## Linked List {#section-linked-list}

<details class="practice-section" data-section="linked-list" markdown="1">
<summary>Linked List <span class="section-count">21টি</span></summary>

**আগে বুঝে নিন:** node, next reference, None, traversal।

**আগে পড়ুন:** [ভিত্তি](03-linked-list/concept.md) · [চিত্র ও ব্যবহার](03-linked-list/visual-explanation.md)।

**Section-এর বড় challenge:** [ধাপে ধাপে প্রয়োগ করুন](guided-practice/linked-list.md)। সব individual problem-এর বিকল্প নয়; প্রধান কৌশল একসঙ্গে ব্যবহার করার পরীক্ষা।

<ol class="practice-list" markdown="1">

<li class="practice-item" data-course="M1" data-must="1" data-search="Linked List 001 — Reverse Linked List in-place reversal (pointer rewiring) Easy" markdown="1">
<label class="practice-check-label" for="check-linked-list-001"><input class="practice-check" type="checkbox" id="check-linked-list-001" data-key="03-linked-list/problems/001-reverse-linked-list.md" disabled><span class="ds-status">সমাধান করেছি: 001 — Reverse Linked List</span></label>
<div class="practice-problem" markdown="1">

**[001 — Reverse Linked List](03-linked-list/problems/001-reverse-linked-list.md)**

<p class="practice-pattern">in-place reversal (pointer rewiring) · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M1</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](03-linked-list/problems/001-reverse-linked-list.md#problem) → [২. ভিত্তি](03-linked-list/problems/001-reverse-linked-list.md#idea) → [৩. ধাপ ও ছবি](03-linked-list/problems/001-reverse-linked-list.md#walkthrough) → [৪. কোড](03-linked-list/problems/001-reverse-linked-list.md#code) → [৫. খরচ ও ভুল](03-linked-list/problems/001-reverse-linked-list.md#cost) → [৬. নিজে আবার করুন](03-linked-list/problems/001-reverse-linked-list.md#practice)

আটকে গেলে section-এর [ভিত্তি](03-linked-list/concept.md) · [চিত্র ও ব্যবহার](03-linked-list/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M1" data-must="1" data-search="Linked List 002 — Merge Two Sorted Lists merge + dummy head Easy" markdown="1">
<label class="practice-check-label" for="check-linked-list-002"><input class="practice-check" type="checkbox" id="check-linked-list-002" data-key="03-linked-list/problems/002-merge-two-sorted-lists.md" disabled><span class="ds-status">সমাধান করেছি: 002 — Merge Two Sorted Lists</span></label>
<div class="practice-problem" markdown="1">

**[002 — Merge Two Sorted Lists](03-linked-list/problems/002-merge-two-sorted-lists.md)**

<p class="practice-pattern">merge + dummy head · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M1</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](03-linked-list/problems/002-merge-two-sorted-lists.md#problem) → [২. ভিত্তি](03-linked-list/problems/002-merge-two-sorted-lists.md#idea) → [৩. ধাপ ও ছবি](03-linked-list/problems/002-merge-two-sorted-lists.md#walkthrough) → [৪. কোড](03-linked-list/problems/002-merge-two-sorted-lists.md#code) → [৫. খরচ ও ভুল](03-linked-list/problems/002-merge-two-sorted-lists.md#cost) → [৬. নিজে আবার করুন](03-linked-list/problems/002-merge-two-sorted-lists.md#practice)

আটকে গেলে section-এর [ভিত্তি](03-linked-list/concept.md) · [চিত্র ও ব্যবহার](03-linked-list/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M1" data-must="1" data-search="Linked List 003 — Linked List Cycle slow/fast pointers (Floyd&#x27;s tortoise and hare) Easy" markdown="1">
<label class="practice-check-label" for="check-linked-list-003"><input class="practice-check" type="checkbox" id="check-linked-list-003" data-key="03-linked-list/problems/003-linked-list-cycle.md" disabled><span class="ds-status">সমাধান করেছি: 003 — Linked List Cycle</span></label>
<div class="practice-problem" markdown="1">

**[003 — Linked List Cycle](03-linked-list/problems/003-linked-list-cycle.md)**

<p class="practice-pattern">slow/fast pointers (Floyd&#x27;s tortoise and hare) · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M1</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](03-linked-list/problems/003-linked-list-cycle.md#problem) → [২. ভিত্তি](03-linked-list/problems/003-linked-list-cycle.md#idea) → [৩. ধাপ ও ছবি](03-linked-list/problems/003-linked-list-cycle.md#walkthrough) → [৪. কোড](03-linked-list/problems/003-linked-list-cycle.md#code) → [৫. খরচ ও ভুল](03-linked-list/problems/003-linked-list-cycle.md#cost) → [৬. নিজে আবার করুন](03-linked-list/problems/003-linked-list-cycle.md#practice)

আটকে গেলে section-এর [ভিত্তি](03-linked-list/concept.md) · [চিত্র ও ব্যবহার](03-linked-list/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M1" data-must="1" data-search="Linked List 004 — Middle of the Linked List slow/fast pointers Easy" markdown="1">
<label class="practice-check-label" for="check-linked-list-004"><input class="practice-check" type="checkbox" id="check-linked-list-004" data-key="03-linked-list/problems/004-middle-of-list.md" disabled><span class="ds-status">সমাধান করেছি: 004 — Middle of the Linked List</span></label>
<div class="practice-problem" markdown="1">

**[004 — Middle of the Linked List](03-linked-list/problems/004-middle-of-list.md)**

<p class="practice-pattern">slow/fast pointers · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M1</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](03-linked-list/problems/004-middle-of-list.md#problem) → [২. ভিত্তি](03-linked-list/problems/004-middle-of-list.md#idea) → [৩. ধাপ ও ছবি](03-linked-list/problems/004-middle-of-list.md#walkthrough) → [৪. কোড](03-linked-list/problems/004-middle-of-list.md#code) → [৫. খরচ ও ভুল](03-linked-list/problems/004-middle-of-list.md#cost) → [৬. নিজে আবার করুন](03-linked-list/problems/004-middle-of-list.md#practice)

আটকে গেলে section-এর [ভিত্তি](03-linked-list/concept.md) · [চিত্র ও ব্যবহার](03-linked-list/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M1" data-must="0" data-search="Linked List 005 — Remove Duplicates from Sorted List pointer rewiring Easy" markdown="1">
<label class="practice-check-label" for="check-linked-list-005"><input class="practice-check" type="checkbox" id="check-linked-list-005" data-key="03-linked-list/problems/005-remove-duplicates-sorted-list.md" disabled><span class="ds-status">সমাধান করেছি: 005 — Remove Duplicates from Sorted List</span></label>
<div class="practice-problem" markdown="1">

**[005 — Remove Duplicates from Sorted List](03-linked-list/problems/005-remove-duplicates-sorted-list.md)**

<p class="practice-pattern">pointer rewiring · Easy</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M1</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](03-linked-list/problems/005-remove-duplicates-sorted-list.md#problem) → [২. ভিত্তি](03-linked-list/problems/005-remove-duplicates-sorted-list.md#idea) → [৩. ধাপ ও ছবি](03-linked-list/problems/005-remove-duplicates-sorted-list.md#walkthrough) → [৪. কোড](03-linked-list/problems/005-remove-duplicates-sorted-list.md#code) → [৫. খরচ ও ভুল](03-linked-list/problems/005-remove-duplicates-sorted-list.md#cost) → [৬. নিজে আবার করুন](03-linked-list/problems/005-remove-duplicates-sorted-list.md#practice)

আটকে গেলে section-এর [ভিত্তি](03-linked-list/concept.md) · [চিত্র ও ব্যবহার](03-linked-list/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M1" data-must="1" data-search="Linked List 006 — Remove Linked List Elements dummy head Easy" markdown="1">
<label class="practice-check-label" for="check-linked-list-006"><input class="practice-check" type="checkbox" id="check-linked-list-006" data-key="03-linked-list/problems/006-remove-elements.md" disabled><span class="ds-status">সমাধান করেছি: 006 — Remove Linked List Elements</span></label>
<div class="practice-problem" markdown="1">

**[006 — Remove Linked List Elements](03-linked-list/problems/006-remove-elements.md)**

<p class="practice-pattern">dummy head · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M1</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](03-linked-list/problems/006-remove-elements.md#problem) → [২. ভিত্তি](03-linked-list/problems/006-remove-elements.md#idea) → [৩. ধাপ ও ছবি](03-linked-list/problems/006-remove-elements.md#walkthrough) → [৪. কোড](03-linked-list/problems/006-remove-elements.md#code) → [৫. খরচ ও ভুল](03-linked-list/problems/006-remove-elements.md#cost) → [৬. নিজে আবার করুন](03-linked-list/problems/006-remove-elements.md#practice)

আটকে গেলে section-এর [ভিত্তি](03-linked-list/concept.md) · [চিত্র ও ব্যবহার](03-linked-list/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M1" data-must="0" data-search="Linked List 007 — Delete Node in a Linked List value-copy trick Easy (একটা &#x27;trick&#x27; problem)" markdown="1">
<label class="practice-check-label" for="check-linked-list-007"><input class="practice-check" type="checkbox" id="check-linked-list-007" data-key="03-linked-list/problems/007-delete-given-node.md" disabled><span class="ds-status">সমাধান করেছি: 007 — Delete Node in a Linked List</span></label>
<div class="practice-problem" markdown="1">

**[007 — Delete Node in a Linked List](03-linked-list/problems/007-delete-given-node.md)**

<p class="practice-pattern">value-copy trick · Easy (একটা &#x27;trick&#x27; problem)</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M1</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](03-linked-list/problems/007-delete-given-node.md#problem) → [২. ভিত্তি](03-linked-list/problems/007-delete-given-node.md#idea) → [৩. ধাপ ও ছবি](03-linked-list/problems/007-delete-given-node.md#walkthrough) → [৪. কোড](03-linked-list/problems/007-delete-given-node.md#code) → [৫. খরচ ও ভুল](03-linked-list/problems/007-delete-given-node.md#cost) → [৬. নিজে আবার করুন](03-linked-list/problems/007-delete-given-node.md#practice)

আটকে গেলে section-এর [ভিত্তি](03-linked-list/concept.md) · [চিত্র ও ব্যবহার](03-linked-list/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M1" data-must="1" data-search="Linked List 008 — Intersection of Two Linked Lists two pointers / path switching Easy" markdown="1">
<label class="practice-check-label" for="check-linked-list-008"><input class="practice-check" type="checkbox" id="check-linked-list-008" data-key="03-linked-list/problems/008-intersection-of-lists.md" disabled><span class="ds-status">সমাধান করেছি: 008 — Intersection of Two Linked Lists</span></label>
<div class="practice-problem" markdown="1">

**[008 — Intersection of Two Linked Lists](03-linked-list/problems/008-intersection-of-lists.md)**

<p class="practice-pattern">two pointers / path switching · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M1</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](03-linked-list/problems/008-intersection-of-lists.md#problem) → [২. ভিত্তি](03-linked-list/problems/008-intersection-of-lists.md#idea) → [৩. ধাপ ও ছবি](03-linked-list/problems/008-intersection-of-lists.md#walkthrough) → [৪. কোড](03-linked-list/problems/008-intersection-of-lists.md#code) → [৫. খরচ ও ভুল](03-linked-list/problems/008-intersection-of-lists.md#cost) → [৬. নিজে আবার করুন](03-linked-list/problems/008-intersection-of-lists.md#practice)

আটকে গেলে section-এর [ভিত্তি](03-linked-list/concept.md) · [চিত্র ও ব্যবহার](03-linked-list/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M1" data-must="1" data-search="Linked List 009 — Remove Nth Node From End of List runner + dummy head (fixed-gap two pointers) Medium" markdown="1">
<label class="practice-check-label" for="check-linked-list-009"><input class="practice-check" type="checkbox" id="check-linked-list-009" data-key="03-linked-list/problems/009-remove-nth-from-end.md" disabled><span class="ds-status">সমাধান করেছি: 009 — Remove Nth Node From End of List</span></label>
<div class="practice-problem" markdown="1">

**[009 — Remove Nth Node From End of List](03-linked-list/problems/009-remove-nth-from-end.md)**

<p class="practice-pattern">runner + dummy head (fixed-gap two pointers) · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M1</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](03-linked-list/problems/009-remove-nth-from-end.md#problem) → [২. ভিত্তি](03-linked-list/problems/009-remove-nth-from-end.md#idea) → [৩. ধাপ ও ছবি](03-linked-list/problems/009-remove-nth-from-end.md#walkthrough) → [৪. কোড](03-linked-list/problems/009-remove-nth-from-end.md#code) → [৫. খরচ ও ভুল](03-linked-list/problems/009-remove-nth-from-end.md#cost) → [৬. নিজে আবার করুন](03-linked-list/problems/009-remove-nth-from-end.md#practice)

আটকে গেলে section-এর [ভিত্তি](03-linked-list/concept.md) · [চিত্র ও ব্যবহার](03-linked-list/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M1" data-must="1" data-search="Linked List 010 — Add Two Numbers dummy head + carry Medium" markdown="1">
<label class="practice-check-label" for="check-linked-list-010"><input class="practice-check" type="checkbox" id="check-linked-list-010" data-key="03-linked-list/problems/010-add-two-numbers.md" disabled><span class="ds-status">সমাধান করেছি: 010 — Add Two Numbers</span></label>
<div class="practice-problem" markdown="1">

**[010 — Add Two Numbers](03-linked-list/problems/010-add-two-numbers.md)**

<p class="practice-pattern">dummy head + carry · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M1</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](03-linked-list/problems/010-add-two-numbers.md#problem) → [২. ভিত্তি](03-linked-list/problems/010-add-two-numbers.md#idea) → [৩. ধাপ ও ছবি](03-linked-list/problems/010-add-two-numbers.md#walkthrough) → [৪. কোড](03-linked-list/problems/010-add-two-numbers.md#code) → [৫. খরচ ও ভুল](03-linked-list/problems/010-add-two-numbers.md#cost) → [৬. নিজে আবার করুন](03-linked-list/problems/010-add-two-numbers.md#practice)

আটকে গেলে section-এর [ভিত্তি](03-linked-list/concept.md) · [চিত্র ও ব্যবহার](03-linked-list/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M1" data-must="1" data-search="Linked List 011 — Linked List Cycle II Floyd&#x27;s phase 2 (slow/fast meet, তারপর head থেকে আবার) Medium" markdown="1">
<label class="practice-check-label" for="check-linked-list-011"><input class="practice-check" type="checkbox" id="check-linked-list-011" data-key="03-linked-list/problems/011-cycle-start.md" disabled><span class="ds-status">সমাধান করেছি: 011 — Linked List Cycle II</span></label>
<div class="practice-problem" markdown="1">

**[011 — Linked List Cycle II](03-linked-list/problems/011-cycle-start.md)**

<p class="practice-pattern">Floyd&#x27;s phase 2 (slow/fast meet, তারপর head থেকে আবার) · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M1</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](03-linked-list/problems/011-cycle-start.md#problem) → [২. ভিত্তি](03-linked-list/problems/011-cycle-start.md#idea) → [৩. ধাপ ও ছবি](03-linked-list/problems/011-cycle-start.md#walkthrough) → [৪. কোড](03-linked-list/problems/011-cycle-start.md#code) → [৫. খরচ ও ভুল](03-linked-list/problems/011-cycle-start.md#cost) → [৬. নিজে আবার করুন](03-linked-list/problems/011-cycle-start.md#practice)

আটকে গেলে section-এর [ভিত্তি](03-linked-list/concept.md) · [চিত্র ও ব্যবহার](03-linked-list/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M1" data-must="0" data-search="Linked List 012 — Swap Nodes in Pairs pointer rewiring + dummy head Medium" markdown="1">
<label class="practice-check-label" for="check-linked-list-012"><input class="practice-check" type="checkbox" id="check-linked-list-012" data-key="03-linked-list/problems/012-swap-pairs.md" disabled><span class="ds-status">সমাধান করেছি: 012 — Swap Nodes in Pairs</span></label>
<div class="practice-problem" markdown="1">

**[012 — Swap Nodes in Pairs](03-linked-list/problems/012-swap-pairs.md)**

<p class="practice-pattern">pointer rewiring + dummy head · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M1</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](03-linked-list/problems/012-swap-pairs.md#problem) → [২. ভিত্তি](03-linked-list/problems/012-swap-pairs.md#idea) → [৩. ধাপ ও ছবি](03-linked-list/problems/012-swap-pairs.md#walkthrough) → [৪. কোড](03-linked-list/problems/012-swap-pairs.md#code) → [৫. খরচ ও ভুল](03-linked-list/problems/012-swap-pairs.md#cost) → [৬. নিজে আবার করুন](03-linked-list/problems/012-swap-pairs.md#practice)

আটকে গেলে section-এর [ভিত্তি](03-linked-list/concept.md) · [চিত্র ও ব্যবহার](03-linked-list/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M1" data-must="0" data-search="Linked List 013 — Reverse Linked List II segmented reversal (head-insertion) Medium" markdown="1">
<label class="practice-check-label" for="check-linked-list-013"><input class="practice-check" type="checkbox" id="check-linked-list-013" data-key="03-linked-list/problems/013-reverse-sublist.md" disabled><span class="ds-status">সমাধান করেছি: 013 — Reverse Linked List II</span></label>
<div class="practice-problem" markdown="1">

**[013 — Reverse Linked List II](03-linked-list/problems/013-reverse-sublist.md)**

<p class="practice-pattern">segmented reversal (head-insertion) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M1</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](03-linked-list/problems/013-reverse-sublist.md#problem) → [২. ভিত্তি](03-linked-list/problems/013-reverse-sublist.md#idea) → [৩. ধাপ ও ছবি](03-linked-list/problems/013-reverse-sublist.md#walkthrough) → [৪. কোড](03-linked-list/problems/013-reverse-sublist.md#code) → [৫. খরচ ও ভুল](03-linked-list/problems/013-reverse-sublist.md#cost) → [৬. নিজে আবার করুন](03-linked-list/problems/013-reverse-sublist.md#practice)

আটকে গেলে section-এর [ভিত্তি](03-linked-list/concept.md) · [চিত্র ও ব্যবহার](03-linked-list/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M1" data-must="1" data-search="Linked List 014 — Palindrome Linked List middle + reverse-half combo Medium" markdown="1">
<label class="practice-check-label" for="check-linked-list-014"><input class="practice-check" type="checkbox" id="check-linked-list-014" data-key="03-linked-list/problems/014-palindrome-list.md" disabled><span class="ds-status">সমাধান করেছি: 014 — Palindrome Linked List</span></label>
<div class="practice-problem" markdown="1">

**[014 — Palindrome Linked List](03-linked-list/problems/014-palindrome-list.md)**

<p class="practice-pattern">middle + reverse-half combo · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M1</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](03-linked-list/problems/014-palindrome-list.md#problem) → [২. ভিত্তি](03-linked-list/problems/014-palindrome-list.md#idea) → [৩. ধাপ ও ছবি](03-linked-list/problems/014-palindrome-list.md#walkthrough) → [৪. কোড](03-linked-list/problems/014-palindrome-list.md#code) → [৫. খরচ ও ভুল](03-linked-list/problems/014-palindrome-list.md#cost) → [৬. নিজে আবার করুন](03-linked-list/problems/014-palindrome-list.md#practice)

আটকে গেলে section-এর [ভিত্তি](03-linked-list/concept.md) · [চিত্র ও ব্যবহার](03-linked-list/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M1" data-must="0" data-search="Linked List 015 — Reorder List middle + reverse + merge combo Medium" markdown="1">
<label class="practice-check-label" for="check-linked-list-015"><input class="practice-check" type="checkbox" id="check-linked-list-015" data-key="03-linked-list/problems/015-reorder-list.md" disabled><span class="ds-status">সমাধান করেছি: 015 — Reorder List</span></label>
<div class="practice-problem" markdown="1">

**[015 — Reorder List](03-linked-list/problems/015-reorder-list.md)**

<p class="practice-pattern">middle + reverse + merge combo · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M1</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](03-linked-list/problems/015-reorder-list.md#problem) → [২. ভিত্তি](03-linked-list/problems/015-reorder-list.md#idea) → [৩. ধাপ ও ছবি](03-linked-list/problems/015-reorder-list.md#walkthrough) → [৪. কোড](03-linked-list/problems/015-reorder-list.md#code) → [৫. খরচ ও ভুল](03-linked-list/problems/015-reorder-list.md#cost) → [৬. নিজে আবার করুন](03-linked-list/problems/015-reorder-list.md#practice)

আটকে গেলে section-এর [ভিত্তি](03-linked-list/concept.md) · [চিত্র ও ব্যবহার](03-linked-list/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M1" data-must="0" data-search="Linked List 016 — Rotate List runner / close-the-ring Medium" markdown="1">
<label class="practice-check-label" for="check-linked-list-016"><input class="practice-check" type="checkbox" id="check-linked-list-016" data-key="03-linked-list/problems/016-rotate-list.md" disabled><span class="ds-status">সমাধান করেছি: 016 — Rotate List</span></label>
<div class="practice-problem" markdown="1">

**[016 — Rotate List](03-linked-list/problems/016-rotate-list.md)**

<p class="practice-pattern">runner / close-the-ring · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M1</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](03-linked-list/problems/016-rotate-list.md#problem) → [২. ভিত্তি](03-linked-list/problems/016-rotate-list.md#idea) → [৩. ধাপ ও ছবি](03-linked-list/problems/016-rotate-list.md#walkthrough) → [৪. কোড](03-linked-list/problems/016-rotate-list.md#code) → [৫. খরচ ও ভুল](03-linked-list/problems/016-rotate-list.md#cost) → [৬. নিজে আবার করুন](03-linked-list/problems/016-rotate-list.md#practice)

আটকে গেলে section-এর [ভিত্তি](03-linked-list/concept.md) · [চিত্র ও ব্যবহার](03-linked-list/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M1 M2" data-must="1" data-search="Linked List 017 — Sort List merge sort on chains Medium" markdown="1">
<label class="practice-check-label" for="check-linked-list-017"><input class="practice-check" type="checkbox" id="check-linked-list-017" data-key="03-linked-list/problems/017-sort-list.md" disabled><span class="ds-status">সমাধান করেছি: 017 — Sort List</span></label>
<div class="practice-problem" markdown="1">

**[017 — Sort List](03-linked-list/problems/017-sort-list.md)**

<p class="practice-pattern">merge sort on chains · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M1</a>
<a class="practice-badge is-course" href="#course-map">Microsoft · M2</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](03-linked-list/problems/017-sort-list.md#problem) → [২. ভিত্তি](03-linked-list/problems/017-sort-list.md#idea) → [৩. ধাপ ও ছবি](03-linked-list/problems/017-sort-list.md#walkthrough) → [৪. কোড](03-linked-list/problems/017-sort-list.md#code) → [৫. খরচ ও ভুল](03-linked-list/problems/017-sort-list.md#cost) → [৬. নিজে আবার করুন](03-linked-list/problems/017-sort-list.md#practice)

আটকে গেলে section-এর [ভিত্তি](03-linked-list/concept.md) · [চিত্র ও ব্যবহার](03-linked-list/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M1" data-must="0" data-search="Linked List 018 — Copy List with Random Pointer hash map (old → new) / interleaving Medium" markdown="1">
<label class="practice-check-label" for="check-linked-list-018"><input class="practice-check" type="checkbox" id="check-linked-list-018" data-key="03-linked-list/problems/018-copy-random-list.md" disabled><span class="ds-status">সমাধান করেছি: 018 — Copy List with Random Pointer</span></label>
<div class="practice-problem" markdown="1">

**[018 — Copy List with Random Pointer](03-linked-list/problems/018-copy-random-list.md)**

<p class="practice-pattern">hash map (old → new) / interleaving · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M1</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](03-linked-list/problems/018-copy-random-list.md#problem) → [২. ভিত্তি](03-linked-list/problems/018-copy-random-list.md#idea) → [৩. ধাপ ও ছবি](03-linked-list/problems/018-copy-random-list.md#walkthrough) → [৪. কোড](03-linked-list/problems/018-copy-random-list.md#code) → [৫. খরচ ও ভুল](03-linked-list/problems/018-copy-random-list.md#cost) → [৬. নিজে আবার করুন](03-linked-list/problems/018-copy-random-list.md#practice)

আটকে গেলে section-এর [ভিত্তি](03-linked-list/concept.md) · [চিত্র ও ব্যবহার](03-linked-list/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M1 M5" data-must="0" data-search="Linked List 019 — Merge k Sorted Lists merge + min-heap (priority queue) Hard" markdown="1">
<label class="practice-check-label" for="check-linked-list-019"><input class="practice-check" type="checkbox" id="check-linked-list-019" data-key="03-linked-list/problems/019-merge-k-lists.md" disabled><span class="ds-status">সমাধান করেছি: 019 — Merge k Sorted Lists</span></label>
<div class="practice-problem" markdown="1">

**[019 — Merge k Sorted Lists](03-linked-list/problems/019-merge-k-lists.md)**

<p class="practice-pattern">merge + min-heap (priority queue) · Hard</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M1</a>
<a class="practice-badge is-course" href="#course-map">Microsoft · M5</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](03-linked-list/problems/019-merge-k-lists.md#problem) → [২. ভিত্তি](03-linked-list/problems/019-merge-k-lists.md#idea) → [৩. ধাপ ও ছবি](03-linked-list/problems/019-merge-k-lists.md#walkthrough) → [৪. কোড](03-linked-list/problems/019-merge-k-lists.md#code) → [৫. খরচ ও ভুল](03-linked-list/problems/019-merge-k-lists.md#cost) → [৬. নিজে আবার করুন](03-linked-list/problems/019-merge-k-lists.md#practice)

আটকে গেলে section-এর [ভিত্তি](03-linked-list/concept.md) · [চিত্র ও ব্যবহার](03-linked-list/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M1" data-must="1" data-search="Linked List 020 — Reverse Nodes in k-Group segmented reversal + group counting Hard" markdown="1">
<label class="practice-check-label" for="check-linked-list-020"><input class="practice-check" type="checkbox" id="check-linked-list-020" data-key="03-linked-list/problems/020-reverse-k-group.md" disabled><span class="ds-status">সমাধান করেছি: 020 — Reverse Nodes in k-Group</span></label>
<div class="practice-problem" markdown="1">

**[020 — Reverse Nodes in k-Group](03-linked-list/problems/020-reverse-k-group.md)**

<p class="practice-pattern">segmented reversal + group counting · Hard</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M1</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](03-linked-list/problems/020-reverse-k-group.md#problem) → [২. ভিত্তি](03-linked-list/problems/020-reverse-k-group.md#idea) → [৩. ধাপ ও ছবি](03-linked-list/problems/020-reverse-k-group.md#walkthrough) → [৪. কোড](03-linked-list/problems/020-reverse-k-group.md#code) → [৫. খরচ ও ভুল](03-linked-list/problems/020-reverse-k-group.md#cost) → [৬. নিজে আবার করুন](03-linked-list/problems/020-reverse-k-group.md#practice)

আটকে গেলে section-এর [ভিত্তি](03-linked-list/concept.md) · [চিত্র ও ব্যবহার](03-linked-list/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M1 M4" data-must="1" data-search="Linked List 021 — LRU Cache doubly linked list + hash map Hard" markdown="1">
<label class="practice-check-label" for="check-linked-list-021"><input class="practice-check" type="checkbox" id="check-linked-list-021" data-key="03-linked-list/problems/021-lru-cache.md" disabled><span class="ds-status">সমাধান করেছি: 021 — LRU Cache</span></label>
<div class="practice-problem" markdown="1">

**[021 — LRU Cache](03-linked-list/problems/021-lru-cache.md)**

<p class="practice-pattern">doubly linked list + hash map · Hard</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M1</a>
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](03-linked-list/problems/021-lru-cache.md#problem) → [২. ভিত্তি](03-linked-list/problems/021-lru-cache.md#idea) → [৩. ধাপ ও ছবি](03-linked-list/problems/021-lru-cache.md#walkthrough) → [৪. কোড](03-linked-list/problems/021-lru-cache.md#code) → [৫. খরচ ও ভুল](03-linked-list/problems/021-lru-cache.md#cost) → [৬. নিজে আবার করুন](03-linked-list/problems/021-lru-cache.md#practice)

আটকে গেলে section-এর [ভিত্তি](03-linked-list/concept.md) · [চিত্র ও ব্যবহার](03-linked-list/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

</ol>
</details>

</div>

<div class="practice-chapter" data-family="stack-queue" markdown="1">

## Stack ও Queue {#section-stack-queue}

<details class="practice-section" data-section="stack-queue" markdown="1">
<summary>Stack ও Queue <span class="section-count">23টি</span></summary>

**আগে বুঝে নিন:** LIFO, FIFO, push/pop, front/back।

**আগে পড়ুন:** [ভিত্তি](04-stack-and-queue/concept.md) · [চিত্র ও ব্যবহার](04-stack-and-queue/visual-explanation.md)।

**Section-এর বড় challenge:** [ধাপে ধাপে প্রয়োগ করুন](guided-practice/stack-queue.md)। সব individual problem-এর বিকল্প নয়; প্রধান কৌশল একসঙ্গে ব্যবহার করার পরীক্ষা।

<ol class="practice-list" markdown="1">

<li class="practice-item" data-course="M1" data-must="1" data-search="Stack ও Queue 001 — Valid Parentheses matching / nesting (stack) Easy" markdown="1">
<label class="practice-check-label" for="check-stack-queue-001"><input class="practice-check" type="checkbox" id="check-stack-queue-001" data-key="04-stack-and-queue/problems/001-valid-parentheses.md" disabled><span class="ds-status">সমাধান করেছি: 001 — Valid Parentheses</span></label>
<div class="practice-problem" markdown="1">

**[001 — Valid Parentheses](04-stack-and-queue/problems/001-valid-parentheses.md)**

<p class="practice-pattern">matching / nesting (stack) · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M1</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](04-stack-and-queue/problems/001-valid-parentheses.md#problem) → [২. ভিত্তি](04-stack-and-queue/problems/001-valid-parentheses.md#idea) → [৩. ধাপ ও ছবি](04-stack-and-queue/problems/001-valid-parentheses.md#walkthrough) → [৪. কোড](04-stack-and-queue/problems/001-valid-parentheses.md#code) → [৫. খরচ ও ভুল](04-stack-and-queue/problems/001-valid-parentheses.md#cost) → [৬. নিজে আবার করুন](04-stack-and-queue/problems/001-valid-parentheses.md#practice)

আটকে গেলে section-এর [ভিত্তি](04-stack-and-queue/concept.md) · [চিত্র ও ব্যবহার](04-stack-and-queue/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M1" data-must="0" data-search="Stack ও Queue 002 — Baseball Game stack simulation Easy" markdown="1">
<label class="practice-check-label" for="check-stack-queue-002"><input class="practice-check" type="checkbox" id="check-stack-queue-002" data-key="04-stack-and-queue/problems/002-baseball-game.md" disabled><span class="ds-status">সমাধান করেছি: 002 — Baseball Game</span></label>
<div class="practice-problem" markdown="1">

**[002 — Baseball Game](04-stack-and-queue/problems/002-baseball-game.md)**

<p class="practice-pattern">stack simulation · Easy</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M1</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](04-stack-and-queue/problems/002-baseball-game.md#problem) → [২. ভিত্তি](04-stack-and-queue/problems/002-baseball-game.md#idea) → [৩. ধাপ ও ছবি](04-stack-and-queue/problems/002-baseball-game.md#walkthrough) → [৪. কোড](04-stack-and-queue/problems/002-baseball-game.md#code) → [৫. খরচ ও ভুল](04-stack-and-queue/problems/002-baseball-game.md#cost) → [৬. নিজে আবার করুন](04-stack-and-queue/problems/002-baseball-game.md#practice)

আটকে গেলে section-এর [ভিত্তি](04-stack-and-queue/concept.md) · [চিত্র ও ব্যবহার](04-stack-and-queue/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M1" data-must="0" data-search="Stack ও Queue 003 — Backspace String Compare stack simulation Easy" markdown="1">
<label class="practice-check-label" for="check-stack-queue-003"><input class="practice-check" type="checkbox" id="check-stack-queue-003" data-key="04-stack-and-queue/problems/003-backspace-compare.md" disabled><span class="ds-status">সমাধান করেছি: 003 — Backspace String Compare</span></label>
<div class="practice-problem" markdown="1">

**[003 — Backspace String Compare](04-stack-and-queue/problems/003-backspace-compare.md)**

<p class="practice-pattern">stack simulation · Easy</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M1</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](04-stack-and-queue/problems/003-backspace-compare.md#problem) → [২. ভিত্তি](04-stack-and-queue/problems/003-backspace-compare.md#idea) → [৩. ধাপ ও ছবি](04-stack-and-queue/problems/003-backspace-compare.md#walkthrough) → [৪. কোড](04-stack-and-queue/problems/003-backspace-compare.md#code) → [৫. খরচ ও ভুল](04-stack-and-queue/problems/003-backspace-compare.md#cost) → [৬. নিজে আবার করুন](04-stack-and-queue/problems/003-backspace-compare.md#practice)

আটকে গেলে section-এর [ভিত্তি](04-stack-and-queue/concept.md) · [চিত্র ও ব্যবহার](04-stack-and-queue/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M1" data-must="1" data-search="Stack ও Queue 004 — Implement Queue using Stacks design composition (two stacks) Easy" markdown="1">
<label class="practice-check-label" for="check-stack-queue-004"><input class="practice-check" type="checkbox" id="check-stack-queue-004" data-key="04-stack-and-queue/problems/004-queue-via-stacks.md" disabled><span class="ds-status">সমাধান করেছি: 004 — Implement Queue using Stacks</span></label>
<div class="practice-problem" markdown="1">

**[004 — Implement Queue using Stacks](04-stack-and-queue/problems/004-queue-via-stacks.md)**

<p class="practice-pattern">design composition (two stacks) · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M1</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](04-stack-and-queue/problems/004-queue-via-stacks.md#problem) → [২. ভিত্তি](04-stack-and-queue/problems/004-queue-via-stacks.md#idea) → [৩. ধাপ ও ছবি](04-stack-and-queue/problems/004-queue-via-stacks.md#walkthrough) → [৪. কোড](04-stack-and-queue/problems/004-queue-via-stacks.md#code) → [৫. খরচ ও ভুল](04-stack-and-queue/problems/004-queue-via-stacks.md#cost) → [৬. নিজে আবার করুন](04-stack-and-queue/problems/004-queue-via-stacks.md#practice)

আটকে গেলে section-এর [ভিত্তি](04-stack-and-queue/concept.md) · [চিত্র ও ব্যবহার](04-stack-and-queue/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M1" data-must="0" data-search="Stack ও Queue 005 — Implement Stack using Queues design composition (queue-based) Easy" markdown="1">
<label class="practice-check-label" for="check-stack-queue-005"><input class="practice-check" type="checkbox" id="check-stack-queue-005" data-key="04-stack-and-queue/problems/005-stack-via-queues.md" disabled><span class="ds-status">সমাধান করেছি: 005 — Implement Stack using Queues</span></label>
<div class="practice-problem" markdown="1">

**[005 — Implement Stack using Queues](04-stack-and-queue/problems/005-stack-via-queues.md)**

<p class="practice-pattern">design composition (queue-based) · Easy</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M1</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](04-stack-and-queue/problems/005-stack-via-queues.md#problem) → [২. ভিত্তি](04-stack-and-queue/problems/005-stack-via-queues.md#idea) → [৩. ধাপ ও ছবি](04-stack-and-queue/problems/005-stack-via-queues.md#walkthrough) → [৪. কোড](04-stack-and-queue/problems/005-stack-via-queues.md#code) → [৫. খরচ ও ভুল](04-stack-and-queue/problems/005-stack-via-queues.md#cost) → [৬. নিজে আবার করুন](04-stack-and-queue/problems/005-stack-via-queues.md#practice)

আটকে গেলে section-এর [ভিত্তি](04-stack-and-queue/concept.md) · [চিত্র ও ব্যবহার](04-stack-and-queue/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M1" data-must="1" data-search="Stack ও Queue 006 — Min Stack design composition (twin stack) Easy" markdown="1">
<label class="practice-check-label" for="check-stack-queue-006"><input class="practice-check" type="checkbox" id="check-stack-queue-006" data-key="04-stack-and-queue/problems/006-min-stack.md" disabled><span class="ds-status">সমাধান করেছি: 006 — Min Stack</span></label>
<div class="practice-problem" markdown="1">

**[006 — Min Stack](04-stack-and-queue/problems/006-min-stack.md)**

<p class="practice-pattern">design composition (twin stack) · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M1</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](04-stack-and-queue/problems/006-min-stack.md#problem) → [২. ভিত্তি](04-stack-and-queue/problems/006-min-stack.md#idea) → [৩. ধাপ ও ছবি](04-stack-and-queue/problems/006-min-stack.md#walkthrough) → [৪. কোড](04-stack-and-queue/problems/006-min-stack.md#code) → [৫. খরচ ও ভুল](04-stack-and-queue/problems/006-min-stack.md#cost) → [৬. নিজে আবার করুন](04-stack-and-queue/problems/006-min-stack.md#practice)

আটকে গেলে section-এর [ভিত্তি](04-stack-and-queue/concept.md) · [চিত্র ও ব্যবহার](04-stack-and-queue/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M1" data-must="1" data-search="Stack ও Queue 007 — Next Greater Element I monotonic stack Easy" markdown="1">
<label class="practice-check-label" for="check-stack-queue-007"><input class="practice-check" type="checkbox" id="check-stack-queue-007" data-key="04-stack-and-queue/problems/007-next-greater-i.md" disabled><span class="ds-status">সমাধান করেছি: 007 — Next Greater Element I</span></label>
<div class="practice-problem" markdown="1">

**[007 — Next Greater Element I](04-stack-and-queue/problems/007-next-greater-i.md)**

<p class="practice-pattern">monotonic stack · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M1</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](04-stack-and-queue/problems/007-next-greater-i.md#problem) → [২. ভিত্তি](04-stack-and-queue/problems/007-next-greater-i.md#idea) → [৩. ধাপ ও ছবি](04-stack-and-queue/problems/007-next-greater-i.md#walkthrough) → [৪. কোড](04-stack-and-queue/problems/007-next-greater-i.md#code) → [৫. খরচ ও ভুল](04-stack-and-queue/problems/007-next-greater-i.md#cost) → [৬. নিজে আবার করুন](04-stack-and-queue/problems/007-next-greater-i.md#practice)

আটকে গেলে section-এর [ভিত্তি](04-stack-and-queue/concept.md) · [চিত্র ও ব্যবহার](04-stack-and-queue/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M1" data-must="1" data-search="Stack ও Queue 008 — Evaluate Reverse Polish Notation stack simulation Medium" markdown="1">
<label class="practice-check-label" for="check-stack-queue-008"><input class="practice-check" type="checkbox" id="check-stack-queue-008" data-key="04-stack-and-queue/problems/008-evaluate-rpn.md" disabled><span class="ds-status">সমাধান করেছি: 008 — Evaluate Reverse Polish Notation</span></label>
<div class="practice-problem" markdown="1">

**[008 — Evaluate Reverse Polish Notation](04-stack-and-queue/problems/008-evaluate-rpn.md)**

<p class="practice-pattern">stack simulation · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M1</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](04-stack-and-queue/problems/008-evaluate-rpn.md#problem) → [২. ভিত্তি](04-stack-and-queue/problems/008-evaluate-rpn.md#idea) → [৩. ধাপ ও ছবি](04-stack-and-queue/problems/008-evaluate-rpn.md#walkthrough) → [৪. কোড](04-stack-and-queue/problems/008-evaluate-rpn.md#code) → [৫. খরচ ও ভুল](04-stack-and-queue/problems/008-evaluate-rpn.md#cost) → [৬. নিজে আবার করুন](04-stack-and-queue/problems/008-evaluate-rpn.md#practice)

আটকে গেলে section-এর [ভিত্তি](04-stack-and-queue/concept.md) · [চিত্র ও ব্যবহার](04-stack-and-queue/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M1" data-must="1" data-search="Stack ও Queue 009 — Daily Temperatures monotonic stack — next greater, distance flavor Medium" markdown="1">
<label class="practice-check-label" for="check-stack-queue-009"><input class="practice-check" type="checkbox" id="check-stack-queue-009" data-key="04-stack-and-queue/problems/009-daily-temperatures.md" disabled><span class="ds-status">সমাধান করেছি: 009 — Daily Temperatures</span></label>
<div class="practice-problem" markdown="1">

**[009 — Daily Temperatures](04-stack-and-queue/problems/009-daily-temperatures.md)**

<p class="practice-pattern">monotonic stack — next greater, distance flavor · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M1</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](04-stack-and-queue/problems/009-daily-temperatures.md#problem) → [২. ভিত্তি](04-stack-and-queue/problems/009-daily-temperatures.md#idea) → [৩. ধাপ ও ছবি](04-stack-and-queue/problems/009-daily-temperatures.md#walkthrough) → [৪. কোড](04-stack-and-queue/problems/009-daily-temperatures.md#code) → [৫. খরচ ও ভুল](04-stack-and-queue/problems/009-daily-temperatures.md#cost) → [৬. নিজে আবার করুন](04-stack-and-queue/problems/009-daily-temperatures.md#practice)

আটকে গেলে section-এর [ভিত্তি](04-stack-and-queue/concept.md) · [চিত্র ও ব্যবহার](04-stack-and-queue/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M1" data-must="1" data-search="Stack ও Queue 010 — Decode String nesting — stack of contexts Medium" markdown="1">
<label class="practice-check-label" for="check-stack-queue-010"><input class="practice-check" type="checkbox" id="check-stack-queue-010" data-key="04-stack-and-queue/problems/010-decode-string.md" disabled><span class="ds-status">সমাধান করেছি: 010 — Decode String</span></label>
<div class="practice-problem" markdown="1">

**[010 — Decode String](04-stack-and-queue/problems/010-decode-string.md)**

<p class="practice-pattern">nesting — stack of contexts · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M1</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](04-stack-and-queue/problems/010-decode-string.md#problem) → [২. ভিত্তি](04-stack-and-queue/problems/010-decode-string.md#idea) → [৩. ধাপ ও ছবি](04-stack-and-queue/problems/010-decode-string.md#walkthrough) → [৪. কোড](04-stack-and-queue/problems/010-decode-string.md#code) → [৫. খরচ ও ভুল](04-stack-and-queue/problems/010-decode-string.md#cost) → [৬. নিজে আবার করুন](04-stack-and-queue/problems/010-decode-string.md#practice)

আটকে গেলে section-এর [ভিত্তি](04-stack-and-queue/concept.md) · [চিত্র ও ব্যবহার](04-stack-and-queue/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M1" data-must="0" data-search="Stack ও Queue 011 — Asteroid Collision stack simulation — monotonic flavor Medium" markdown="1">
<label class="practice-check-label" for="check-stack-queue-011"><input class="practice-check" type="checkbox" id="check-stack-queue-011" data-key="04-stack-and-queue/problems/011-asteroid-collision.md" disabled><span class="ds-status">সমাধান করেছি: 011 — Asteroid Collision</span></label>
<div class="practice-problem" markdown="1">

**[011 — Asteroid Collision](04-stack-and-queue/problems/011-asteroid-collision.md)**

<p class="practice-pattern">stack simulation — monotonic flavor · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M1</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](04-stack-and-queue/problems/011-asteroid-collision.md#problem) → [২. ভিত্তি](04-stack-and-queue/problems/011-asteroid-collision.md#idea) → [৩. ধাপ ও ছবি](04-stack-and-queue/problems/011-asteroid-collision.md#walkthrough) → [৪. কোড](04-stack-and-queue/problems/011-asteroid-collision.md#code) → [৫. খরচ ও ভুল](04-stack-and-queue/problems/011-asteroid-collision.md#cost) → [৬. নিজে আবার করুন](04-stack-and-queue/problems/011-asteroid-collision.md#practice)

আটকে গেলে section-এর [ভিত্তি](04-stack-and-queue/concept.md) · [চিত্র ও ব্যবহার](04-stack-and-queue/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M3" data-must="1" data-search="Stack ও Queue 012 — Number of Islands BFS frontier — queue Medium" markdown="1">
<label class="practice-check-label" for="check-stack-queue-012"><input class="practice-check" type="checkbox" id="check-stack-queue-012" data-key="04-stack-and-queue/problems/012-number-of-islands.md" disabled><span class="ds-status">সমাধান করেছি: 012 — Number of Islands</span></label>
<div class="practice-problem" markdown="1">

**[012 — Number of Islands](04-stack-and-queue/problems/012-number-of-islands.md)**

<p class="practice-pattern">BFS frontier — queue · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M3</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](04-stack-and-queue/problems/012-number-of-islands.md#problem) → [২. ভিত্তি](04-stack-and-queue/problems/012-number-of-islands.md#idea) → [৩. ধাপ ও ছবি](04-stack-and-queue/problems/012-number-of-islands.md#walkthrough) → [৪. কোড](04-stack-and-queue/problems/012-number-of-islands.md#code) → [৫. খরচ ও ভুল](04-stack-and-queue/problems/012-number-of-islands.md#cost) → [৬. নিজে আবার করুন](04-stack-and-queue/problems/012-number-of-islands.md#practice)

আটকে গেলে section-এর [ভিত্তি](04-stack-and-queue/concept.md) · [চিত্র ও ব্যবহার](04-stack-and-queue/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M3" data-must="1" data-search="Stack ও Queue 013 — Rotting Oranges multi-source BFS — queue Medium" markdown="1">
<label class="practice-check-label" for="check-stack-queue-013"><input class="practice-check" type="checkbox" id="check-stack-queue-013" data-key="04-stack-and-queue/problems/013-rotting-oranges.md" disabled><span class="ds-status">সমাধান করেছি: 013 — Rotting Oranges</span></label>
<div class="practice-problem" markdown="1">

**[013 — Rotting Oranges](04-stack-and-queue/problems/013-rotting-oranges.md)**

<p class="practice-pattern">multi-source BFS — queue · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M3</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](04-stack-and-queue/problems/013-rotting-oranges.md#problem) → [২. ভিত্তি](04-stack-and-queue/problems/013-rotting-oranges.md#idea) → [৩. ধাপ ও ছবি](04-stack-and-queue/problems/013-rotting-oranges.md#walkthrough) → [৪. কোড](04-stack-and-queue/problems/013-rotting-oranges.md#code) → [৫. খরচ ও ভুল](04-stack-and-queue/problems/013-rotting-oranges.md#cost) → [৬. নিজে আবার করুন](04-stack-and-queue/problems/013-rotting-oranges.md#practice)

আটকে গেলে section-এর [ভিত্তি](04-stack-and-queue/concept.md) · [চিত্র ও ব্যবহার](04-stack-and-queue/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M3" data-must="1" data-search="Stack ও Queue 014 — Binary Tree Level Order Traversal BFS (queue), layered Medium" markdown="1">
<label class="practice-check-label" for="check-stack-queue-014"><input class="practice-check" type="checkbox" id="check-stack-queue-014" data-key="04-stack-and-queue/problems/014-level-order-traversal.md" disabled><span class="ds-status">সমাধান করেছি: 014 — Binary Tree Level Order Traversal</span></label>
<div class="practice-problem" markdown="1">

**[014 — Binary Tree Level Order Traversal](04-stack-and-queue/problems/014-level-order-traversal.md)**

<p class="practice-pattern">BFS (queue), layered · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M3</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](04-stack-and-queue/problems/014-level-order-traversal.md#problem) → [২. ভিত্তি](04-stack-and-queue/problems/014-level-order-traversal.md#idea) → [৩. ধাপ ও ছবি](04-stack-and-queue/problems/014-level-order-traversal.md#walkthrough) → [৪. কোড](04-stack-and-queue/problems/014-level-order-traversal.md#code) → [৫. খরচ ও ভুল](04-stack-and-queue/problems/014-level-order-traversal.md#cost) → [৬. নিজে আবার করুন](04-stack-and-queue/problems/014-level-order-traversal.md#practice)

আটকে গেলে section-এর [ভিত্তি](04-stack-and-queue/concept.md) · [চিত্র ও ব্যবহার](04-stack-and-queue/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M1" data-must="0" data-search="Stack ও Queue 015 — Next Greater Element II monotonic stack — circular Medium" markdown="1">
<label class="practice-check-label" for="check-stack-queue-015"><input class="practice-check" type="checkbox" id="check-stack-queue-015" data-key="04-stack-and-queue/problems/015-next-greater-ii.md" disabled><span class="ds-status">সমাধান করেছি: 015 — Next Greater Element II</span></label>
<div class="practice-problem" markdown="1">

**[015 — Next Greater Element II](04-stack-and-queue/problems/015-next-greater-ii.md)**

<p class="practice-pattern">monotonic stack — circular · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M1</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](04-stack-and-queue/problems/015-next-greater-ii.md#problem) → [২. ভিত্তি](04-stack-and-queue/problems/015-next-greater-ii.md#idea) → [৩. ধাপ ও ছবি](04-stack-and-queue/problems/015-next-greater-ii.md#walkthrough) → [৪. কোড](04-stack-and-queue/problems/015-next-greater-ii.md#code) → [৫. খরচ ও ভুল](04-stack-and-queue/problems/015-next-greater-ii.md#cost) → [৬. নিজে আবার করুন](04-stack-and-queue/problems/015-next-greater-ii.md#practice)

আটকে গেলে section-এর [ভিত্তি](04-stack-and-queue/concept.md) · [চিত্র ও ব্যবহার](04-stack-and-queue/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M1" data-must="0" data-search="Stack ও Queue 016 — Online Stock Span monotonic stack — online Medium" markdown="1">
<label class="practice-check-label" for="check-stack-queue-016"><input class="practice-check" type="checkbox" id="check-stack-queue-016" data-key="04-stack-and-queue/problems/016-stock-span.md" disabled><span class="ds-status">সমাধান করেছি: 016 — Online Stock Span</span></label>
<div class="practice-problem" markdown="1">

**[016 — Online Stock Span](04-stack-and-queue/problems/016-stock-span.md)**

<p class="practice-pattern">monotonic stack — online · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M1</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](04-stack-and-queue/problems/016-stock-span.md#problem) → [২. ভিত্তি](04-stack-and-queue/problems/016-stock-span.md#idea) → [৩. ধাপ ও ছবি](04-stack-and-queue/problems/016-stock-span.md#walkthrough) → [৪. কোড](04-stack-and-queue/problems/016-stock-span.md#code) → [৫. খরচ ও ভুল](04-stack-and-queue/problems/016-stock-span.md#cost) → [৬. নিজে আবার করুন](04-stack-and-queue/problems/016-stock-span.md#practice)

আটকে গেলে section-এর [ভিত্তি](04-stack-and-queue/concept.md) · [চিত্র ও ব্যবহার](04-stack-and-queue/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="extension" data-must="0" data-search="Stack ও Queue 017 — Sum of Subarray Minimums monotonic stack + contribution technique Medium" markdown="1">
<label class="practice-check-label" for="check-stack-queue-017"><input class="practice-check" type="checkbox" id="check-stack-queue-017" data-key="04-stack-and-queue/problems/017-sum-subarray-minimums.md" disabled><span class="ds-status">সমাধান করেছি: 017 — Sum of Subarray Minimums</span></label>
<div class="practice-problem" markdown="1">

**[017 — Sum of Subarray Minimums](04-stack-and-queue/problems/017-sum-subarray-minimums.md)**

<p class="practice-pattern">monotonic stack + contribution technique · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">বাড়তি অনুশীলন</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](04-stack-and-queue/problems/017-sum-subarray-minimums.md#problem) → [২. ভিত্তি](04-stack-and-queue/problems/017-sum-subarray-minimums.md#idea) → [৩. ধাপ ও ছবি](04-stack-and-queue/problems/017-sum-subarray-minimums.md#walkthrough) → [৪. কোড](04-stack-and-queue/problems/017-sum-subarray-minimums.md#code) → [৫. খরচ ও ভুল](04-stack-and-queue/problems/017-sum-subarray-minimums.md#cost) → [৬. নিজে আবার করুন](04-stack-and-queue/problems/017-sum-subarray-minimums.md#practice)

আটকে গেলে section-এর [ভিত্তি](04-stack-and-queue/concept.md) · [চিত্র ও ব্যবহার](04-stack-and-queue/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M1" data-must="0" data-search="Stack ও Queue 018 — Simplify Path stack simulation Medium" markdown="1">
<label class="practice-check-label" for="check-stack-queue-018"><input class="practice-check" type="checkbox" id="check-stack-queue-018" data-key="04-stack-and-queue/problems/018-simplify-path.md" disabled><span class="ds-status">সমাধান করেছি: 018 — Simplify Path</span></label>
<div class="practice-problem" markdown="1">

**[018 — Simplify Path](04-stack-and-queue/problems/018-simplify-path.md)**

<p class="practice-pattern">stack simulation · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M1</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](04-stack-and-queue/problems/018-simplify-path.md#problem) → [২. ভিত্তি](04-stack-and-queue/problems/018-simplify-path.md#idea) → [৩. ধাপ ও ছবি](04-stack-and-queue/problems/018-simplify-path.md#walkthrough) → [৪. কোড](04-stack-and-queue/problems/018-simplify-path.md#code) → [৫. খরচ ও ভুল](04-stack-and-queue/problems/018-simplify-path.md#cost) → [৬. নিজে আবার করুন](04-stack-and-queue/problems/018-simplify-path.md#practice)

আটকে গেলে section-এর [ভিত্তি](04-stack-and-queue/concept.md) · [চিত্র ও ব্যবহার](04-stack-and-queue/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M1" data-must="1" data-search="Stack ও Queue 019 — Sliding Window Maximum monotonic deque Hard" markdown="1">
<label class="practice-check-label" for="check-stack-queue-019"><input class="practice-check" type="checkbox" id="check-stack-queue-019" data-key="04-stack-and-queue/problems/019-sliding-window-maximum.md" disabled><span class="ds-status">সমাধান করেছি: 019 — Sliding Window Maximum</span></label>
<div class="practice-problem" markdown="1">

**[019 — Sliding Window Maximum](04-stack-and-queue/problems/019-sliding-window-maximum.md)**

<p class="practice-pattern">monotonic deque · Hard</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M1</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](04-stack-and-queue/problems/019-sliding-window-maximum.md#problem) → [২. ভিত্তি](04-stack-and-queue/problems/019-sliding-window-maximum.md#idea) → [৩. ধাপ ও ছবি](04-stack-and-queue/problems/019-sliding-window-maximum.md#walkthrough) → [৪. কোড](04-stack-and-queue/problems/019-sliding-window-maximum.md#code) → [৫. খরচ ও ভুল](04-stack-and-queue/problems/019-sliding-window-maximum.md#cost) → [৬. নিজে আবার করুন](04-stack-and-queue/problems/019-sliding-window-maximum.md#practice)

আটকে গেলে section-এর [ভিত্তি](04-stack-and-queue/concept.md) · [চিত্র ও ব্যবহার](04-stack-and-queue/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="extension" data-must="1" data-search="Stack ও Queue 020 — Largest Rectangle in Histogram monotonic stack Hard" markdown="1">
<label class="practice-check-label" for="check-stack-queue-020"><input class="practice-check" type="checkbox" id="check-stack-queue-020" data-key="04-stack-and-queue/problems/020-largest-rectangle.md" disabled><span class="ds-status">সমাধান করেছি: 020 — Largest Rectangle in Histogram</span></label>
<div class="practice-problem" markdown="1">

**[020 — Largest Rectangle in Histogram](04-stack-and-queue/problems/020-largest-rectangle.md)**

<p class="practice-pattern">monotonic stack · Hard</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-support" href="#course-map">বাড়তি অনুশীলন</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](04-stack-and-queue/problems/020-largest-rectangle.md#problem) → [২. ভিত্তি](04-stack-and-queue/problems/020-largest-rectangle.md#idea) → [৩. ধাপ ও ছবি](04-stack-and-queue/problems/020-largest-rectangle.md#walkthrough) → [৪. কোড](04-stack-and-queue/problems/020-largest-rectangle.md#code) → [৫. খরচ ও ভুল](04-stack-and-queue/problems/020-largest-rectangle.md#cost) → [৬. নিজে আবার করুন](04-stack-and-queue/problems/020-largest-rectangle.md#practice)

আটকে গেলে section-এর [ভিত্তি](04-stack-and-queue/concept.md) · [চিত্র ও ব্যবহার](04-stack-and-queue/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="extension" data-must="0" data-search="Stack ও Queue 021 — Trapping Rain Water monotonic stack variant (bounded by neighbors) Hard" markdown="1">
<label class="practice-check-label" for="check-stack-queue-021"><input class="practice-check" type="checkbox" id="check-stack-queue-021" data-key="04-stack-and-queue/problems/021-trapping-rain-water-stack.md" disabled><span class="ds-status">সমাধান করেছি: 021 — Trapping Rain Water</span></label>
<div class="practice-problem" markdown="1">

**[021 — Trapping Rain Water](04-stack-and-queue/problems/021-trapping-rain-water-stack.md)**

<p class="practice-pattern">monotonic stack variant (bounded by neighbors) · Hard</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">বাড়তি অনুশীলন</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](04-stack-and-queue/problems/021-trapping-rain-water-stack.md#problem) → [২. ভিত্তি](04-stack-and-queue/problems/021-trapping-rain-water-stack.md#idea) → [৩. ধাপ ও ছবি](04-stack-and-queue/problems/021-trapping-rain-water-stack.md#walkthrough) → [৪. কোড](04-stack-and-queue/problems/021-trapping-rain-water-stack.md#code) → [৫. খরচ ও ভুল](04-stack-and-queue/problems/021-trapping-rain-water-stack.md#cost) → [৬. নিজে আবার করুন](04-stack-and-queue/problems/021-trapping-rain-water-stack.md#practice)

আটকে গেলে section-এর [ভিত্তি](04-stack-and-queue/concept.md) · [চিত্র ও ব্যবহার](04-stack-and-queue/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="extension" data-must="0" data-search="Stack ও Queue 022 — Basic Calculator nesting (stack of contexts) Hard" markdown="1">
<label class="practice-check-label" for="check-stack-queue-022"><input class="practice-check" type="checkbox" id="check-stack-queue-022" data-key="04-stack-and-queue/problems/022-basic-calculator.md" disabled><span class="ds-status">সমাধান করেছি: 022 — Basic Calculator</span></label>
<div class="practice-problem" markdown="1">

**[022 — Basic Calculator](04-stack-and-queue/problems/022-basic-calculator.md)**

<p class="practice-pattern">nesting (stack of contexts) · Hard</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">বাড়তি অনুশীলন</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](04-stack-and-queue/problems/022-basic-calculator.md#problem) → [২. ভিত্তি](04-stack-and-queue/problems/022-basic-calculator.md#idea) → [৩. ধাপ ও ছবি](04-stack-and-queue/problems/022-basic-calculator.md#walkthrough) → [৪. কোড](04-stack-and-queue/problems/022-basic-calculator.md#code) → [৫. খরচ ও ভুল](04-stack-and-queue/problems/022-basic-calculator.md#cost) → [৬. নিজে আবার করুন](04-stack-and-queue/problems/022-basic-calculator.md#practice)

আটকে গেলে section-এর [ভিত্তি](04-stack-and-queue/concept.md) · [চিত্র ও ব্যবহার](04-stack-and-queue/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="extension" data-must="0" data-search="Stack ও Queue 023 — Shortest Subarray with Sum at Least K monotonic deque on prefix sums Hard" markdown="1">
<label class="practice-check-label" for="check-stack-queue-023"><input class="practice-check" type="checkbox" id="check-stack-queue-023" data-key="04-stack-and-queue/problems/023-shortest-subarray-sum-k.md" disabled><span class="ds-status">সমাধান করেছি: 023 — Shortest Subarray with Sum at Least K</span></label>
<div class="practice-problem" markdown="1">

**[023 — Shortest Subarray with Sum at Least K](04-stack-and-queue/problems/023-shortest-subarray-sum-k.md)**

<p class="practice-pattern">monotonic deque on prefix sums · Hard</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">বাড়তি অনুশীলন</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](04-stack-and-queue/problems/023-shortest-subarray-sum-k.md#problem) → [২. ভিত্তি](04-stack-and-queue/problems/023-shortest-subarray-sum-k.md#idea) → [৩. ধাপ ও ছবি](04-stack-and-queue/problems/023-shortest-subarray-sum-k.md#walkthrough) → [৪. কোড](04-stack-and-queue/problems/023-shortest-subarray-sum-k.md#code) → [৫. খরচ ও ভুল](04-stack-and-queue/problems/023-shortest-subarray-sum-k.md#cost) → [৬. নিজে আবার করুন](04-stack-and-queue/problems/023-shortest-subarray-sum-k.md#practice)

আটকে গেলে section-এর [ভিত্তি](04-stack-and-queue/concept.md) · [চিত্র ও ব্যবহার](04-stack-and-queue/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

</ol>
</details>

</div>

<div class="practice-chapter" data-family="hashing" markdown="1">

## Hashing {#section-hashing}

<details class="practice-section" data-section="hashing" markdown="1">
<summary>Hashing <span class="section-count">22টি</span></summary>

**আগে বুঝে নিন:** key/value, set, equality, frequency, collision।

**আগে পড়ুন:** [ভিত্তি](05-hashing/concept.md) · [চিত্র ও ব্যবহার](05-hashing/visual-explanation.md)।

**Section-এর বড় challenge:** [ধাপে ধাপে প্রয়োগ করুন](guided-practice/hashing.md)। সব individual problem-এর বিকল্প নয়; প্রধান কৌশল একসঙ্গে ব্যবহার করার পরীক্ষা।

<ol class="practice-list" markdown="1">

<li class="practice-item" data-course="M4" data-must="1" data-search="Hashing 001 — Two Sum complement lookup Easy" markdown="1">
<label class="practice-check-label" for="check-hashing-001"><input class="practice-check" type="checkbox" id="check-hashing-001" data-key="05-hashing/problems/001-two-sum.md" disabled><span class="ds-status">সমাধান করেছি: 001 — Two Sum</span></label>
<div class="practice-problem" markdown="1">

**[001 — Two Sum](05-hashing/problems/001-two-sum.md)**

<p class="practice-pattern">complement lookup · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](05-hashing/problems/001-two-sum.md#problem) → [২. ভিত্তি](05-hashing/problems/001-two-sum.md#idea) → [৩. ধাপ ও ছবি](05-hashing/problems/001-two-sum.md#walkthrough) → [৪. কোড](05-hashing/problems/001-two-sum.md#code) → [৫. খরচ ও ভুল](05-hashing/problems/001-two-sum.md#cost) → [৬. নিজে আবার করুন](05-hashing/problems/001-two-sum.md#practice)

আটকে গেলে section-এর [ভিত্তি](05-hashing/concept.md) · [চিত্র ও ব্যবহার](05-hashing/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M4" data-must="1" data-search="Hashing 002 — Contains Duplicate seen-set Easy" markdown="1">
<label class="practice-check-label" for="check-hashing-002"><input class="practice-check" type="checkbox" id="check-hashing-002" data-key="05-hashing/problems/002-contains-duplicate.md" disabled><span class="ds-status">সমাধান করেছি: 002 — Contains Duplicate</span></label>
<div class="practice-problem" markdown="1">

**[002 — Contains Duplicate](05-hashing/problems/002-contains-duplicate.md)**

<p class="practice-pattern">seen-set · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](05-hashing/problems/002-contains-duplicate.md#problem) → [২. ভিত্তি](05-hashing/problems/002-contains-duplicate.md#idea) → [৩. ধাপ ও ছবি](05-hashing/problems/002-contains-duplicate.md#walkthrough) → [৪. কোড](05-hashing/problems/002-contains-duplicate.md#code) → [৫. খরচ ও ভুল](05-hashing/problems/002-contains-duplicate.md#cost) → [৬. নিজে আবার করুন](05-hashing/problems/002-contains-duplicate.md#practice)

আটকে গেলে section-এর [ভিত্তি](05-hashing/concept.md) · [চিত্র ও ব্যবহার](05-hashing/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M4" data-must="1" data-search="Hashing 003 — Valid Anagram frequency counting Easy" markdown="1">
<label class="practice-check-label" for="check-hashing-003"><input class="practice-check" type="checkbox" id="check-hashing-003" data-key="05-hashing/problems/003-valid-anagram.md" disabled><span class="ds-status">সমাধান করেছি: 003 — Valid Anagram</span></label>
<div class="practice-problem" markdown="1">

**[003 — Valid Anagram](05-hashing/problems/003-valid-anagram.md)**

<p class="practice-pattern">frequency counting · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](05-hashing/problems/003-valid-anagram.md#problem) → [২. ভিত্তি](05-hashing/problems/003-valid-anagram.md#idea) → [৩. ধাপ ও ছবি](05-hashing/problems/003-valid-anagram.md#walkthrough) → [৪. কোড](05-hashing/problems/003-valid-anagram.md#code) → [৫. খরচ ও ভুল](05-hashing/problems/003-valid-anagram.md#cost) → [৬. নিজে আবার করুন](05-hashing/problems/003-valid-anagram.md#practice)

আটকে গেলে section-এর [ভিত্তি](05-hashing/concept.md) · [চিত্র ও ব্যবহার](05-hashing/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M4" data-must="0" data-search="Hashing 004 — Ransom Note frequency counting Easy" markdown="1">
<label class="practice-check-label" for="check-hashing-004"><input class="practice-check" type="checkbox" id="check-hashing-004" data-key="05-hashing/problems/004-ransom-note.md" disabled><span class="ds-status">সমাধান করেছি: 004 — Ransom Note</span></label>
<div class="practice-problem" markdown="1">

**[004 — Ransom Note](05-hashing/problems/004-ransom-note.md)**

<p class="practice-pattern">frequency counting · Easy</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](05-hashing/problems/004-ransom-note.md#problem) → [২. ভিত্তি](05-hashing/problems/004-ransom-note.md#idea) → [৩. ধাপ ও ছবি](05-hashing/problems/004-ransom-note.md#walkthrough) → [৪. কোড](05-hashing/problems/004-ransom-note.md#code) → [৫. খরচ ও ভুল](05-hashing/problems/004-ransom-note.md#cost) → [৬. নিজে আবার করুন](05-hashing/problems/004-ransom-note.md#practice)

আটকে গেলে section-এর [ভিত্তি](05-hashing/concept.md) · [চিত্র ও ব্যবহার](05-hashing/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M4" data-must="1" data-search="Hashing 005 — First Unique Character in a String frequency counting Easy" markdown="1">
<label class="practice-check-label" for="check-hashing-005"><input class="practice-check" type="checkbox" id="check-hashing-005" data-key="05-hashing/problems/005-first-unique-character.md" disabled><span class="ds-status">সমাধান করেছি: 005 — First Unique Character in a String</span></label>
<div class="practice-problem" markdown="1">

**[005 — First Unique Character in a String](05-hashing/problems/005-first-unique-character.md)**

<p class="practice-pattern">frequency counting · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](05-hashing/problems/005-first-unique-character.md#problem) → [২. ভিত্তি](05-hashing/problems/005-first-unique-character.md#idea) → [৩. ধাপ ও ছবি](05-hashing/problems/005-first-unique-character.md#walkthrough) → [৪. কোড](05-hashing/problems/005-first-unique-character.md#code) → [৫. খরচ ও ভুল](05-hashing/problems/005-first-unique-character.md#cost) → [৬. নিজে আবার করুন](05-hashing/problems/005-first-unique-character.md#practice)

আটকে গেলে section-এর [ভিত্তি](05-hashing/concept.md) · [চিত্র ও ব্যবহার](05-hashing/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M4" data-must="1" data-search="Hashing 006 — Intersection of Two Arrays seen-set Easy" markdown="1">
<label class="practice-check-label" for="check-hashing-006"><input class="practice-check" type="checkbox" id="check-hashing-006" data-key="05-hashing/problems/006-intersection-two-arrays.md" disabled><span class="ds-status">সমাধান করেছি: 006 — Intersection of Two Arrays</span></label>
<div class="practice-problem" markdown="1">

**[006 — Intersection of Two Arrays](05-hashing/problems/006-intersection-two-arrays.md)**

<p class="practice-pattern">seen-set · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](05-hashing/problems/006-intersection-two-arrays.md#problem) → [২. ভিত্তি](05-hashing/problems/006-intersection-two-arrays.md#idea) → [৩. ধাপ ও ছবি](05-hashing/problems/006-intersection-two-arrays.md#walkthrough) → [৪. কোড](05-hashing/problems/006-intersection-two-arrays.md#code) → [৫. খরচ ও ভুল](05-hashing/problems/006-intersection-two-arrays.md#cost) → [৬. নিজে আবার করুন](05-hashing/problems/006-intersection-two-arrays.md#practice)

আটকে গেলে section-এর [ভিত্তি](05-hashing/concept.md) · [চিত্র ও ব্যবহার](05-hashing/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M4" data-must="0" data-search="Hashing 007 — Missing Number seen-set Easy" markdown="1">
<label class="practice-check-label" for="check-hashing-007"><input class="practice-check" type="checkbox" id="check-hashing-007" data-key="05-hashing/problems/007-missing-number.md" disabled><span class="ds-status">সমাধান করেছি: 007 — Missing Number</span></label>
<div class="practice-problem" markdown="1">

**[007 — Missing Number](05-hashing/problems/007-missing-number.md)**

<p class="practice-pattern">seen-set · Easy</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](05-hashing/problems/007-missing-number.md#problem) → [২. ভিত্তি](05-hashing/problems/007-missing-number.md#idea) → [৩. ধাপ ও ছবি](05-hashing/problems/007-missing-number.md#walkthrough) → [৪. কোড](05-hashing/problems/007-missing-number.md#code) → [৫. খরচ ও ভুল](05-hashing/problems/007-missing-number.md#cost) → [৬. নিজে আবার করুন](05-hashing/problems/007-missing-number.md#practice)

আটকে গেলে section-এর [ভিত্তি](05-hashing/concept.md) · [চিত্র ও ব্যবহার](05-hashing/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M4" data-must="0" data-search="Hashing 008 — Isomorphic Strings grouping / mapping Easy" markdown="1">
<label class="practice-check-label" for="check-hashing-008"><input class="practice-check" type="checkbox" id="check-hashing-008" data-key="05-hashing/problems/008-isomorphic-strings.md" disabled><span class="ds-status">সমাধান করেছি: 008 — Isomorphic Strings</span></label>
<div class="practice-problem" markdown="1">

**[008 — Isomorphic Strings](05-hashing/problems/008-isomorphic-strings.md)**

<p class="practice-pattern">grouping / mapping · Easy</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](05-hashing/problems/008-isomorphic-strings.md#problem) → [২. ভিত্তি](05-hashing/problems/008-isomorphic-strings.md#idea) → [৩. ধাপ ও ছবি](05-hashing/problems/008-isomorphic-strings.md#walkthrough) → [৪. কোড](05-hashing/problems/008-isomorphic-strings.md#code) → [৫. খরচ ও ভুল](05-hashing/problems/008-isomorphic-strings.md#cost) → [৬. নিজে আবার করুন](05-hashing/problems/008-isomorphic-strings.md#practice)

আটকে গেলে section-এর [ভিত্তি](05-hashing/concept.md) · [চিত্র ও ব্যবহার](05-hashing/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M2 M4" data-must="0" data-search="Hashing 009 — Two Sum II - Input Array Is Sorted complement lookup vs two pointers Medium" markdown="1">
<label class="practice-check-label" for="check-hashing-009"><input class="practice-check" type="checkbox" id="check-hashing-009" data-key="05-hashing/problems/009-two-sum-ii.md" disabled><span class="ds-status">সমাধান করেছি: 009 — Two Sum II - Input Array Is Sorted</span></label>
<div class="practice-problem" markdown="1">

**[009 — Two Sum II - Input Array Is Sorted](05-hashing/problems/009-two-sum-ii.md)**

<p class="practice-pattern">complement lookup vs two pointers · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M2</a>
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](05-hashing/problems/009-two-sum-ii.md#problem) → [২. ভিত্তি](05-hashing/problems/009-two-sum-ii.md#idea) → [৩. ধাপ ও ছবি](05-hashing/problems/009-two-sum-ii.md#walkthrough) → [৪. কোড](05-hashing/problems/009-two-sum-ii.md#code) → [৫. খরচ ও ভুল](05-hashing/problems/009-two-sum-ii.md#cost) → [৬. নিজে আবার করুন](05-hashing/problems/009-two-sum-ii.md#practice)

আটকে গেলে section-এর [ভিত্তি](05-hashing/concept.md) · [চিত্র ও ব্যবহার](05-hashing/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M4" data-must="1" data-search="Hashing 010 — Group Anagrams grouping by canonical key Medium" markdown="1">
<label class="practice-check-label" for="check-hashing-010"><input class="practice-check" type="checkbox" id="check-hashing-010" data-key="05-hashing/problems/010-group-anagrams.md" disabled><span class="ds-status">সমাধান করেছি: 010 — Group Anagrams</span></label>
<div class="practice-problem" markdown="1">

**[010 — Group Anagrams](05-hashing/problems/010-group-anagrams.md)**

<p class="practice-pattern">grouping by canonical key · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](05-hashing/problems/010-group-anagrams.md#problem) → [২. ভিত্তি](05-hashing/problems/010-group-anagrams.md#idea) → [৩. ধাপ ও ছবি](05-hashing/problems/010-group-anagrams.md#walkthrough) → [৪. কোড](05-hashing/problems/010-group-anagrams.md#code) → [৫. খরচ ও ভুল](05-hashing/problems/010-group-anagrams.md#cost) → [৬. নিজে আবার করুন](05-hashing/problems/010-group-anagrams.md#practice)

আটকে গেলে section-এর [ভিত্তি](05-hashing/concept.md) · [চিত্র ও ব্যবহার](05-hashing/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M4" data-must="1" data-search="Hashing 011 — Top K Frequent Elements frequency counting Medium" markdown="1">
<label class="practice-check-label" for="check-hashing-011"><input class="practice-check" type="checkbox" id="check-hashing-011" data-key="05-hashing/problems/011-top-k-frequent-elements.md" disabled><span class="ds-status">সমাধান করেছি: 011 — Top K Frequent Elements</span></label>
<div class="practice-problem" markdown="1">

**[011 — Top K Frequent Elements](05-hashing/problems/011-top-k-frequent-elements.md)**

<p class="practice-pattern">frequency counting · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](05-hashing/problems/011-top-k-frequent-elements.md#problem) → [২. ভিত্তি](05-hashing/problems/011-top-k-frequent-elements.md#idea) → [৩. ধাপ ও ছবি](05-hashing/problems/011-top-k-frequent-elements.md#walkthrough) → [৪. কোড](05-hashing/problems/011-top-k-frequent-elements.md#code) → [৫. খরচ ও ভুল](05-hashing/problems/011-top-k-frequent-elements.md#cost) → [৬. নিজে আবার করুন](05-hashing/problems/011-top-k-frequent-elements.md#practice)

আটকে গেলে section-এর [ভিত্তি](05-hashing/concept.md) · [চিত্র ও ব্যবহার](05-hashing/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M4" data-must="1" data-search="Hashing 012 — Longest Consecutive Sequence seen-set + smart start Medium" markdown="1">
<label class="practice-check-label" for="check-hashing-012"><input class="practice-check" type="checkbox" id="check-hashing-012" data-key="05-hashing/problems/012-longest-consecutive-sequence.md" disabled><span class="ds-status">সমাধান করেছি: 012 — Longest Consecutive Sequence</span></label>
<div class="practice-problem" markdown="1">

**[012 — Longest Consecutive Sequence](05-hashing/problems/012-longest-consecutive-sequence.md)**

<p class="practice-pattern">seen-set + smart start · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](05-hashing/problems/012-longest-consecutive-sequence.md#problem) → [২. ভিত্তি](05-hashing/problems/012-longest-consecutive-sequence.md#idea) → [৩. ধাপ ও ছবি](05-hashing/problems/012-longest-consecutive-sequence.md#walkthrough) → [৪. কোড](05-hashing/problems/012-longest-consecutive-sequence.md#code) → [৫. খরচ ও ভুল](05-hashing/problems/012-longest-consecutive-sequence.md#cost) → [৬. নিজে আবার করুন](05-hashing/problems/012-longest-consecutive-sequence.md#practice)

আটকে গেলে section-এর [ভিত্তি](05-hashing/concept.md) · [চিত্র ও ব্যবহার](05-hashing/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M4" data-must="1" data-search="Hashing 013 — Subarray Sum Equals K prefix sum + hash map Medium" markdown="1">
<label class="practice-check-label" for="check-hashing-013"><input class="practice-check" type="checkbox" id="check-hashing-013" data-key="05-hashing/problems/013-subarray-sum-equals-k.md" disabled><span class="ds-status">সমাধান করেছি: 013 — Subarray Sum Equals K</span></label>
<div class="practice-problem" markdown="1">

**[013 — Subarray Sum Equals K](05-hashing/problems/013-subarray-sum-equals-k.md)**

<p class="practice-pattern">prefix sum + hash map · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](05-hashing/problems/013-subarray-sum-equals-k.md#problem) → [২. ভিত্তি](05-hashing/problems/013-subarray-sum-equals-k.md#idea) → [৩. ধাপ ও ছবি](05-hashing/problems/013-subarray-sum-equals-k.md#walkthrough) → [৪. কোড](05-hashing/problems/013-subarray-sum-equals-k.md#code) → [৫. খরচ ও ভুল](05-hashing/problems/013-subarray-sum-equals-k.md#cost) → [৬. নিজে আবার করুন](05-hashing/problems/013-subarray-sum-equals-k.md#practice)

আটকে গেলে section-এর [ভিত্তি](05-hashing/concept.md) · [চিত্র ও ব্যবহার](05-hashing/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M4" data-must="0" data-search="Hashing 014 — Continuous Subarray Sum prefix sum + hash map (mod) Medium" markdown="1">
<label class="practice-check-label" for="check-hashing-014"><input class="practice-check" type="checkbox" id="check-hashing-014" data-key="05-hashing/problems/014-continuous-subarray-sum.md" disabled><span class="ds-status">সমাধান করেছি: 014 — Continuous Subarray Sum</span></label>
<div class="practice-problem" markdown="1">

**[014 — Continuous Subarray Sum](05-hashing/problems/014-continuous-subarray-sum.md)**

<p class="practice-pattern">prefix sum + hash map (mod) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](05-hashing/problems/014-continuous-subarray-sum.md#problem) → [২. ভিত্তি](05-hashing/problems/014-continuous-subarray-sum.md#idea) → [৩. ধাপ ও ছবি](05-hashing/problems/014-continuous-subarray-sum.md#walkthrough) → [৪. কোড](05-hashing/problems/014-continuous-subarray-sum.md#code) → [৫. খরচ ও ভুল](05-hashing/problems/014-continuous-subarray-sum.md#cost) → [৬. নিজে আবার করুন](05-hashing/problems/014-continuous-subarray-sum.md#practice)

আটকে গেলে section-এর [ভিত্তি](05-hashing/concept.md) · [চিত্র ও ব্যবহার](05-hashing/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M4" data-must="1" data-search="Hashing 015 — Valid Sudoku seen-set per unit Medium" markdown="1">
<label class="practice-check-label" for="check-hashing-015"><input class="practice-check" type="checkbox" id="check-hashing-015" data-key="05-hashing/problems/015-valid-sudoku.md" disabled><span class="ds-status">সমাধান করেছি: 015 — Valid Sudoku</span></label>
<div class="practice-problem" markdown="1">

**[015 — Valid Sudoku](05-hashing/problems/015-valid-sudoku.md)**

<p class="practice-pattern">seen-set per unit · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](05-hashing/problems/015-valid-sudoku.md#problem) → [২. ভিত্তি](05-hashing/problems/015-valid-sudoku.md#idea) → [৩. ধাপ ও ছবি](05-hashing/problems/015-valid-sudoku.md#walkthrough) → [৪. কোড](05-hashing/problems/015-valid-sudoku.md#code) → [৫. খরচ ও ভুল](05-hashing/problems/015-valid-sudoku.md#cost) → [৬. নিজে আবার করুন](05-hashing/problems/015-valid-sudoku.md#practice)

আটকে গেলে section-এর [ভিত্তি](05-hashing/concept.md) · [চিত্র ও ব্যবহার](05-hashing/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M4" data-must="0" data-search="Hashing 016 — 4Sum II complement lookup (pair sums) Medium" markdown="1">
<label class="practice-check-label" for="check-hashing-016"><input class="practice-check" type="checkbox" id="check-hashing-016" data-key="05-hashing/problems/016-4sum-ii.md" disabled><span class="ds-status">সমাধান করেছি: 016 — 4Sum II</span></label>
<div class="practice-problem" markdown="1">

**[016 — 4Sum II](05-hashing/problems/016-4sum-ii.md)**

<p class="practice-pattern">complement lookup (pair sums) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](05-hashing/problems/016-4sum-ii.md#problem) → [২. ভিত্তি](05-hashing/problems/016-4sum-ii.md#idea) → [৩. ধাপ ও ছবি](05-hashing/problems/016-4sum-ii.md#walkthrough) → [৪. কোড](05-hashing/problems/016-4sum-ii.md#code) → [৫. খরচ ও ভুল](05-hashing/problems/016-4sum-ii.md#cost) → [৬. নিজে আবার করুন](05-hashing/problems/016-4sum-ii.md#practice)

আটকে গেলে section-এর [ভিত্তি](05-hashing/concept.md) · [চিত্র ও ব্যবহার](05-hashing/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M4" data-must="0" data-search="Hashing 017 — Encode and Decode TinyURL hash as index accelerator Medium" markdown="1">
<label class="practice-check-label" for="check-hashing-017"><input class="practice-check" type="checkbox" id="check-hashing-017" data-key="05-hashing/problems/017-encode-decode-tinyurl.md" disabled><span class="ds-status">সমাধান করেছি: 017 — Encode and Decode TinyURL</span></label>
<div class="practice-problem" markdown="1">

**[017 — Encode and Decode TinyURL](05-hashing/problems/017-encode-decode-tinyurl.md)**

<p class="practice-pattern">hash as index accelerator · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](05-hashing/problems/017-encode-decode-tinyurl.md#problem) → [২. ভিত্তি](05-hashing/problems/017-encode-decode-tinyurl.md#idea) → [৩. ধাপ ও ছবি](05-hashing/problems/017-encode-decode-tinyurl.md#walkthrough) → [৪. কোড](05-hashing/problems/017-encode-decode-tinyurl.md#code) → [৫. খরচ ও ভুল](05-hashing/problems/017-encode-decode-tinyurl.md#cost) → [৬. নিজে আবার করুন](05-hashing/problems/017-encode-decode-tinyurl.md#practice)

আটকে গেলে section-এর [ভিত্তি](05-hashing/concept.md) · [চিত্র ও ব্যবহার](05-hashing/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M4" data-must="0" data-search="Hashing 018 — Sum of Two Values complement lookup Medium" markdown="1">
<label class="practice-check-label" for="check-hashing-018"><input class="practice-check" type="checkbox" id="check-hashing-018" data-key="05-hashing/problems/018-cses-sum-of-two-values.md" disabled><span class="ds-status">সমাধান করেছি: 018 — Sum of Two Values</span></label>
<div class="practice-problem" markdown="1">

**[018 — Sum of Two Values](05-hashing/problems/018-cses-sum-of-two-values.md)**

<p class="practice-pattern">complement lookup · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](05-hashing/problems/018-cses-sum-of-two-values.md#problem) → [২. ভিত্তি](05-hashing/problems/018-cses-sum-of-two-values.md#idea) → [৩. ধাপ ও ছবি](05-hashing/problems/018-cses-sum-of-two-values.md#walkthrough) → [৪. কোড](05-hashing/problems/018-cses-sum-of-two-values.md#code) → [৫. খরচ ও ভুল](05-hashing/problems/018-cses-sum-of-two-values.md#cost) → [৬. নিজে আবার করুন](05-hashing/problems/018-cses-sum-of-two-values.md#practice)

আটকে গেলে section-এর [ভিত্তি](05-hashing/concept.md) · [চিত্র ও ব্যবহার](05-hashing/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M4" data-must="0" data-search="Hashing 019 — Repeated DNA Sequences seen-set of windows / rolling-hash teaser Medium" markdown="1">
<label class="practice-check-label" for="check-hashing-019"><input class="practice-check" type="checkbox" id="check-hashing-019" data-key="05-hashing/problems/019-repeated-dna-sequences.md" disabled><span class="ds-status">সমাধান করেছি: 019 — Repeated DNA Sequences</span></label>
<div class="practice-problem" markdown="1">

**[019 — Repeated DNA Sequences](05-hashing/problems/019-repeated-dna-sequences.md)**

<p class="practice-pattern">seen-set of windows / rolling-hash teaser · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](05-hashing/problems/019-repeated-dna-sequences.md#problem) → [২. ভিত্তি](05-hashing/problems/019-repeated-dna-sequences.md#idea) → [৩. ধাপ ও ছবি](05-hashing/problems/019-repeated-dna-sequences.md#walkthrough) → [৪. কোড](05-hashing/problems/019-repeated-dna-sequences.md#code) → [৫. খরচ ও ভুল](05-hashing/problems/019-repeated-dna-sequences.md#cost) → [৬. নিজে আবার করুন](05-hashing/problems/019-repeated-dna-sequences.md#practice)

আটকে গেলে section-এর [ভিত্তি](05-hashing/concept.md) · [চিত্র ও ব্যবহার](05-hashing/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M4" data-must="1" data-search="Hashing 020 — Minimum Window Substring frequency counting + sliding window Hard" markdown="1">
<label class="practice-check-label" for="check-hashing-020"><input class="practice-check" type="checkbox" id="check-hashing-020" data-key="05-hashing/problems/020-minimum-window-substring.md" disabled><span class="ds-status">সমাধান করেছি: 020 — Minimum Window Substring</span></label>
<div class="practice-problem" markdown="1">

**[020 — Minimum Window Substring](05-hashing/problems/020-minimum-window-substring.md)**

<p class="practice-pattern">frequency counting + sliding window · Hard</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](05-hashing/problems/020-minimum-window-substring.md#problem) → [২. ভিত্তি](05-hashing/problems/020-minimum-window-substring.md#idea) → [৩. ধাপ ও ছবি](05-hashing/problems/020-minimum-window-substring.md#walkthrough) → [৪. কোড](05-hashing/problems/020-minimum-window-substring.md#code) → [৫. খরচ ও ভুল](05-hashing/problems/020-minimum-window-substring.md#cost) → [৬. নিজে আবার করুন](05-hashing/problems/020-minimum-window-substring.md#practice)

আটকে গেলে section-এর [ভিত্তি](05-hashing/concept.md) · [চিত্র ও ব্যবহার](05-hashing/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M4" data-must="0" data-search="Hashing 021 — Substring with Concatenation of All Words frequency counting + fixed windows Hard" markdown="1">
<label class="practice-check-label" for="check-hashing-021"><input class="practice-check" type="checkbox" id="check-hashing-021" data-key="05-hashing/problems/021-substring-concatenation-all-words.md" disabled><span class="ds-status">সমাধান করেছি: 021 — Substring with Concatenation of All Words</span></label>
<div class="practice-problem" markdown="1">

**[021 — Substring with Concatenation of All Words](05-hashing/problems/021-substring-concatenation-all-words.md)**

<p class="practice-pattern">frequency counting + fixed windows · Hard</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](05-hashing/problems/021-substring-concatenation-all-words.md#problem) → [২. ভিত্তি](05-hashing/problems/021-substring-concatenation-all-words.md#idea) → [৩. ধাপ ও ছবি](05-hashing/problems/021-substring-concatenation-all-words.md#walkthrough) → [৪. কোড](05-hashing/problems/021-substring-concatenation-all-words.md#code) → [৫. খরচ ও ভুল](05-hashing/problems/021-substring-concatenation-all-words.md#cost) → [৬. নিজে আবার করুন](05-hashing/problems/021-substring-concatenation-all-words.md#practice)

আটকে গেলে section-এর [ভিত্তি](05-hashing/concept.md) · [চিত্র ও ব্যবহার](05-hashing/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="extension" data-must="0" data-search="Hashing 022 — CSES String Matching (Rolling Hash) rolling hash / counting Hard" markdown="1">
<label class="practice-check-label" for="check-hashing-022"><input class="practice-check" type="checkbox" id="check-hashing-022" data-key="05-hashing/problems/022-codeforces-hashing-pick.md" disabled><span class="ds-status">সমাধান করেছি: 022 — CSES String Matching (Rolling Hash)</span></label>
<div class="practice-problem" markdown="1">

**[022 — CSES String Matching (Rolling Hash)](05-hashing/problems/022-codeforces-hashing-pick.md)**

<p class="practice-pattern">rolling hash / counting · Hard</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">বাড়তি অনুশীলন</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](05-hashing/problems/022-codeforces-hashing-pick.md#problem) → [২. ভিত্তি](05-hashing/problems/022-codeforces-hashing-pick.md#idea) → [৩. ধাপ ও ছবি](05-hashing/problems/022-codeforces-hashing-pick.md#walkthrough) → [৪. কোড](05-hashing/problems/022-codeforces-hashing-pick.md#code) → [৫. খরচ ও ভুল](05-hashing/problems/022-codeforces-hashing-pick.md#cost) → [৬. নিজে আবার করুন](05-hashing/problems/022-codeforces-hashing-pick.md#practice)

আটকে গেলে section-এর [ভিত্তি](05-hashing/concept.md) · [চিত্র ও ব্যবহার](05-hashing/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

</ol>
</details>

</div>

<div class="practice-chapter" data-family="recursion" markdown="1">

## Recursion ও Backtracking {#section-recursion}

<details class="practice-section" data-section="recursion" markdown="1">
<summary>Recursion ও Backtracking <span class="section-count">23টি</span></summary>

**আগে বুঝে নিন:** function call, base case, state, undo।

**আগে পড়ুন:** [ভিত্তি](06-recursion-and-backtracking/concept.md) · [চিত্র ও ব্যবহার](06-recursion-and-backtracking/visual-explanation.md)।

**Section-এর বড় challenge:** [ধাপে ধাপে প্রয়োগ করুন](guided-practice/recursion.md)। সব individual problem-এর বিকল্প নয়; প্রধান কৌশল একসঙ্গে ব্যবহার করার পরীক্ষা।

<ol class="practice-list" markdown="1">

<li class="practice-item" data-course="M4" data-must="1" data-search="Recursion ও Backtracking 001 — Fibonacci Number decrease-and-conquer, দুটো recursive call → recursion tree Easy" markdown="1">
<label class="practice-check-label" for="check-recursion-001"><input class="practice-check" type="checkbox" id="check-recursion-001" data-key="06-recursion-and-backtracking/problems/001-fibonacci-number.md" disabled><span class="ds-status">সমাধান করেছি: 001 — Fibonacci Number</span></label>
<div class="practice-problem" markdown="1">

**[001 — Fibonacci Number](06-recursion-and-backtracking/problems/001-fibonacci-number.md)**

<p class="practice-pattern">decrease-and-conquer, দুটো recursive call → recursion tree · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](06-recursion-and-backtracking/problems/001-fibonacci-number.md#problem) → [২. ভিত্তি](06-recursion-and-backtracking/problems/001-fibonacci-number.md#idea) → [৩. ধাপ ও ছবি](06-recursion-and-backtracking/problems/001-fibonacci-number.md#walkthrough) → [৪. কোড](06-recursion-and-backtracking/problems/001-fibonacci-number.md#code) → [৫. খরচ ও ভুল](06-recursion-and-backtracking/problems/001-fibonacci-number.md#cost) → [৬. নিজে আবার করুন](06-recursion-and-backtracking/problems/001-fibonacci-number.md#practice)

আটকে গেলে section-এর [ভিত্তি](06-recursion-and-backtracking/concept.md) · [চিত্র ও ব্যবহার](06-recursion-and-backtracking/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M4" data-must="1" data-search="Recursion ও Backtracking 002 — Climbing Stairs decrease-and-conquer, count-the-ways → memoization Easy" markdown="1">
<label class="practice-check-label" for="check-recursion-002"><input class="practice-check" type="checkbox" id="check-recursion-002" data-key="06-recursion-and-backtracking/problems/002-climbing-stairs.md" disabled><span class="ds-status">সমাধান করেছি: 002 — Climbing Stairs</span></label>
<div class="practice-problem" markdown="1">

**[002 — Climbing Stairs](06-recursion-and-backtracking/problems/002-climbing-stairs.md)**

<p class="practice-pattern">decrease-and-conquer, count-the-ways → memoization · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](06-recursion-and-backtracking/problems/002-climbing-stairs.md#problem) → [২. ভিত্তি](06-recursion-and-backtracking/problems/002-climbing-stairs.md#idea) → [৩. ধাপ ও ছবি](06-recursion-and-backtracking/problems/002-climbing-stairs.md#walkthrough) → [৪. কোড](06-recursion-and-backtracking/problems/002-climbing-stairs.md#code) → [৫. খরচ ও ভুল](06-recursion-and-backtracking/problems/002-climbing-stairs.md#cost) → [৬. নিজে আবার করুন](06-recursion-and-backtracking/problems/002-climbing-stairs.md#practice)

আটকে গেলে section-এর [ভিত্তি](06-recursion-and-backtracking/concept.md) · [চিত্র ও ব্যবহার](06-recursion-and-backtracking/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M1" data-must="0" data-search="Recursion ও Backtracking 003 — Reverse String decrease-and-conquer — swap বাইরের জোড়া, ভেতরের দিকে recurse Easy" markdown="1">
<label class="practice-check-label" for="check-recursion-003"><input class="practice-check" type="checkbox" id="check-recursion-003" data-key="06-recursion-and-backtracking/problems/003-reverse-string.md" disabled><span class="ds-status">সমাধান করেছি: 003 — Reverse String</span></label>
<div class="practice-problem" markdown="1">

**[003 — Reverse String](06-recursion-and-backtracking/problems/003-reverse-string.md)**

<p class="practice-pattern">decrease-and-conquer — swap বাইরের জোড়া, ভেতরের দিকে recurse · Easy</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M1</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](06-recursion-and-backtracking/problems/003-reverse-string.md#problem) → [২. ভিত্তি](06-recursion-and-backtracking/problems/003-reverse-string.md#idea) → [৩. ধাপ ও ছবি](06-recursion-and-backtracking/problems/003-reverse-string.md#walkthrough) → [৪. কোড](06-recursion-and-backtracking/problems/003-reverse-string.md#code) → [৫. খরচ ও ভুল](06-recursion-and-backtracking/problems/003-reverse-string.md#cost) → [৬. নিজে আবার করুন](06-recursion-and-backtracking/problems/003-reverse-string.md#practice)

আটকে গেলে section-এর [ভিত্তি](06-recursion-and-backtracking/concept.md) · [চিত্র ও ব্যবহার](06-recursion-and-backtracking/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Recursion ও Backtracking 004 — Power of Two decrease-and-conquer — বারবার 2 দিয়ে ভাগ Easy" markdown="1">
<label class="practice-check-label" for="check-recursion-004"><input class="practice-check" type="checkbox" id="check-recursion-004" data-key="06-recursion-and-backtracking/problems/004-power-of-two.md" disabled><span class="ds-status">সমাধান করেছি: 004 — Power of Two</span></label>
<div class="practice-problem" markdown="1">

**[004 — Power of Two](06-recursion-and-backtracking/problems/004-power-of-two.md)**

<p class="practice-pattern">decrease-and-conquer — বারবার 2 দিয়ে ভাগ · Easy</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](06-recursion-and-backtracking/problems/004-power-of-two.md#problem) → [২. ভিত্তি](06-recursion-and-backtracking/problems/004-power-of-two.md#idea) → [৩. ধাপ ও ছবি](06-recursion-and-backtracking/problems/004-power-of-two.md#walkthrough) → [৪. কোড](06-recursion-and-backtracking/problems/004-power-of-two.md#code) → [৫. খরচ ও ভুল](06-recursion-and-backtracking/problems/004-power-of-two.md#cost) → [৬. নিজে আবার করুন](06-recursion-and-backtracking/problems/004-power-of-two.md#practice)

আটকে গেলে section-এর [ভিত্তি](06-recursion-and-backtracking/concept.md) · [চিত্র ও ব্যবহার](06-recursion-and-backtracking/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="1" data-search="Recursion ও Backtracking 005 — Pow(x, n) divide-and-conquer — exponent অর্ধেক করে square করা (fast power) Medium" markdown="1">
<label class="practice-check-label" for="check-recursion-005"><input class="practice-check" type="checkbox" id="check-recursion-005" data-key="06-recursion-and-backtracking/problems/005-pow-x-n.md" disabled><span class="ds-status">সমাধান করেছি: 005 — Pow(x, n)</span></label>
<div class="practice-problem" markdown="1">

**[005 — Pow(x, n)](06-recursion-and-backtracking/problems/005-pow-x-n.md)**

<p class="practice-pattern">divide-and-conquer — exponent অর্ধেক করে square করা (fast power) · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](06-recursion-and-backtracking/problems/005-pow-x-n.md#problem) → [২. ভিত্তি](06-recursion-and-backtracking/problems/005-pow-x-n.md#idea) → [৩. ধাপ ও ছবি](06-recursion-and-backtracking/problems/005-pow-x-n.md#walkthrough) → [৪. কোড](06-recursion-and-backtracking/problems/005-pow-x-n.md#code) → [৫. খরচ ও ভুল](06-recursion-and-backtracking/problems/005-pow-x-n.md#cost) → [৬. নিজে আবার করুন](06-recursion-and-backtracking/problems/005-pow-x-n.md#practice)

আটকে গেলে section-এর [ভিত্তি](06-recursion-and-backtracking/concept.md) · [চিত্র ও ব্যবহার](06-recursion-and-backtracking/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M1" data-must="0" data-search="Recursion ও Backtracking 006 — Merge Two Sorted Lists decrease-and-conquer — ছোট head বেছে বাকিটা recursively merge Easy" markdown="1">
<label class="practice-check-label" for="check-recursion-006"><input class="practice-check" type="checkbox" id="check-recursion-006" data-key="06-recursion-and-backtracking/problems/006-merge-two-sorted-lists.md" disabled><span class="ds-status">সমাধান করেছি: 006 — Merge Two Sorted Lists</span></label>
<div class="practice-problem" markdown="1">

**[006 — Merge Two Sorted Lists](06-recursion-and-backtracking/problems/006-merge-two-sorted-lists.md)**

<p class="practice-pattern">decrease-and-conquer — ছোট head বেছে বাকিটা recursively merge · Easy</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M1</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](06-recursion-and-backtracking/problems/006-merge-two-sorted-lists.md#problem) → [২. ভিত্তি](06-recursion-and-backtracking/problems/006-merge-two-sorted-lists.md#idea) → [৩. ধাপ ও ছবি](06-recursion-and-backtracking/problems/006-merge-two-sorted-lists.md#walkthrough) → [৪. কোড](06-recursion-and-backtracking/problems/006-merge-two-sorted-lists.md#code) → [৫. খরচ ও ভুল](06-recursion-and-backtracking/problems/006-merge-two-sorted-lists.md#cost) → [৬. নিজে আবার করুন](06-recursion-and-backtracking/problems/006-merge-two-sorted-lists.md#practice)

আটকে গেলে section-এর [ভিত্তি](06-recursion-and-backtracking/concept.md) · [চিত্র ও ব্যবহার](06-recursion-and-backtracking/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="1" data-search="Recursion ও Backtracking 007 — Subsets include/exclude branch — প্রতিটা item নাও বা বাদ দাও (2^n) Medium" markdown="1">
<label class="practice-check-label" for="check-recursion-007"><input class="practice-check" type="checkbox" id="check-recursion-007" data-key="06-recursion-and-backtracking/problems/007-subsets.md" disabled><span class="ds-status">সমাধান করেছি: 007 — Subsets</span></label>
<div class="practice-problem" markdown="1">

**[007 — Subsets](06-recursion-and-backtracking/problems/007-subsets.md)**

<p class="practice-pattern">include/exclude branch — প্রতিটা item নাও বা বাদ দাও (2^n) · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](06-recursion-and-backtracking/problems/007-subsets.md#problem) → [২. ভিত্তি](06-recursion-and-backtracking/problems/007-subsets.md#idea) → [৩. ধাপ ও ছবি](06-recursion-and-backtracking/problems/007-subsets.md#walkthrough) → [৪. কোড](06-recursion-and-backtracking/problems/007-subsets.md#code) → [৫. খরচ ও ভুল](06-recursion-and-backtracking/problems/007-subsets.md#cost) → [৬. নিজে আবার করুন](06-recursion-and-backtracking/problems/007-subsets.md#practice)

আটকে গেলে section-এর [ভিত্তি](06-recursion-and-backtracking/concept.md) · [চিত্র ও ব্যবহার](06-recursion-and-backtracking/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Recursion ও Backtracking 008 — Letter Combinations of a Phone Number Cartesian choose-explore — প্রতি digit-এ k-way branch Medium" markdown="1">
<label class="practice-check-label" for="check-recursion-008"><input class="practice-check" type="checkbox" id="check-recursion-008" data-key="06-recursion-and-backtracking/problems/008-letter-combinations-phone.md" disabled><span class="ds-status">সমাধান করেছি: 008 — Letter Combinations of a Phone Number</span></label>
<div class="practice-problem" markdown="1">

**[008 — Letter Combinations of a Phone Number](06-recursion-and-backtracking/problems/008-letter-combinations-phone.md)**

<p class="practice-pattern">Cartesian choose-explore — প্রতি digit-এ k-way branch · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](06-recursion-and-backtracking/problems/008-letter-combinations-phone.md#problem) → [২. ভিত্তি](06-recursion-and-backtracking/problems/008-letter-combinations-phone.md#idea) → [৩. ধাপ ও ছবি](06-recursion-and-backtracking/problems/008-letter-combinations-phone.md#walkthrough) → [৪. কোড](06-recursion-and-backtracking/problems/008-letter-combinations-phone.md#code) → [৫. খরচ ও ভুল](06-recursion-and-backtracking/problems/008-letter-combinations-phone.md#cost) → [৬. নিজে আবার করুন](06-recursion-and-backtracking/problems/008-letter-combinations-phone.md#practice)

আটকে গেলে section-এর [ভিত্তি](06-recursion-and-backtracking/concept.md) · [চিত্র ও ব্যবহার](06-recursion-and-backtracking/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="1" data-search="Recursion ও Backtracking 009 — Permutations choose each remaining — প্রতি slot-এ এখনো unused প্রতিটা item বসিয়ে দেখো (n!) Medium" markdown="1">
<label class="practice-check-label" for="check-recursion-009"><input class="practice-check" type="checkbox" id="check-recursion-009" data-key="06-recursion-and-backtracking/problems/009-permutations.md" disabled><span class="ds-status">সমাধান করেছি: 009 — Permutations</span></label>
<div class="practice-problem" markdown="1">

**[009 — Permutations](06-recursion-and-backtracking/problems/009-permutations.md)**

<p class="practice-pattern">choose each remaining — প্রতি slot-এ এখনো unused প্রতিটা item বসিয়ে দেখো (n!) · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](06-recursion-and-backtracking/problems/009-permutations.md#problem) → [২. ভিত্তি](06-recursion-and-backtracking/problems/009-permutations.md#idea) → [৩. ধাপ ও ছবি](06-recursion-and-backtracking/problems/009-permutations.md#walkthrough) → [৪. কোড](06-recursion-and-backtracking/problems/009-permutations.md#code) → [৫. খরচ ও ভুল](06-recursion-and-backtracking/problems/009-permutations.md#cost) → [৬. নিজে আবার করুন](06-recursion-and-backtracking/problems/009-permutations.md#practice)

আটকে গেলে section-এর [ভিত্তি](06-recursion-and-backtracking/concept.md) · [চিত্র ও ব্যবহার](06-recursion-and-backtracking/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="1" data-search="Recursion ও Backtracking 010 — Subsets II include/exclude + duplicate skip — sort করে একই level-এ সমান প্রতিবেশী বাদ দাও Medium" markdown="1">
<label class="practice-check-label" for="check-recursion-010"><input class="practice-check" type="checkbox" id="check-recursion-010" data-key="06-recursion-and-backtracking/problems/010-subsets-ii.md" disabled><span class="ds-status">সমাধান করেছি: 010 — Subsets II</span></label>
<div class="practice-problem" markdown="1">

**[010 — Subsets II](06-recursion-and-backtracking/problems/010-subsets-ii.md)**

<p class="practice-pattern">include/exclude + duplicate skip — sort করে একই level-এ সমান প্রতিবেশী বাদ দাও · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](06-recursion-and-backtracking/problems/010-subsets-ii.md#problem) → [২. ভিত্তি](06-recursion-and-backtracking/problems/010-subsets-ii.md#idea) → [৩. ধাপ ও ছবি](06-recursion-and-backtracking/problems/010-subsets-ii.md#walkthrough) → [৪. কোড](06-recursion-and-backtracking/problems/010-subsets-ii.md#code) → [৫. খরচ ও ভুল](06-recursion-and-backtracking/problems/010-subsets-ii.md#cost) → [৬. নিজে আবার করুন](06-recursion-and-backtracking/problems/010-subsets-ii.md#practice)

আটকে গেলে section-এর [ভিত্তি](06-recursion-and-backtracking/concept.md) · [চিত্র ও ব্যবহার](06-recursion-and-backtracking/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Recursion ও Backtracking 011 — Combinations start-index combinations — fixed size k, প্রতিটা combination একটাই বাড়ন্ত ক্রমে Medium" markdown="1">
<label class="practice-check-label" for="check-recursion-011"><input class="practice-check" type="checkbox" id="check-recursion-011" data-key="06-recursion-and-backtracking/problems/011-combinations.md" disabled><span class="ds-status">সমাধান করেছি: 011 — Combinations</span></label>
<div class="practice-problem" markdown="1">

**[011 — Combinations](06-recursion-and-backtracking/problems/011-combinations.md)**

<p class="practice-pattern">start-index combinations — fixed size k, প্রতিটা combination একটাই বাড়ন্ত ক্রমে · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](06-recursion-and-backtracking/problems/011-combinations.md#problem) → [২. ভিত্তি](06-recursion-and-backtracking/problems/011-combinations.md#idea) → [৩. ধাপ ও ছবি](06-recursion-and-backtracking/problems/011-combinations.md#walkthrough) → [৪. কোড](06-recursion-and-backtracking/problems/011-combinations.md#code) → [৫. খরচ ও ভুল](06-recursion-and-backtracking/problems/011-combinations.md#cost) → [৬. নিজে আবার করুন](06-recursion-and-backtracking/problems/011-combinations.md#practice)

আটকে গেলে section-এর [ভিত্তি](06-recursion-and-backtracking/concept.md) · [চিত্র ও ব্যবহার](06-recursion-and-backtracking/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="1" data-search="Recursion ও Backtracking 012 — Combination Sum combinations with pruning — start-index + reuse, sorted হলে target ছাড়ালে break Medium" markdown="1">
<label class="practice-check-label" for="check-recursion-012"><input class="practice-check" type="checkbox" id="check-recursion-012" data-key="06-recursion-and-backtracking/problems/012-combination-sum.md" disabled><span class="ds-status">সমাধান করেছি: 012 — Combination Sum</span></label>
<div class="practice-problem" markdown="1">

**[012 — Combination Sum](06-recursion-and-backtracking/problems/012-combination-sum.md)**

<p class="practice-pattern">combinations with pruning — start-index + reuse, sorted হলে target ছাড়ালে break · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](06-recursion-and-backtracking/problems/012-combination-sum.md#problem) → [২. ভিত্তি](06-recursion-and-backtracking/problems/012-combination-sum.md#idea) → [৩. ধাপ ও ছবি](06-recursion-and-backtracking/problems/012-combination-sum.md#walkthrough) → [৪. কোড](06-recursion-and-backtracking/problems/012-combination-sum.md#code) → [৫. খরচ ও ভুল](06-recursion-and-backtracking/problems/012-combination-sum.md#cost) → [৬. নিজে আবার করুন](06-recursion-and-backtracking/problems/012-combination-sum.md#practice)

আটকে গেলে section-এর [ভিত্তি](06-recursion-and-backtracking/concept.md) · [চিত্র ও ব্যবহার](06-recursion-and-backtracking/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Recursion ও Backtracking 013 — Combination Sum II pruning + duplicate handling — sort, target-prune (break), একই level-এ সমান প্রতিবেশী skip Medium" markdown="1">
<label class="practice-check-label" for="check-recursion-013"><input class="practice-check" type="checkbox" id="check-recursion-013" data-key="06-recursion-and-backtracking/problems/013-combination-sum-ii.md" disabled><span class="ds-status">সমাধান করেছি: 013 — Combination Sum II</span></label>
<div class="practice-problem" markdown="1">

**[013 — Combination Sum II](06-recursion-and-backtracking/problems/013-combination-sum-ii.md)**

<p class="practice-pattern">pruning + duplicate handling — sort, target-prune (break), একই level-এ সমান প্রতিবেশী skip · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](06-recursion-and-backtracking/problems/013-combination-sum-ii.md#problem) → [২. ভিত্তি](06-recursion-and-backtracking/problems/013-combination-sum-ii.md#idea) → [৩. ধাপ ও ছবি](06-recursion-and-backtracking/problems/013-combination-sum-ii.md#walkthrough) → [৪. কোড](06-recursion-and-backtracking/problems/013-combination-sum-ii.md#code) → [৫. খরচ ও ভুল](06-recursion-and-backtracking/problems/013-combination-sum-ii.md#cost) → [৬. নিজে আবার করুন](06-recursion-and-backtracking/problems/013-combination-sum-ii.md#practice)

আটকে গেলে section-এর [ভিত্তি](06-recursion-and-backtracking/concept.md) · [চিত্র ও ব্যবহার](06-recursion-and-backtracking/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Recursion ও Backtracking 014 — Permutations II choose remaining + duplicate skip — sort, তারপর nums[i]==nums[i-1] and not used[i-1] হলে skip Medium" markdown="1">
<label class="practice-check-label" for="check-recursion-014"><input class="practice-check" type="checkbox" id="check-recursion-014" data-key="06-recursion-and-backtracking/problems/014-permutations-ii.md" disabled><span class="ds-status">সমাধান করেছি: 014 — Permutations II</span></label>
<div class="practice-problem" markdown="1">

**[014 — Permutations II](06-recursion-and-backtracking/problems/014-permutations-ii.md)**

<p class="practice-pattern">choose remaining + duplicate skip — sort, তারপর nums[i]==nums[i-1] and not used[i-1] হলে skip · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](06-recursion-and-backtracking/problems/014-permutations-ii.md#problem) → [২. ভিত্তি](06-recursion-and-backtracking/problems/014-permutations-ii.md#idea) → [৩. ধাপ ও ছবি](06-recursion-and-backtracking/problems/014-permutations-ii.md#walkthrough) → [৪. কোড](06-recursion-and-backtracking/problems/014-permutations-ii.md#code) → [৫. খরচ ও ভুল](06-recursion-and-backtracking/problems/014-permutations-ii.md#cost) → [৬. নিজে আবার করুন](06-recursion-and-backtracking/problems/014-permutations-ii.md#practice)

আটকে গেলে section-এর [ভিত্তি](06-recursion-and-backtracking/concept.md) · [চিত্র ও ব্যবহার](06-recursion-and-backtracking/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="1" data-search="Recursion ও Backtracking 015 — Generate Parentheses constraint backtracking — open &lt; n হলে (, close &lt; open হলে ) Medium" markdown="1">
<label class="practice-check-label" for="check-recursion-015"><input class="practice-check" type="checkbox" id="check-recursion-015" data-key="06-recursion-and-backtracking/problems/015-generate-parentheses.md" disabled><span class="ds-status">সমাধান করেছি: 015 — Generate Parentheses</span></label>
<div class="practice-problem" markdown="1">

**[015 — Generate Parentheses](06-recursion-and-backtracking/problems/015-generate-parentheses.md)**

<p class="practice-pattern">constraint backtracking — open &lt; n হলে (, close &lt; open হলে ) · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](06-recursion-and-backtracking/problems/015-generate-parentheses.md#problem) → [২. ভিত্তি](06-recursion-and-backtracking/problems/015-generate-parentheses.md#idea) → [৩. ধাপ ও ছবি](06-recursion-and-backtracking/problems/015-generate-parentheses.md#walkthrough) → [৪. কোড](06-recursion-and-backtracking/problems/015-generate-parentheses.md#code) → [৫. খরচ ও ভুল](06-recursion-and-backtracking/problems/015-generate-parentheses.md#cost) → [৬. নিজে আবার করুন](06-recursion-and-backtracking/problems/015-generate-parentheses.md#practice)

আটকে গেলে section-এর [ভিত্তি](06-recursion-and-backtracking/concept.md) · [চিত্র ও ব্যবহার](06-recursion-and-backtracking/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="1" data-search="Recursion ও Backtracking 016 — Palindrome Partitioning cut-point backtracking — প্রতি cut-এ palindrome হলে এগোও, নাহলে বাদ Medium" markdown="1">
<label class="practice-check-label" for="check-recursion-016"><input class="practice-check" type="checkbox" id="check-recursion-016" data-key="06-recursion-and-backtracking/problems/016-palindrome-partitioning.md" disabled><span class="ds-status">সমাধান করেছি: 016 — Palindrome Partitioning</span></label>
<div class="practice-problem" markdown="1">

**[016 — Palindrome Partitioning](06-recursion-and-backtracking/problems/016-palindrome-partitioning.md)**

<p class="practice-pattern">cut-point backtracking — প্রতি cut-এ palindrome হলে এগোও, নাহলে বাদ · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](06-recursion-and-backtracking/problems/016-palindrome-partitioning.md#problem) → [২. ভিত্তি](06-recursion-and-backtracking/problems/016-palindrome-partitioning.md#idea) → [৩. ধাপ ও ছবি](06-recursion-and-backtracking/problems/016-palindrome-partitioning.md#walkthrough) → [৪. কোড](06-recursion-and-backtracking/problems/016-palindrome-partitioning.md#code) → [৫. খরচ ও ভুল](06-recursion-and-backtracking/problems/016-palindrome-partitioning.md#cost) → [৬. নিজে আবার করুন](06-recursion-and-backtracking/problems/016-palindrome-partitioning.md#practice)

আটকে গেলে section-এর [ভিত্তি](06-recursion-and-backtracking/concept.md) · [চিত্র ও ব্যবহার](06-recursion-and-backtracking/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="1" data-search="Recursion ও Backtracking 017 — Word Search grid backtracking — প্রতি cell থেকে 4 দিকে DFS, visited cell mark করে চলো Medium" markdown="1">
<label class="practice-check-label" for="check-recursion-017"><input class="practice-check" type="checkbox" id="check-recursion-017" data-key="06-recursion-and-backtracking/problems/017-word-search.md" disabled><span class="ds-status">সমাধান করেছি: 017 — Word Search</span></label>
<div class="practice-problem" markdown="1">

**[017 — Word Search](06-recursion-and-backtracking/problems/017-word-search.md)**

<p class="practice-pattern">grid backtracking — প্রতি cell থেকে 4 দিকে DFS, visited cell mark করে চলো · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](06-recursion-and-backtracking/problems/017-word-search.md#problem) → [২. ভিত্তি](06-recursion-and-backtracking/problems/017-word-search.md#idea) → [৩. ধাপ ও ছবি](06-recursion-and-backtracking/problems/017-word-search.md#walkthrough) → [৪. কোড](06-recursion-and-backtracking/problems/017-word-search.md#code) → [৫. খরচ ও ভুল](06-recursion-and-backtracking/problems/017-word-search.md#cost) → [৬. নিজে আবার করুন](06-recursion-and-backtracking/problems/017-word-search.md#practice)

আটকে গেলে section-এর [ভিত্তি](06-recursion-and-backtracking/concept.md) · [চিত্র ও ব্যবহার](06-recursion-and-backtracking/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Recursion ও Backtracking 018 — Creating Strings permutations with duplicates — sorted করে নাও, প্রতি level-এ একই অক্ষর একবারই Medium" markdown="1">
<label class="practice-check-label" for="check-recursion-018"><input class="practice-check" type="checkbox" id="check-recursion-018" data-key="06-recursion-and-backtracking/problems/018-cses-creating-strings.md" disabled><span class="ds-status">সমাধান করেছি: 018 — Creating Strings</span></label>
<div class="practice-problem" markdown="1">

**[018 — Creating Strings](06-recursion-and-backtracking/problems/018-cses-creating-strings.md)**

<p class="practice-pattern">permutations with duplicates — sorted করে নাও, প্রতি level-এ একই অক্ষর একবারই · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](06-recursion-and-backtracking/problems/018-cses-creating-strings.md#problem) → [২. ভিত্তি](06-recursion-and-backtracking/problems/018-cses-creating-strings.md#idea) → [৩. ধাপ ও ছবি](06-recursion-and-backtracking/problems/018-cses-creating-strings.md#walkthrough) → [৪. কোড](06-recursion-and-backtracking/problems/018-cses-creating-strings.md#code) → [৫. খরচ ও ভুল](06-recursion-and-backtracking/problems/018-cses-creating-strings.md#cost) → [৬. নিজে আবার করুন](06-recursion-and-backtracking/problems/018-cses-creating-strings.md#practice)

আটকে গেলে section-এর [ভিত্তি](06-recursion-and-backtracking/concept.md) · [চিত্র ও ব্যবহার](06-recursion-and-backtracking/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="1" data-search="Recursion ও Backtracking 019 — N-Queens constraint backtracking — প্রতি row-এ এক queen, 3টা blocked-line set দিয়ে safe-check Hard" markdown="1">
<label class="practice-check-label" for="check-recursion-019"><input class="practice-check" type="checkbox" id="check-recursion-019" data-key="06-recursion-and-backtracking/problems/019-n-queens.md" disabled><span class="ds-status">সমাধান করেছি: 019 — N-Queens</span></label>
<div class="practice-problem" markdown="1">

**[019 — N-Queens](06-recursion-and-backtracking/problems/019-n-queens.md)**

<p class="practice-pattern">constraint backtracking — প্রতি row-এ এক queen, 3টা blocked-line set দিয়ে safe-check · Hard</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](06-recursion-and-backtracking/problems/019-n-queens.md#problem) → [২. ভিত্তি](06-recursion-and-backtracking/problems/019-n-queens.md#idea) → [৩. ধাপ ও ছবি](06-recursion-and-backtracking/problems/019-n-queens.md#walkthrough) → [৪. কোড](06-recursion-and-backtracking/problems/019-n-queens.md#code) → [৫. খরচ ও ভুল](06-recursion-and-backtracking/problems/019-n-queens.md#cost) → [৬. নিজে আবার করুন](06-recursion-and-backtracking/problems/019-n-queens.md#practice)

আটকে গেলে section-এর [ভিত্তি](06-recursion-and-backtracking/concept.md) · [চিত্র ও ব্যবহার](06-recursion-and-backtracking/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Recursion ও Backtracking 020 — N-Queens II constraint backtracking (count only) — leaf-এ বোর্ড না বানিয়ে শুধু 1 যোগ করো Hard" markdown="1">
<label class="practice-check-label" for="check-recursion-020"><input class="practice-check" type="checkbox" id="check-recursion-020" data-key="06-recursion-and-backtracking/problems/020-n-queens-ii.md" disabled><span class="ds-status">সমাধান করেছি: 020 — N-Queens II</span></label>
<div class="practice-problem" markdown="1">

**[020 — N-Queens II](06-recursion-and-backtracking/problems/020-n-queens-ii.md)**

<p class="practice-pattern">constraint backtracking (count only) — leaf-এ বোর্ড না বানিয়ে শুধু 1 যোগ করো · Hard</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](06-recursion-and-backtracking/problems/020-n-queens-ii.md#problem) → [২. ভিত্তি](06-recursion-and-backtracking/problems/020-n-queens-ii.md#idea) → [৩. ধাপ ও ছবি](06-recursion-and-backtracking/problems/020-n-queens-ii.md#walkthrough) → [৪. কোড](06-recursion-and-backtracking/problems/020-n-queens-ii.md#code) → [৫. খরচ ও ভুল](06-recursion-and-backtracking/problems/020-n-queens-ii.md#cost) → [৬. নিজে আবার করুন](06-recursion-and-backtracking/problems/020-n-queens-ii.md#practice)

আটকে গেলে section-এর [ভিত্তি](06-recursion-and-backtracking/concept.md) · [চিত্র ও ব্যবহার](06-recursion-and-backtracking/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Recursion ও Backtracking 021 — Chessboard and Queens N-Queens with blocked cells — safe-check-এর সাথে আরও একটা গেট: cell reserved কিনা Hard" markdown="1">
<label class="practice-check-label" for="check-recursion-021"><input class="practice-check" type="checkbox" id="check-recursion-021" data-key="06-recursion-and-backtracking/problems/021-cses-chessboard-and-queens.md" disabled><span class="ds-status">সমাধান করেছি: 021 — Chessboard and Queens</span></label>
<div class="practice-problem" markdown="1">

**[021 — Chessboard and Queens](06-recursion-and-backtracking/problems/021-cses-chessboard-and-queens.md)**

<p class="practice-pattern">N-Queens with blocked cells — safe-check-এর সাথে আরও একটা গেট: cell reserved কিনা · Hard</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](06-recursion-and-backtracking/problems/021-cses-chessboard-and-queens.md#problem) → [২. ভিত্তি](06-recursion-and-backtracking/problems/021-cses-chessboard-and-queens.md#idea) → [৩. ধাপ ও ছবি](06-recursion-and-backtracking/problems/021-cses-chessboard-and-queens.md#walkthrough) → [৪. কোড](06-recursion-and-backtracking/problems/021-cses-chessboard-and-queens.md#code) → [৫. খরচ ও ভুল](06-recursion-and-backtracking/problems/021-cses-chessboard-and-queens.md#cost) → [৬. নিজে আবার করুন](06-recursion-and-backtracking/problems/021-cses-chessboard-and-queens.md#practice)

আটকে গেলে section-এর [ভিত্তি](06-recursion-and-backtracking/concept.md) · [চিত্র ও ব্যবহার](06-recursion-and-backtracking/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Recursion ও Backtracking 022 — Sudoku Solver constraint backtracking — প্রতি খালি cell-এ 1–9 চেষ্টা, 3টা unit-set দিয়ে গেট Hard" markdown="1">
<label class="practice-check-label" for="check-recursion-022"><input class="practice-check" type="checkbox" id="check-recursion-022" data-key="06-recursion-and-backtracking/problems/022-sudoku-solver.md" disabled><span class="ds-status">সমাধান করেছি: 022 — Sudoku Solver</span></label>
<div class="practice-problem" markdown="1">

**[022 — Sudoku Solver](06-recursion-and-backtracking/problems/022-sudoku-solver.md)**

<p class="practice-pattern">constraint backtracking — প্রতি খালি cell-এ 1–9 চেষ্টা, 3টা unit-set দিয়ে গেট · Hard</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](06-recursion-and-backtracking/problems/022-sudoku-solver.md#problem) → [২. ভিত্তি](06-recursion-and-backtracking/problems/022-sudoku-solver.md#idea) → [৩. ধাপ ও ছবি](06-recursion-and-backtracking/problems/022-sudoku-solver.md#walkthrough) → [৪. কোড](06-recursion-and-backtracking/problems/022-sudoku-solver.md#code) → [৫. খরচ ও ভুল](06-recursion-and-backtracking/problems/022-sudoku-solver.md#cost) → [৬. নিজে আবার করুন](06-recursion-and-backtracking/problems/022-sudoku-solver.md#practice)

আটকে গেলে section-এর [ভিত্তি](06-recursion-and-backtracking/concept.md) · [চিত্র ও ব্যবহার](06-recursion-and-backtracking/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Recursion ও Backtracking 023 — Word Search II backtracking + trie — সব word একটা trie-তে রেখে grid-এ একবার DFS Hard" markdown="1">
<label class="practice-check-label" for="check-recursion-023"><input class="practice-check" type="checkbox" id="check-recursion-023" data-key="06-recursion-and-backtracking/problems/023-word-search-ii.md" disabled><span class="ds-status">সমাধান করেছি: 023 — Word Search II</span></label>
<div class="practice-problem" markdown="1">

**[023 — Word Search II](06-recursion-and-backtracking/problems/023-word-search-ii.md)**

<p class="practice-pattern">backtracking + trie — সব word একটা trie-তে রেখে grid-এ একবার DFS · Hard</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](06-recursion-and-backtracking/problems/023-word-search-ii.md#problem) → [২. ভিত্তি](06-recursion-and-backtracking/problems/023-word-search-ii.md#idea) → [৩. ধাপ ও ছবি](06-recursion-and-backtracking/problems/023-word-search-ii.md#walkthrough) → [৪. কোড](06-recursion-and-backtracking/problems/023-word-search-ii.md#code) → [৫. খরচ ও ভুল](06-recursion-and-backtracking/problems/023-word-search-ii.md#cost) → [৬. নিজে আবার করুন](06-recursion-and-backtracking/problems/023-word-search-ii.md#practice)

আটকে গেলে section-এর [ভিত্তি](06-recursion-and-backtracking/concept.md) · [চিত্র ও ব্যবহার](06-recursion-and-backtracking/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

</ol>
</details>

</div>

<div class="practice-chapter" data-family="trees" markdown="1">

## Tree ও BST {#section-trees}

<details class="practice-section" data-section="trees" markdown="1">
<summary>Tree ও BST <span class="section-count">25টি</span></summary>

**আগে বুঝে নিন:** node, child, root, recursion, height।

**আগে পড়ুন:** [ভিত্তি](07-trees/concept.md) · [চিত্র ও ব্যবহার](07-trees/visual-explanation.md)।

**Section-এর বড় challenge:** [ধাপে ধাপে প্রয়োগ করুন](guided-practice/trees.md)। সব individual problem-এর বিকল্প নয়; প্রধান কৌশল একসঙ্গে ব্যবহার করার পরীক্ষা।

<ol class="practice-list" markdown="1">

<li class="practice-item" data-course="M3" data-must="1" data-search="Tree ও BST 001 — Maximum Depth of Binary Tree Height (postorder) Easy" markdown="1">
<label class="practice-check-label" for="check-trees-001"><input class="practice-check" type="checkbox" id="check-trees-001" data-key="07-trees/problems/001-maximum-depth.md" disabled><span class="ds-status">সমাধান করেছি: 001 — Maximum Depth of Binary Tree</span></label>
<div class="practice-problem" markdown="1">

**[001 — Maximum Depth of Binary Tree](07-trees/problems/001-maximum-depth.md)**

<p class="practice-pattern">Height (postorder) · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M3</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](07-trees/problems/001-maximum-depth.md#problem) → [২. ভিত্তি](07-trees/problems/001-maximum-depth.md#idea) → [৩. ধাপ ও ছবি](07-trees/problems/001-maximum-depth.md#walkthrough) → [৪. কোড](07-trees/problems/001-maximum-depth.md#code) → [৫. খরচ ও ভুল](07-trees/problems/001-maximum-depth.md#cost) → [৬. নিজে আবার করুন](07-trees/problems/001-maximum-depth.md#practice)

আটকে গেলে section-এর [ভিত্তি](07-trees/concept.md) · [চিত্র ও ব্যবহার](07-trees/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M3" data-must="1" data-search="Tree ও BST 002 — Binary Tree Inorder Traversal Traversal order Easy" markdown="1">
<label class="practice-check-label" for="check-trees-002"><input class="practice-check" type="checkbox" id="check-trees-002" data-key="07-trees/problems/002-inorder-traversal.md" disabled><span class="ds-status">সমাধান করেছি: 002 — Binary Tree Inorder Traversal</span></label>
<div class="practice-problem" markdown="1">

**[002 — Binary Tree Inorder Traversal](07-trees/problems/002-inorder-traversal.md)**

<p class="practice-pattern">Traversal order · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M3</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](07-trees/problems/002-inorder-traversal.md#problem) → [২. ভিত্তি](07-trees/problems/002-inorder-traversal.md#idea) → [৩. ধাপ ও ছবি](07-trees/problems/002-inorder-traversal.md#walkthrough) → [৪. কোড](07-trees/problems/002-inorder-traversal.md#code) → [৫. খরচ ও ভুল](07-trees/problems/002-inorder-traversal.md#cost) → [৬. নিজে আবার করুন](07-trees/problems/002-inorder-traversal.md#practice)

আটকে গেলে section-এর [ভিত্তি](07-trees/concept.md) · [চিত্র ও ব্যবহার](07-trees/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M3" data-must="1" data-search="Tree ও BST 003 — Binary Tree Preorder Traversal Traversal order Easy" markdown="1">
<label class="practice-check-label" for="check-trees-003"><input class="practice-check" type="checkbox" id="check-trees-003" data-key="07-trees/problems/003-preorder-traversal.md" disabled><span class="ds-status">সমাধান করেছি: 003 — Binary Tree Preorder Traversal</span></label>
<div class="practice-problem" markdown="1">

**[003 — Binary Tree Preorder Traversal](07-trees/problems/003-preorder-traversal.md)**

<p class="practice-pattern">Traversal order · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M3</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](07-trees/problems/003-preorder-traversal.md#problem) → [২. ভিত্তি](07-trees/problems/003-preorder-traversal.md#idea) → [৩. ধাপ ও ছবি](07-trees/problems/003-preorder-traversal.md#walkthrough) → [৪. কোড](07-trees/problems/003-preorder-traversal.md#code) → [৫. খরচ ও ভুল](07-trees/problems/003-preorder-traversal.md#cost) → [৬. নিজে আবার করুন](07-trees/problems/003-preorder-traversal.md#practice)

আটকে গেলে section-এর [ভিত্তি](07-trees/concept.md) · [চিত্র ও ব্যবহার](07-trees/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M3" data-must="1" data-search="Tree ও BST 004 — Binary Tree Postorder Traversal Traversal order Easy" markdown="1">
<label class="practice-check-label" for="check-trees-004"><input class="practice-check" type="checkbox" id="check-trees-004" data-key="07-trees/problems/004-postorder-traversal.md" disabled><span class="ds-status">সমাধান করেছি: 004 — Binary Tree Postorder Traversal</span></label>
<div class="practice-problem" markdown="1">

**[004 — Binary Tree Postorder Traversal](07-trees/problems/004-postorder-traversal.md)**

<p class="practice-pattern">Traversal order · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M3</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](07-trees/problems/004-postorder-traversal.md#problem) → [২. ভিত্তি](07-trees/problems/004-postorder-traversal.md#idea) → [৩. ধাপ ও ছবি](07-trees/problems/004-postorder-traversal.md#walkthrough) → [৪. কোড](07-trees/problems/004-postorder-traversal.md#code) → [৫. খরচ ও ভুল](07-trees/problems/004-postorder-traversal.md#cost) → [৬. নিজে আবার করুন](07-trees/problems/004-postorder-traversal.md#practice)

আটকে গেলে section-এর [ভিত্তি](07-trees/concept.md) · [চিত্র ও ব্যবহার](07-trees/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M3" data-must="0" data-search="Tree ও BST 005 — Invert Binary Tree Tree shape Easy" markdown="1">
<label class="practice-check-label" for="check-trees-005"><input class="practice-check" type="checkbox" id="check-trees-005" data-key="07-trees/problems/005-invert-binary-tree.md" disabled><span class="ds-status">সমাধান করেছি: 005 — Invert Binary Tree</span></label>
<div class="practice-problem" markdown="1">

**[005 — Invert Binary Tree](07-trees/problems/005-invert-binary-tree.md)**

<p class="practice-pattern">Tree shape · Easy</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M3</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](07-trees/problems/005-invert-binary-tree.md#problem) → [২. ভিত্তি](07-trees/problems/005-invert-binary-tree.md#idea) → [৩. ধাপ ও ছবি](07-trees/problems/005-invert-binary-tree.md#walkthrough) → [৪. কোড](07-trees/problems/005-invert-binary-tree.md#code) → [৫. খরচ ও ভুল](07-trees/problems/005-invert-binary-tree.md#cost) → [৬. নিজে আবার করুন](07-trees/problems/005-invert-binary-tree.md#practice)

আটকে গেলে section-এর [ভিত্তি](07-trees/concept.md) · [চিত্র ও ব্যবহার](07-trees/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M3" data-must="0" data-search="Tree ও BST 006 — Same Tree Pair recursion Easy" markdown="1">
<label class="practice-check-label" for="check-trees-006"><input class="practice-check" type="checkbox" id="check-trees-006" data-key="07-trees/problems/006-same-tree.md" disabled><span class="ds-status">সমাধান করেছি: 006 — Same Tree</span></label>
<div class="practice-problem" markdown="1">

**[006 — Same Tree](07-trees/problems/006-same-tree.md)**

<p class="practice-pattern">Pair recursion · Easy</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M3</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](07-trees/problems/006-same-tree.md#problem) → [২. ভিত্তি](07-trees/problems/006-same-tree.md#idea) → [৩. ধাপ ও ছবি](07-trees/problems/006-same-tree.md#walkthrough) → [৪. কোড](07-trees/problems/006-same-tree.md#code) → [৫. খরচ ও ভুল](07-trees/problems/006-same-tree.md#cost) → [৬. নিজে আবার করুন](07-trees/problems/006-same-tree.md#practice)

আটকে গেলে section-এর [ভিত্তি](07-trees/concept.md) · [চিত্র ও ব্যবহার](07-trees/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M3" data-must="0" data-search="Tree ও BST 007 — Symmetric Tree Pair recursion (mirrored) Easy" markdown="1">
<label class="practice-check-label" for="check-trees-007"><input class="practice-check" type="checkbox" id="check-trees-007" data-key="07-trees/problems/007-symmetric-tree.md" disabled><span class="ds-status">সমাধান করেছি: 007 — Symmetric Tree</span></label>
<div class="practice-problem" markdown="1">

**[007 — Symmetric Tree](07-trees/problems/007-symmetric-tree.md)**

<p class="practice-pattern">Pair recursion (mirrored) · Easy</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M3</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](07-trees/problems/007-symmetric-tree.md#problem) → [২. ভিত্তি](07-trees/problems/007-symmetric-tree.md#idea) → [৩. ধাপ ও ছবি](07-trees/problems/007-symmetric-tree.md#walkthrough) → [৪. কোড](07-trees/problems/007-symmetric-tree.md#code) → [৫. খরচ ও ভুল](07-trees/problems/007-symmetric-tree.md#cost) → [৬. নিজে আবার করুন](07-trees/problems/007-symmetric-tree.md#practice)

আটকে গেলে section-এর [ভিত্তি](07-trees/concept.md) · [চিত্র ও ব্যবহার](07-trees/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M3" data-must="1" data-search="Tree ও BST 008 — Path Sum Path (carry state down) Easy" markdown="1">
<label class="practice-check-label" for="check-trees-008"><input class="practice-check" type="checkbox" id="check-trees-008" data-key="07-trees/problems/008-path-sum.md" disabled><span class="ds-status">সমাধান করেছি: 008 — Path Sum</span></label>
<div class="practice-problem" markdown="1">

**[008 — Path Sum](07-trees/problems/008-path-sum.md)**

<p class="practice-pattern">Path (carry state down) · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M3</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](07-trees/problems/008-path-sum.md#problem) → [২. ভিত্তি](07-trees/problems/008-path-sum.md#idea) → [৩. ধাপ ও ছবি](07-trees/problems/008-path-sum.md#walkthrough) → [৪. কোড](07-trees/problems/008-path-sum.md#code) → [৫. খরচ ও ভুল](07-trees/problems/008-path-sum.md#cost) → [৬. নিজে আবার করুন](07-trees/problems/008-path-sum.md#practice)

আটকে গেলে section-এর [ভিত্তি](07-trees/concept.md) · [চিত্র ও ব্যবহার](07-trees/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M3" data-must="1" data-search="Tree ও BST 009 — Search in a Binary Search Tree BST property Easy" markdown="1">
<label class="practice-check-label" for="check-trees-009"><input class="practice-check" type="checkbox" id="check-trees-009" data-key="07-trees/problems/009-search-in-bst.md" disabled><span class="ds-status">সমাধান করেছি: 009 — Search in a Binary Search Tree</span></label>
<div class="practice-problem" markdown="1">

**[009 — Search in a Binary Search Tree](07-trees/problems/009-search-in-bst.md)**

<p class="practice-pattern">BST property · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M3</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](07-trees/problems/009-search-in-bst.md#problem) → [২. ভিত্তি](07-trees/problems/009-search-in-bst.md#idea) → [৩. ধাপ ও ছবি](07-trees/problems/009-search-in-bst.md#walkthrough) → [৪. কোড](07-trees/problems/009-search-in-bst.md#code) → [৫. খরচ ও ভুল](07-trees/problems/009-search-in-bst.md#cost) → [৬. নিজে আবার করুন](07-trees/problems/009-search-in-bst.md#practice)

আটকে গেলে section-এর [ভিত্তি](07-trees/concept.md) · [চিত্র ও ব্যবহার](07-trees/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M3" data-must="1" data-search="Tree ও BST 010 — Balanced Binary Tree Height + verdict Easy" markdown="1">
<label class="practice-check-label" for="check-trees-010"><input class="practice-check" type="checkbox" id="check-trees-010" data-key="07-trees/problems/010-balanced-binary-tree.md" disabled><span class="ds-status">সমাধান করেছি: 010 — Balanced Binary Tree</span></label>
<div class="practice-problem" markdown="1">

**[010 — Balanced Binary Tree](07-trees/problems/010-balanced-binary-tree.md)**

<p class="practice-pattern">Height + verdict · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M3</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](07-trees/problems/010-balanced-binary-tree.md#problem) → [২. ভিত্তি](07-trees/problems/010-balanced-binary-tree.md#idea) → [৩. ধাপ ও ছবি](07-trees/problems/010-balanced-binary-tree.md#walkthrough) → [৪. কোড](07-trees/problems/010-balanced-binary-tree.md#code) → [৫. খরচ ও ভুল](07-trees/problems/010-balanced-binary-tree.md#cost) → [৬. নিজে আবার করুন](07-trees/problems/010-balanced-binary-tree.md#practice)

আটকে গেলে section-এর [ভিত্তি](07-trees/concept.md) · [চিত্র ও ব্যবহার](07-trees/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M3" data-must="0" data-search="Tree ও BST 011 — Minimum Depth of Binary Tree Level order early-exit Easy" markdown="1">
<label class="practice-check-label" for="check-trees-011"><input class="practice-check" type="checkbox" id="check-trees-011" data-key="07-trees/problems/011-minimum-depth.md" disabled><span class="ds-status">সমাধান করেছি: 011 — Minimum Depth of Binary Tree</span></label>
<div class="practice-problem" markdown="1">

**[011 — Minimum Depth of Binary Tree](07-trees/problems/011-minimum-depth.md)**

<p class="practice-pattern">Level order early-exit · Easy</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M3</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](07-trees/problems/011-minimum-depth.md#problem) → [২. ভিত্তি](07-trees/problems/011-minimum-depth.md#idea) → [৩. ধাপ ও ছবি](07-trees/problems/011-minimum-depth.md#walkthrough) → [৪. কোড](07-trees/problems/011-minimum-depth.md#code) → [৫. খরচ ও ভুল](07-trees/problems/011-minimum-depth.md#cost) → [৬. নিজে আবার করুন](07-trees/problems/011-minimum-depth.md#practice)

আটকে গেলে section-এর [ভিত্তি](07-trees/concept.md) · [চিত্র ও ব্যবহার](07-trees/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M3" data-must="1" data-search="Tree ও BST 012 — Binary Tree Level Order Traversal Level order (queue) Medium" markdown="1">
<label class="practice-check-label" for="check-trees-012"><input class="practice-check" type="checkbox" id="check-trees-012" data-key="07-trees/problems/012-level-order-traversal.md" disabled><span class="ds-status">সমাধান করেছি: 012 — Binary Tree Level Order Traversal</span></label>
<div class="practice-problem" markdown="1">

**[012 — Binary Tree Level Order Traversal](07-trees/problems/012-level-order-traversal.md)**

<p class="practice-pattern">Level order (queue) · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M3</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](07-trees/problems/012-level-order-traversal.md#problem) → [২. ভিত্তি](07-trees/problems/012-level-order-traversal.md#idea) → [৩. ধাপ ও ছবি](07-trees/problems/012-level-order-traversal.md#walkthrough) → [৪. কোড](07-trees/problems/012-level-order-traversal.md#code) → [৫. খরচ ও ভুল](07-trees/problems/012-level-order-traversal.md#cost) → [৬. নিজে আবার করুন](07-trees/problems/012-level-order-traversal.md#practice)

আটকে গেলে section-এর [ভিত্তি](07-trees/concept.md) · [চিত্র ও ব্যবহার](07-trees/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M3" data-must="0" data-search="Tree ও BST 013 — Binary Tree Right Side View Level order Medium" markdown="1">
<label class="practice-check-label" for="check-trees-013"><input class="practice-check" type="checkbox" id="check-trees-013" data-key="07-trees/problems/013-right-side-view.md" disabled><span class="ds-status">সমাধান করেছি: 013 — Binary Tree Right Side View</span></label>
<div class="practice-problem" markdown="1">

**[013 — Binary Tree Right Side View](07-trees/problems/013-right-side-view.md)**

<p class="practice-pattern">Level order · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M3</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](07-trees/problems/013-right-side-view.md#problem) → [২. ভিত্তি](07-trees/problems/013-right-side-view.md#idea) → [৩. ধাপ ও ছবি](07-trees/problems/013-right-side-view.md#walkthrough) → [৪. কোড](07-trees/problems/013-right-side-view.md#code) → [৫. খরচ ও ভুল](07-trees/problems/013-right-side-view.md#cost) → [৬. নিজে আবার করুন](07-trees/problems/013-right-side-view.md#practice)

আটকে গেলে section-এর [ভিত্তি](07-trees/concept.md) · [চিত্র ও ব্যবহার](07-trees/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M3" data-must="1" data-search="Tree ও BST 014 — Validate Binary Search Tree BST bounds Medium" markdown="1">
<label class="practice-check-label" for="check-trees-014"><input class="practice-check" type="checkbox" id="check-trees-014" data-key="07-trees/problems/014-validate-bst.md" disabled><span class="ds-status">সমাধান করেছি: 014 — Validate Binary Search Tree</span></label>
<div class="practice-problem" markdown="1">

**[014 — Validate Binary Search Tree](07-trees/problems/014-validate-bst.md)**

<p class="practice-pattern">BST bounds · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M3</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](07-trees/problems/014-validate-bst.md#problem) → [২. ভিত্তি](07-trees/problems/014-validate-bst.md#idea) → [৩. ধাপ ও ছবি](07-trees/problems/014-validate-bst.md#walkthrough) → [৪. কোড](07-trees/problems/014-validate-bst.md#code) → [৫. খরচ ও ভুল](07-trees/problems/014-validate-bst.md#cost) → [৬. নিজে আবার করুন](07-trees/problems/014-validate-bst.md#practice)

আটকে গেলে section-এর [ভিত্তি](07-trees/concept.md) · [চিত্র ও ব্যবহার](07-trees/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M3" data-must="1" data-search="Tree ও BST 015 — Kth Smallest Element in a BST Inorder = sorted Medium" markdown="1">
<label class="practice-check-label" for="check-trees-015"><input class="practice-check" type="checkbox" id="check-trees-015" data-key="07-trees/problems/015-kth-smallest-bst.md" disabled><span class="ds-status">সমাধান করেছি: 015 — Kth Smallest Element in a BST</span></label>
<div class="practice-problem" markdown="1">

**[015 — Kth Smallest Element in a BST](07-trees/problems/015-kth-smallest-bst.md)**

<p class="practice-pattern">Inorder = sorted · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M3</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](07-trees/problems/015-kth-smallest-bst.md#problem) → [২. ভিত্তি](07-trees/problems/015-kth-smallest-bst.md#idea) → [৩. ধাপ ও ছবি](07-trees/problems/015-kth-smallest-bst.md#walkthrough) → [৪. কোড](07-trees/problems/015-kth-smallest-bst.md#code) → [৫. খরচ ও ভুল](07-trees/problems/015-kth-smallest-bst.md#cost) → [৬. নিজে আবার করুন](07-trees/problems/015-kth-smallest-bst.md#practice)

আটকে গেলে section-এর [ভিত্তি](07-trees/concept.md) · [চিত্র ও ব্যবহার](07-trees/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M3" data-must="1" data-search="Tree ও BST 016 — Lowest Common Ancestor of a Binary Search Tree BST property + LCA Medium" markdown="1">
<label class="practice-check-label" for="check-trees-016"><input class="practice-check" type="checkbox" id="check-trees-016" data-key="07-trees/problems/016-lca-of-bst.md" disabled><span class="ds-status">সমাধান করেছি: 016 — Lowest Common Ancestor of a Binary Search Tree</span></label>
<div class="practice-problem" markdown="1">

**[016 — Lowest Common Ancestor of a Binary Search Tree](07-trees/problems/016-lca-of-bst.md)**

<p class="practice-pattern">BST property + LCA · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M3</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](07-trees/problems/016-lca-of-bst.md#problem) → [২. ভিত্তি](07-trees/problems/016-lca-of-bst.md#idea) → [৩. ধাপ ও ছবি](07-trees/problems/016-lca-of-bst.md#walkthrough) → [৪. কোড](07-trees/problems/016-lca-of-bst.md#code) → [৫. খরচ ও ভুল](07-trees/problems/016-lca-of-bst.md#cost) → [৬. নিজে আবার করুন](07-trees/problems/016-lca-of-bst.md#practice)

আটকে গেলে section-এর [ভিত্তি](07-trees/concept.md) · [চিত্র ও ব্যবহার](07-trees/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M3" data-must="1" data-search="Tree ও BST 017 — Lowest Common Ancestor of a Binary Tree LCA (general, postorder) Medium" markdown="1">
<label class="practice-check-label" for="check-trees-017"><input class="practice-check" type="checkbox" id="check-trees-017" data-key="07-trees/problems/017-lca-of-binary-tree.md" disabled><span class="ds-status">সমাধান করেছি: 017 — Lowest Common Ancestor of a Binary Tree</span></label>
<div class="practice-problem" markdown="1">

**[017 — Lowest Common Ancestor of a Binary Tree](07-trees/problems/017-lca-of-binary-tree.md)**

<p class="practice-pattern">LCA (general, postorder) · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M3</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](07-trees/problems/017-lca-of-binary-tree.md#problem) → [২. ভিত্তি](07-trees/problems/017-lca-of-binary-tree.md#idea) → [৩. ধাপ ও ছবি](07-trees/problems/017-lca-of-binary-tree.md#walkthrough) → [৪. কোড](07-trees/problems/017-lca-of-binary-tree.md#code) → [৫. খরচ ও ভুল](07-trees/problems/017-lca-of-binary-tree.md#cost) → [৬. নিজে আবার করুন](07-trees/problems/017-lca-of-binary-tree.md#practice)

আটকে গেলে section-এর [ভিত্তি](07-trees/concept.md) · [চিত্র ও ব্যবহার](07-trees/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M3" data-must="1" data-search="Tree ও BST 018 — Diameter of Binary Tree Diameter via height Medium" markdown="1">
<label class="practice-check-label" for="check-trees-018"><input class="practice-check" type="checkbox" id="check-trees-018" data-key="07-trees/problems/018-diameter-of-binary-tree.md" disabled><span class="ds-status">সমাধান করেছি: 018 — Diameter of Binary Tree</span></label>
<div class="practice-problem" markdown="1">

**[018 — Diameter of Binary Tree](07-trees/problems/018-diameter-of-binary-tree.md)**

<p class="practice-pattern">Diameter via height · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M3</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](07-trees/problems/018-diameter-of-binary-tree.md#problem) → [২. ভিত্তি](07-trees/problems/018-diameter-of-binary-tree.md#idea) → [৩. ধাপ ও ছবি](07-trees/problems/018-diameter-of-binary-tree.md#walkthrough) → [৪. কোড](07-trees/problems/018-diameter-of-binary-tree.md#code) → [৫. খরচ ও ভুল](07-trees/problems/018-diameter-of-binary-tree.md#cost) → [৬. নিজে আবার করুন](07-trees/problems/018-diameter-of-binary-tree.md#practice)

আটকে গেলে section-এর [ভিত্তি](07-trees/concept.md) · [চিত্র ও ব্যবহার](07-trees/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M3" data-must="0" data-search="Tree ও BST 019 — Path Sum II Path + backtracking Medium" markdown="1">
<label class="practice-check-label" for="check-trees-019"><input class="practice-check" type="checkbox" id="check-trees-019" data-key="07-trees/problems/019-path-sum-ii.md" disabled><span class="ds-status">সমাধান করেছি: 019 — Path Sum II</span></label>
<div class="practice-problem" markdown="1">

**[019 — Path Sum II](07-trees/problems/019-path-sum-ii.md)**

<p class="practice-pattern">Path + backtracking · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M3</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](07-trees/problems/019-path-sum-ii.md#problem) → [২. ভিত্তি](07-trees/problems/019-path-sum-ii.md#idea) → [৩. ধাপ ও ছবি](07-trees/problems/019-path-sum-ii.md#walkthrough) → [৪. কোড](07-trees/problems/019-path-sum-ii.md#code) → [৫. খরচ ও ভুল](07-trees/problems/019-path-sum-ii.md#cost) → [৬. নিজে আবার করুন](07-trees/problems/019-path-sum-ii.md#practice)

আটকে গেলে section-এর [ভিত্তি](07-trees/concept.md) · [চিত্র ও ব্যবহার](07-trees/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M3" data-must="0" data-search="Tree ও BST 020 — Subtree of Another Tree Subtree comparison Medium" markdown="1">
<label class="practice-check-label" for="check-trees-020"><input class="practice-check" type="checkbox" id="check-trees-020" data-key="07-trees/problems/020-subtree-of-another-tree.md" disabled><span class="ds-status">সমাধান করেছি: 020 — Subtree of Another Tree</span></label>
<div class="practice-problem" markdown="1">

**[020 — Subtree of Another Tree](07-trees/problems/020-subtree-of-another-tree.md)**

<p class="practice-pattern">Subtree comparison · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M3</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](07-trees/problems/020-subtree-of-another-tree.md#problem) → [২. ভিত্তি](07-trees/problems/020-subtree-of-another-tree.md#idea) → [৩. ধাপ ও ছবি](07-trees/problems/020-subtree-of-another-tree.md#walkthrough) → [৪. কোড](07-trees/problems/020-subtree-of-another-tree.md#code) → [৫. খরচ ও ভুল](07-trees/problems/020-subtree-of-another-tree.md#cost) → [৬. নিজে আবার করুন](07-trees/problems/020-subtree-of-another-tree.md#practice)

আটকে গেলে section-এর [ভিত্তি](07-trees/concept.md) · [চিত্র ও ব্যবহার](07-trees/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M3" data-must="1" data-search="Tree ও BST 021 — Construct Binary Tree from Preorder and Inorder Traversal Construction Medium" markdown="1">
<label class="practice-check-label" for="check-trees-021"><input class="practice-check" type="checkbox" id="check-trees-021" data-key="07-trees/problems/021-construct-from-pre-in.md" disabled><span class="ds-status">সমাধান করেছি: 021 — Construct Binary Tree from Preorder and Inorder Traversal</span></label>
<div class="practice-problem" markdown="1">

**[021 — Construct Binary Tree from Preorder and Inorder Traversal](07-trees/problems/021-construct-from-pre-in.md)**

<p class="practice-pattern">Construction · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M3</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](07-trees/problems/021-construct-from-pre-in.md#problem) → [২. ভিত্তি](07-trees/problems/021-construct-from-pre-in.md#idea) → [৩. ধাপ ও ছবি](07-trees/problems/021-construct-from-pre-in.md#walkthrough) → [৪. কোড](07-trees/problems/021-construct-from-pre-in.md#code) → [৫. খরচ ও ভুল](07-trees/problems/021-construct-from-pre-in.md#cost) → [৬. নিজে আবার করুন](07-trees/problems/021-construct-from-pre-in.md#practice)

আটকে গেলে section-এর [ভিত্তি](07-trees/concept.md) · [চিত্র ও ব্যবহার](07-trees/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M3" data-must="0" data-search="Tree ও BST 022 — Subordinates Subtree sizes (general tree) Medium" markdown="1">
<label class="practice-check-label" for="check-trees-022"><input class="practice-check" type="checkbox" id="check-trees-022" data-key="07-trees/problems/022-cses-subordinates.md" disabled><span class="ds-status">সমাধান করেছি: 022 — Subordinates</span></label>
<div class="practice-problem" markdown="1">

**[022 — Subordinates](07-trees/problems/022-cses-subordinates.md)**

<p class="practice-pattern">Subtree sizes (general tree) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M3</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](07-trees/problems/022-cses-subordinates.md#problem) → [২. ভিত্তি](07-trees/problems/022-cses-subordinates.md#idea) → [৩. ধাপ ও ছবি](07-trees/problems/022-cses-subordinates.md#walkthrough) → [৪. কোড](07-trees/problems/022-cses-subordinates.md#code) → [৫. খরচ ও ভুল](07-trees/problems/022-cses-subordinates.md#cost) → [৬. নিজে আবার করুন](07-trees/problems/022-cses-subordinates.md#practice)

আটকে গেলে section-এর [ভিত্তি](07-trees/concept.md) · [চিত্র ও ব্যবহার](07-trees/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M3" data-must="0" data-search="Tree ও BST 023 — Binary Tree Maximum Path Sum Diameter idea + values Hard" markdown="1">
<label class="practice-check-label" for="check-trees-023"><input class="practice-check" type="checkbox" id="check-trees-023" data-key="07-trees/problems/023-max-path-sum.md" disabled><span class="ds-status">সমাধান করেছি: 023 — Binary Tree Maximum Path Sum</span></label>
<div class="practice-problem" markdown="1">

**[023 — Binary Tree Maximum Path Sum](07-trees/problems/023-max-path-sum.md)**

<p class="practice-pattern">Diameter idea + values · Hard</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M3</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](07-trees/problems/023-max-path-sum.md#problem) → [২. ভিত্তি](07-trees/problems/023-max-path-sum.md#idea) → [৩. ধাপ ও ছবি](07-trees/problems/023-max-path-sum.md#walkthrough) → [৪. কোড](07-trees/problems/023-max-path-sum.md#code) → [৫. খরচ ও ভুল](07-trees/problems/023-max-path-sum.md#cost) → [৬. নিজে আবার করুন](07-trees/problems/023-max-path-sum.md#practice)

আটকে গেলে section-এর [ভিত্তি](07-trees/concept.md) · [চিত্র ও ব্যবহার](07-trees/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M3" data-must="1" data-search="Tree ও BST 024 — Serialize and Deserialize Binary Tree Preorder construction Hard" markdown="1">
<label class="practice-check-label" for="check-trees-024"><input class="practice-check" type="checkbox" id="check-trees-024" data-key="07-trees/problems/024-serialize-deserialize.md" disabled><span class="ds-status">সমাধান করেছি: 024 — Serialize and Deserialize Binary Tree</span></label>
<div class="practice-problem" markdown="1">

**[024 — Serialize and Deserialize Binary Tree](07-trees/problems/024-serialize-deserialize.md)**

<p class="practice-pattern">Preorder construction · Hard</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M3</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](07-trees/problems/024-serialize-deserialize.md#problem) → [২. ভিত্তি](07-trees/problems/024-serialize-deserialize.md#idea) → [৩. ধাপ ও ছবি](07-trees/problems/024-serialize-deserialize.md#walkthrough) → [৪. কোড](07-trees/problems/024-serialize-deserialize.md#code) → [৫. খরচ ও ভুল](07-trees/problems/024-serialize-deserialize.md#cost) → [৬. নিজে আবার করুন](07-trees/problems/024-serialize-deserialize.md#practice)

আটকে গেলে section-এর [ভিত্তি](07-trees/concept.md) · [চিত্র ও ব্যবহার](07-trees/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M3" data-must="0" data-search="Tree ও BST 025 — Tree Diameter Diameter at CP scale Hard" markdown="1">
<label class="practice-check-label" for="check-trees-025"><input class="practice-check" type="checkbox" id="check-trees-025" data-key="07-trees/problems/025-cses-tree-diameter.md" disabled><span class="ds-status">সমাধান করেছি: 025 — Tree Diameter</span></label>
<div class="practice-problem" markdown="1">

**[025 — Tree Diameter](07-trees/problems/025-cses-tree-diameter.md)**

<p class="practice-pattern">Diameter at CP scale · Hard</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M3</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](07-trees/problems/025-cses-tree-diameter.md#problem) → [২. ভিত্তি](07-trees/problems/025-cses-tree-diameter.md#idea) → [৩. ধাপ ও ছবি](07-trees/problems/025-cses-tree-diameter.md#walkthrough) → [৪. কোড](07-trees/problems/025-cses-tree-diameter.md#code) → [৫. খরচ ও ভুল](07-trees/problems/025-cses-tree-diameter.md#cost) → [৬. নিজে আবার করুন](07-trees/problems/025-cses-tree-diameter.md#practice)

আটকে গেলে section-এর [ভিত্তি](07-trees/concept.md) · [চিত্র ও ব্যবহার](07-trees/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

</ol>
</details>

</div>

<div class="practice-chapter" data-family="heap" markdown="1">

## Heap ও Priority Queue {#section-heap}

<details class="practice-section" data-section="heap" markdown="1">
<summary>Heap ও Priority Queue <span class="section-count">22টি</span></summary>

**আগে বুঝে নিন:** complete tree, heap order, min/max, priority।

**আগে পড়ুন:** [ভিত্তি](08-heap-priority-queue/concept.md) · [চিত্র ও ব্যবহার](08-heap-priority-queue/visual-explanation.md)।

**Section-এর বড় challenge:** [ধাপে ধাপে প্রয়োগ করুন](guided-practice/heap.md)। সব individual problem-এর বিকল্প নয়; প্রধান কৌশল একসঙ্গে ব্যবহার করার পরীক্ষা।

<ol class="practice-list" markdown="1">

<li class="practice-item" data-course="M5" data-must="1" data-search="Heap ও Priority Queue 001 — Last Stone Weight Heap + greedy (smash two largest) Easy" markdown="1">
<label class="practice-check-label" for="check-heap-001"><input class="practice-check" type="checkbox" id="check-heap-001" data-key="08-heap-priority-queue/problems/001-last-stone-weight.md" disabled><span class="ds-status">সমাধান করেছি: 001 — Last Stone Weight</span></label>
<div class="practice-problem" markdown="1">

**[001 — Last Stone Weight](08-heap-priority-queue/problems/001-last-stone-weight.md)**

<p class="practice-pattern">Heap + greedy (smash two largest) · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M5</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](08-heap-priority-queue/problems/001-last-stone-weight.md#problem) → [২. ভিত্তি](08-heap-priority-queue/problems/001-last-stone-weight.md#idea) → [৩. ধাপ ও ছবি](08-heap-priority-queue/problems/001-last-stone-weight.md#walkthrough) → [৪. কোড](08-heap-priority-queue/problems/001-last-stone-weight.md#code) → [৫. খরচ ও ভুল](08-heap-priority-queue/problems/001-last-stone-weight.md#cost) → [৬. নিজে আবার করুন](08-heap-priority-queue/problems/001-last-stone-weight.md#practice)

আটকে গেলে section-এর [ভিত্তি](08-heap-priority-queue/concept.md) · [চিত্র ও ব্যবহার](08-heap-priority-queue/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M5" data-must="1" data-search="Heap ও Priority Queue 002 — Kth Largest Element in a Stream Top-K (size-k min-heap) Easy" markdown="1">
<label class="practice-check-label" for="check-heap-002"><input class="practice-check" type="checkbox" id="check-heap-002" data-key="08-heap-priority-queue/problems/002-kth-largest-element-in-a-stream.md" disabled><span class="ds-status">সমাধান করেছি: 002 — Kth Largest Element in a Stream</span></label>
<div class="practice-problem" markdown="1">

**[002 — Kth Largest Element in a Stream](08-heap-priority-queue/problems/002-kth-largest-element-in-a-stream.md)**

<p class="practice-pattern">Top-K (size-k min-heap) · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M5</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](08-heap-priority-queue/problems/002-kth-largest-element-in-a-stream.md#problem) → [২. ভিত্তি](08-heap-priority-queue/problems/002-kth-largest-element-in-a-stream.md#idea) → [৩. ধাপ ও ছবি](08-heap-priority-queue/problems/002-kth-largest-element-in-a-stream.md#walkthrough) → [৪. কোড](08-heap-priority-queue/problems/002-kth-largest-element-in-a-stream.md#code) → [৫. খরচ ও ভুল](08-heap-priority-queue/problems/002-kth-largest-element-in-a-stream.md#cost) → [৬. নিজে আবার করুন](08-heap-priority-queue/problems/002-kth-largest-element-in-a-stream.md#practice)

আটকে গেলে section-এর [ভিত্তি](08-heap-priority-queue/concept.md) · [চিত্র ও ব্যবহার](08-heap-priority-queue/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M5" data-must="0" data-search="Heap ও Priority Queue 003 — Relative Ranks Heap / sorting warm-up Easy" markdown="1">
<label class="practice-check-label" for="check-heap-003"><input class="practice-check" type="checkbox" id="check-heap-003" data-key="08-heap-priority-queue/problems/003-relative-ranks.md" disabled><span class="ds-status">সমাধান করেছি: 003 — Relative Ranks</span></label>
<div class="practice-problem" markdown="1">

**[003 — Relative Ranks](08-heap-priority-queue/problems/003-relative-ranks.md)**

<p class="practice-pattern">Heap / sorting warm-up · Easy</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M5</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](08-heap-priority-queue/problems/003-relative-ranks.md#problem) → [২. ভিত্তি](08-heap-priority-queue/problems/003-relative-ranks.md#idea) → [৩. ধাপ ও ছবি](08-heap-priority-queue/problems/003-relative-ranks.md#walkthrough) → [৪. কোড](08-heap-priority-queue/problems/003-relative-ranks.md#code) → [৫. খরচ ও ভুল](08-heap-priority-queue/problems/003-relative-ranks.md#cost) → [৬. নিজে আবার করুন](08-heap-priority-queue/problems/003-relative-ranks.md#practice)

আটকে গেলে section-এর [ভিত্তি](08-heap-priority-queue/concept.md) · [চিত্র ও ব্যবহার](08-heap-priority-queue/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M4" data-must="0" data-search="Heap ও Priority Queue 004 — Ferris Wheel Greedy pairing of extremes Easy" markdown="1">
<label class="practice-check-label" for="check-heap-004"><input class="practice-check" type="checkbox" id="check-heap-004" data-key="08-heap-priority-queue/problems/004-ferris-wheel.md" disabled><span class="ds-status">সমাধান করেছি: 004 — Ferris Wheel</span></label>
<div class="practice-problem" markdown="1">

**[004 — Ferris Wheel](08-heap-priority-queue/problems/004-ferris-wheel.md)**

<p class="practice-pattern">Greedy pairing of extremes · Easy</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](08-heap-priority-queue/problems/004-ferris-wheel.md#problem) → [২. ভিত্তি](08-heap-priority-queue/problems/004-ferris-wheel.md#idea) → [৩. ধাপ ও ছবি](08-heap-priority-queue/problems/004-ferris-wheel.md#walkthrough) → [৪. কোড](08-heap-priority-queue/problems/004-ferris-wheel.md#code) → [৫. খরচ ও ভুল](08-heap-priority-queue/problems/004-ferris-wheel.md#cost) → [৬. নিজে আবার করুন](08-heap-priority-queue/problems/004-ferris-wheel.md#practice)

আটকে গেলে section-এর [ভিত্তি](08-heap-priority-queue/concept.md) · [চিত্র ও ব্যবহার](08-heap-priority-queue/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M5" data-must="1" data-search="Heap ও Priority Queue 005 — Kth Largest Element in an Array Top-K (size-k min-heap) Medium" markdown="1">
<label class="practice-check-label" for="check-heap-005"><input class="practice-check" type="checkbox" id="check-heap-005" data-key="08-heap-priority-queue/problems/005-kth-largest-element-in-an-array.md" disabled><span class="ds-status">সমাধান করেছি: 005 — Kth Largest Element in an Array</span></label>
<div class="practice-problem" markdown="1">

**[005 — Kth Largest Element in an Array](08-heap-priority-queue/problems/005-kth-largest-element-in-an-array.md)**

<p class="practice-pattern">Top-K (size-k min-heap) · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M5</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](08-heap-priority-queue/problems/005-kth-largest-element-in-an-array.md#problem) → [২. ভিত্তি](08-heap-priority-queue/problems/005-kth-largest-element-in-an-array.md#idea) → [৩. ধাপ ও ছবি](08-heap-priority-queue/problems/005-kth-largest-element-in-an-array.md#walkthrough) → [৪. কোড](08-heap-priority-queue/problems/005-kth-largest-element-in-an-array.md#code) → [৫. খরচ ও ভুল](08-heap-priority-queue/problems/005-kth-largest-element-in-an-array.md#cost) → [৬. নিজে আবার করুন](08-heap-priority-queue/problems/005-kth-largest-element-in-an-array.md#practice)

আটকে গেলে section-এর [ভিত্তি](08-heap-priority-queue/concept.md) · [চিত্র ও ব্যবহার](08-heap-priority-queue/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M5" data-must="1" data-search="Heap ও Priority Queue 006 — Top K Frequent Elements Top-K + counting Medium" markdown="1">
<label class="practice-check-label" for="check-heap-006"><input class="practice-check" type="checkbox" id="check-heap-006" data-key="08-heap-priority-queue/problems/006-top-k-frequent-elements.md" disabled><span class="ds-status">সমাধান করেছি: 006 — Top K Frequent Elements</span></label>
<div class="practice-problem" markdown="1">

**[006 — Top K Frequent Elements](08-heap-priority-queue/problems/006-top-k-frequent-elements.md)**

<p class="practice-pattern">Top-K + counting · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M5</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](08-heap-priority-queue/problems/006-top-k-frequent-elements.md#problem) → [২. ভিত্তি](08-heap-priority-queue/problems/006-top-k-frequent-elements.md#idea) → [৩. ধাপ ও ছবি](08-heap-priority-queue/problems/006-top-k-frequent-elements.md#walkthrough) → [৪. কোড](08-heap-priority-queue/problems/006-top-k-frequent-elements.md#code) → [৫. খরচ ও ভুল](08-heap-priority-queue/problems/006-top-k-frequent-elements.md#cost) → [৬. নিজে আবার করুন](08-heap-priority-queue/problems/006-top-k-frequent-elements.md#practice)

আটকে গেলে section-এর [ভিত্তি](08-heap-priority-queue/concept.md) · [চিত্র ও ব্যবহার](08-heap-priority-queue/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M5" data-must="1" data-search="Heap ও Priority Queue 007 — K Closest Points to Origin Top-K (max-heap of size k) Medium" markdown="1">
<label class="practice-check-label" for="check-heap-007"><input class="practice-check" type="checkbox" id="check-heap-007" data-key="08-heap-priority-queue/problems/007-k-closest-points-to-origin.md" disabled><span class="ds-status">সমাধান করেছি: 007 — K Closest Points to Origin</span></label>
<div class="practice-problem" markdown="1">

**[007 — K Closest Points to Origin](08-heap-priority-queue/problems/007-k-closest-points-to-origin.md)**

<p class="practice-pattern">Top-K (max-heap of size k) · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M5</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](08-heap-priority-queue/problems/007-k-closest-points-to-origin.md#problem) → [২. ভিত্তি](08-heap-priority-queue/problems/007-k-closest-points-to-origin.md#idea) → [৩. ধাপ ও ছবি](08-heap-priority-queue/problems/007-k-closest-points-to-origin.md#walkthrough) → [৪. কোড](08-heap-priority-queue/problems/007-k-closest-points-to-origin.md#code) → [৫. খরচ ও ভুল](08-heap-priority-queue/problems/007-k-closest-points-to-origin.md#cost) → [৬. নিজে আবার করুন](08-heap-priority-queue/problems/007-k-closest-points-to-origin.md#practice)

আটকে গেলে section-এর [ভিত্তি](08-heap-priority-queue/concept.md) · [চিত্র ও ব্যবহার](08-heap-priority-queue/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M5" data-must="0" data-search="Heap ও Priority Queue 008 — Sort Characters By Frequency Heap + counting Medium" markdown="1">
<label class="practice-check-label" for="check-heap-008"><input class="practice-check" type="checkbox" id="check-heap-008" data-key="08-heap-priority-queue/problems/008-sort-characters-by-frequency.md" disabled><span class="ds-status">সমাধান করেছি: 008 — Sort Characters By Frequency</span></label>
<div class="practice-problem" markdown="1">

**[008 — Sort Characters By Frequency](08-heap-priority-queue/problems/008-sort-characters-by-frequency.md)**

<p class="practice-pattern">Heap + counting · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M5</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](08-heap-priority-queue/problems/008-sort-characters-by-frequency.md#problem) → [২. ভিত্তি](08-heap-priority-queue/problems/008-sort-characters-by-frequency.md#idea) → [৩. ধাপ ও ছবি](08-heap-priority-queue/problems/008-sort-characters-by-frequency.md#walkthrough) → [৪. কোড](08-heap-priority-queue/problems/008-sort-characters-by-frequency.md#code) → [৫. খরচ ও ভুল](08-heap-priority-queue/problems/008-sort-characters-by-frequency.md#cost) → [৬. নিজে আবার করুন](08-heap-priority-queue/problems/008-sort-characters-by-frequency.md#practice)

আটকে গেলে section-এর [ভিত্তি](08-heap-priority-queue/concept.md) · [চিত্র ও ব্যবহার](08-heap-priority-queue/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M5" data-must="1" data-search="Heap ও Priority Queue 009 — Meeting Rooms II Scheduling by earliest end Medium" markdown="1">
<label class="practice-check-label" for="check-heap-009"><input class="practice-check" type="checkbox" id="check-heap-009" data-key="08-heap-priority-queue/problems/009-meeting-rooms-ii.md" disabled><span class="ds-status">সমাধান করেছি: 009 — Meeting Rooms II</span></label>
<div class="practice-problem" markdown="1">

**[009 — Meeting Rooms II](08-heap-priority-queue/problems/009-meeting-rooms-ii.md)**

<p class="practice-pattern">Scheduling by earliest end · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M5</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](08-heap-priority-queue/problems/009-meeting-rooms-ii.md#problem) → [২. ভিত্তি](08-heap-priority-queue/problems/009-meeting-rooms-ii.md#idea) → [৩. ধাপ ও ছবি](08-heap-priority-queue/problems/009-meeting-rooms-ii.md#walkthrough) → [৪. কোড](08-heap-priority-queue/problems/009-meeting-rooms-ii.md#code) → [৫. খরচ ও ভুল](08-heap-priority-queue/problems/009-meeting-rooms-ii.md#cost) → [৬. নিজে আবার করুন](08-heap-priority-queue/problems/009-meeting-rooms-ii.md#practice)

আটকে গেলে section-এর [ভিত্তি](08-heap-priority-queue/concept.md) · [চিত্র ও ব্যবহার](08-heap-priority-queue/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M5" data-must="1" data-search="Heap ও Priority Queue 010 — Task Scheduler Heap + greedy (most frequent first) Medium" markdown="1">
<label class="practice-check-label" for="check-heap-010"><input class="practice-check" type="checkbox" id="check-heap-010" data-key="08-heap-priority-queue/problems/010-task-scheduler.md" disabled><span class="ds-status">সমাধান করেছি: 010 — Task Scheduler</span></label>
<div class="practice-problem" markdown="1">

**[010 — Task Scheduler](08-heap-priority-queue/problems/010-task-scheduler.md)**

<p class="practice-pattern">Heap + greedy (most frequent first) · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M5</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](08-heap-priority-queue/problems/010-task-scheduler.md#problem) → [২. ভিত্তি](08-heap-priority-queue/problems/010-task-scheduler.md#idea) → [৩. ধাপ ও ছবি](08-heap-priority-queue/problems/010-task-scheduler.md#walkthrough) → [৪. কোড](08-heap-priority-queue/problems/010-task-scheduler.md#code) → [৫. খরচ ও ভুল](08-heap-priority-queue/problems/010-task-scheduler.md#cost) → [৬. নিজে আবার করুন](08-heap-priority-queue/problems/010-task-scheduler.md#practice)

আটকে গেলে section-এর [ভিত্তি](08-heap-priority-queue/concept.md) · [চিত্র ও ব্যবহার](08-heap-priority-queue/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M5" data-must="0" data-search="Heap ও Priority Queue 011 — Reorganize String Heap + greedy (সবচেয়ে frequent character আগে বসাও) Medium" markdown="1">
<label class="practice-check-label" for="check-heap-011"><input class="practice-check" type="checkbox" id="check-heap-011" data-key="08-heap-priority-queue/problems/011-reorganize-string.md" disabled><span class="ds-status">সমাধান করেছি: 011 — Reorganize String</span></label>
<div class="practice-problem" markdown="1">

**[011 — Reorganize String](08-heap-priority-queue/problems/011-reorganize-string.md)**

<p class="practice-pattern">Heap + greedy (সবচেয়ে frequent character আগে বসাও) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M5</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](08-heap-priority-queue/problems/011-reorganize-string.md#problem) → [২. ভিত্তি](08-heap-priority-queue/problems/011-reorganize-string.md#idea) → [৩. ধাপ ও ছবি](08-heap-priority-queue/problems/011-reorganize-string.md#walkthrough) → [৪. কোড](08-heap-priority-queue/problems/011-reorganize-string.md#code) → [৫. খরচ ও ভুল](08-heap-priority-queue/problems/011-reorganize-string.md#cost) → [৬. নিজে আবার করুন](08-heap-priority-queue/problems/011-reorganize-string.md#practice)

আটকে গেলে section-এর [ভিত্তি](08-heap-priority-queue/concept.md) · [চিত্র ও ব্যবহার](08-heap-priority-queue/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M5" data-must="0" data-search="Heap ও Priority Queue 012 — Kth Smallest Element in a Sorted Matrix K-way merge (প্রতি row-এ একটা cursor) Medium" markdown="1">
<label class="practice-check-label" for="check-heap-012"><input class="practice-check" type="checkbox" id="check-heap-012" data-key="08-heap-priority-queue/problems/012-kth-smallest-in-sorted-matrix.md" disabled><span class="ds-status">সমাধান করেছি: 012 — Kth Smallest Element in a Sorted Matrix</span></label>
<div class="practice-problem" markdown="1">

**[012 — Kth Smallest Element in a Sorted Matrix](08-heap-priority-queue/problems/012-kth-smallest-in-sorted-matrix.md)**

<p class="practice-pattern">K-way merge (প্রতি row-এ একটা cursor) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M5</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](08-heap-priority-queue/problems/012-kth-smallest-in-sorted-matrix.md#problem) → [২. ভিত্তি](08-heap-priority-queue/problems/012-kth-smallest-in-sorted-matrix.md#idea) → [৩. ধাপ ও ছবি](08-heap-priority-queue/problems/012-kth-smallest-in-sorted-matrix.md#walkthrough) → [৪. কোড](08-heap-priority-queue/problems/012-kth-smallest-in-sorted-matrix.md#code) → [৫. খরচ ও ভুল](08-heap-priority-queue/problems/012-kth-smallest-in-sorted-matrix.md#cost) → [৬. নিজে আবার করুন](08-heap-priority-queue/problems/012-kth-smallest-in-sorted-matrix.md#practice)

আটকে গেলে section-এর [ভিত্তি](08-heap-priority-queue/concept.md) · [চিত্র ও ব্যবহার](08-heap-priority-queue/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M5" data-must="1" data-search="Heap ও Priority Queue 013 — Single-Threaded CPU Scheduling / simulation (sort by availability + min-heap of ready jobs) Medium" markdown="1">
<label class="practice-check-label" for="check-heap-013"><input class="practice-check" type="checkbox" id="check-heap-013" data-key="08-heap-priority-queue/problems/013-single-threaded-cpu.md" disabled><span class="ds-status">সমাধান করেছি: 013 — Single-Threaded CPU</span></label>
<div class="practice-problem" markdown="1">

**[013 — Single-Threaded CPU](08-heap-priority-queue/problems/013-single-threaded-cpu.md)**

<p class="practice-pattern">Scheduling / simulation (sort by availability + min-heap of ready jobs) · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M5</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](08-heap-priority-queue/problems/013-single-threaded-cpu.md#problem) → [২. ভিত্তি](08-heap-priority-queue/problems/013-single-threaded-cpu.md#idea) → [৩. ধাপ ও ছবি](08-heap-priority-queue/problems/013-single-threaded-cpu.md#walkthrough) → [৪. কোড](08-heap-priority-queue/problems/013-single-threaded-cpu.md#code) → [৫. খরচ ও ভুল](08-heap-priority-queue/problems/013-single-threaded-cpu.md#cost) → [৬. নিজে আবার করুন](08-heap-priority-queue/problems/013-single-threaded-cpu.md#practice)

আটকে গেলে section-এর [ভিত্তি](08-heap-priority-queue/concept.md) · [চিত্র ও ব্যবহার](08-heap-priority-queue/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M5" data-must="0" data-search="Heap ও Priority Queue 014 — Furthest Building You Can Reach Heap + greedy (সবচেয়ে বড় climb-গুলোয় ladder বাঁচাও) Medium" markdown="1">
<label class="practice-check-label" for="check-heap-014"><input class="practice-check" type="checkbox" id="check-heap-014" data-key="08-heap-priority-queue/problems/014-furthest-building-you-can-reach.md" disabled><span class="ds-status">সমাধান করেছি: 014 — Furthest Building You Can Reach</span></label>
<div class="practice-problem" markdown="1">

**[014 — Furthest Building You Can Reach](08-heap-priority-queue/problems/014-furthest-building-you-can-reach.md)**

<p class="practice-pattern">Heap + greedy (সবচেয়ে বড় climb-গুলোয় ladder বাঁচাও) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M5</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](08-heap-priority-queue/problems/014-furthest-building-you-can-reach.md#problem) → [২. ভিত্তি](08-heap-priority-queue/problems/014-furthest-building-you-can-reach.md#idea) → [৩. ধাপ ও ছবি](08-heap-priority-queue/problems/014-furthest-building-you-can-reach.md#walkthrough) → [৪. কোড](08-heap-priority-queue/problems/014-furthest-building-you-can-reach.md#code) → [৫. খরচ ও ভুল](08-heap-priority-queue/problems/014-furthest-building-you-can-reach.md#cost) → [৬. নিজে আবার করুন](08-heap-priority-queue/problems/014-furthest-building-you-can-reach.md#practice)

আটকে গেলে section-এর [ভিত্তি](08-heap-priority-queue/concept.md) · [চিত্র ও ব্যবহার](08-heap-priority-queue/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="extension" data-must="0" data-search="Heap ও Priority Queue 015 — Concert Tickets Ordered multiset / &quot;best ≤ x then remove&quot; query Medium" markdown="1">
<label class="practice-check-label" for="check-heap-015"><input class="practice-check" type="checkbox" id="check-heap-015" data-key="08-heap-priority-queue/problems/015-concert-tickets.md" disabled><span class="ds-status">সমাধান করেছি: 015 — Concert Tickets</span></label>
<div class="practice-problem" markdown="1">

**[015 — Concert Tickets](08-heap-priority-queue/problems/015-concert-tickets.md)**

<p class="practice-pattern">Ordered multiset / &quot;best ≤ x then remove&quot; query · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">বাড়তি অনুশীলন</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](08-heap-priority-queue/problems/015-concert-tickets.md#problem) → [২. ভিত্তি](08-heap-priority-queue/problems/015-concert-tickets.md#idea) → [৩. ধাপ ও ছবি](08-heap-priority-queue/problems/015-concert-tickets.md#walkthrough) → [৪. কোড](08-heap-priority-queue/problems/015-concert-tickets.md#code) → [৫. খরচ ও ভুল](08-heap-priority-queue/problems/015-concert-tickets.md#cost) → [৬. নিজে আবার করুন](08-heap-priority-queue/problems/015-concert-tickets.md#practice)

আটকে গেলে section-এর [ভিত্তি](08-heap-priority-queue/concept.md) · [চিত্র ও ব্যবহার](08-heap-priority-queue/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M5" data-must="0" data-search="Heap ও Priority Queue 016 — Sliding Window Maximum (heap variant) Lazy deletion (stale entry top-এ এলে তবেই purge) Hard" markdown="1">
<label class="practice-check-label" for="check-heap-016"><input class="practice-check" type="checkbox" id="check-heap-016" data-key="08-heap-priority-queue/problems/016-sliding-window-maximum-heap.md" disabled><span class="ds-status">সমাধান করেছি: 016 — Sliding Window Maximum (heap variant)</span></label>
<div class="practice-problem" markdown="1">

**[016 — Sliding Window Maximum (heap variant)](08-heap-priority-queue/problems/016-sliding-window-maximum-heap.md)**

<p class="practice-pattern">Lazy deletion (stale entry top-এ এলে তবেই purge) · Hard</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M5</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](08-heap-priority-queue/problems/016-sliding-window-maximum-heap.md#problem) → [২. ভিত্তি](08-heap-priority-queue/problems/016-sliding-window-maximum-heap.md#idea) → [৩. ধাপ ও ছবি](08-heap-priority-queue/problems/016-sliding-window-maximum-heap.md#walkthrough) → [৪. কোড](08-heap-priority-queue/problems/016-sliding-window-maximum-heap.md#code) → [৫. খরচ ও ভুল](08-heap-priority-queue/problems/016-sliding-window-maximum-heap.md#cost) → [৬. নিজে আবার করুন](08-heap-priority-queue/problems/016-sliding-window-maximum-heap.md#practice)

আটকে গেলে section-এর [ভিত্তি](08-heap-priority-queue/concept.md) · [চিত্র ও ব্যবহার](08-heap-priority-queue/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M5" data-must="1" data-search="Heap ও Priority Queue 017 — Merge k Sorted Lists K-way merge (প্রতি list-এর head একটা heap-এ) Hard" markdown="1">
<label class="practice-check-label" for="check-heap-017"><input class="practice-check" type="checkbox" id="check-heap-017" data-key="08-heap-priority-queue/problems/017-merge-k-sorted-lists.md" disabled><span class="ds-status">সমাধান করেছি: 017 — Merge k Sorted Lists</span></label>
<div class="practice-problem" markdown="1">

**[017 — Merge k Sorted Lists](08-heap-priority-queue/problems/017-merge-k-sorted-lists.md)**

<p class="practice-pattern">K-way merge (প্রতি list-এর head একটা heap-এ) · Hard</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M5</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](08-heap-priority-queue/problems/017-merge-k-sorted-lists.md#problem) → [২. ভিত্তি](08-heap-priority-queue/problems/017-merge-k-sorted-lists.md#idea) → [৩. ধাপ ও ছবি](08-heap-priority-queue/problems/017-merge-k-sorted-lists.md#walkthrough) → [৪. কোড](08-heap-priority-queue/problems/017-merge-k-sorted-lists.md#code) → [৫. খরচ ও ভুল](08-heap-priority-queue/problems/017-merge-k-sorted-lists.md#cost) → [৬. নিজে আবার করুন](08-heap-priority-queue/problems/017-merge-k-sorted-lists.md#practice)

আটকে গেলে section-এর [ভিত্তি](08-heap-priority-queue/concept.md) · [চিত্র ও ব্যবহার](08-heap-priority-queue/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M5" data-must="1" data-search="Heap ও Priority Queue 018 — Find Median from Data Stream Two heaps (lower half max-heap + upper half min-heap) Hard" markdown="1">
<label class="practice-check-label" for="check-heap-018"><input class="practice-check" type="checkbox" id="check-heap-018" data-key="08-heap-priority-queue/problems/018-find-median-from-data-stream.md" disabled><span class="ds-status">সমাধান করেছি: 018 — Find Median from Data Stream</span></label>
<div class="practice-problem" markdown="1">

**[018 — Find Median from Data Stream](08-heap-priority-queue/problems/018-find-median-from-data-stream.md)**

<p class="practice-pattern">Two heaps (lower half max-heap + upper half min-heap) · Hard</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M5</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](08-heap-priority-queue/problems/018-find-median-from-data-stream.md#problem) → [২. ভিত্তি](08-heap-priority-queue/problems/018-find-median-from-data-stream.md#idea) → [৩. ধাপ ও ছবি](08-heap-priority-queue/problems/018-find-median-from-data-stream.md#walkthrough) → [৪. কোড](08-heap-priority-queue/problems/018-find-median-from-data-stream.md#code) → [৫. খরচ ও ভুল](08-heap-priority-queue/problems/018-find-median-from-data-stream.md#cost) → [৬. নিজে আবার করুন](08-heap-priority-queue/problems/018-find-median-from-data-stream.md#practice)

আটকে গেলে section-এর [ভিত্তি](08-heap-priority-queue/concept.md) · [চিত্র ও ব্যবহার](08-heap-priority-queue/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="extension" data-must="0" data-search="Heap ও Priority Queue 019 — IPO Two heaps + greedy (affordable min-heap by capital → max-heap by profit) Hard" markdown="1">
<label class="practice-check-label" for="check-heap-019"><input class="practice-check" type="checkbox" id="check-heap-019" data-key="08-heap-priority-queue/problems/019-ipo.md" disabled><span class="ds-status">সমাধান করেছি: 019 — IPO</span></label>
<div class="practice-problem" markdown="1">

**[019 — IPO](08-heap-priority-queue/problems/019-ipo.md)**

<p class="practice-pattern">Two heaps + greedy (affordable min-heap by capital → max-heap by profit) · Hard</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">বাড়তি অনুশীলন</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](08-heap-priority-queue/problems/019-ipo.md#problem) → [২. ভিত্তি](08-heap-priority-queue/problems/019-ipo.md#idea) → [৩. ধাপ ও ছবি](08-heap-priority-queue/problems/019-ipo.md#walkthrough) → [৪. কোড](08-heap-priority-queue/problems/019-ipo.md#code) → [৫. খরচ ও ভুল](08-heap-priority-queue/problems/019-ipo.md#cost) → [৬. নিজে আবার করুন](08-heap-priority-queue/problems/019-ipo.md#practice)

আটকে গেলে section-এর [ভিত্তি](08-heap-priority-queue/concept.md) · [চিত্র ও ব্যবহার](08-heap-priority-queue/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="extension" data-must="0" data-search="Heap ও Priority Queue 020 — Smallest Range Covering Elements from K Lists K-way merge (min-heap of frontiers) + tracking the current max → window Hard" markdown="1">
<label class="practice-check-label" for="check-heap-020"><input class="practice-check" type="checkbox" id="check-heap-020" data-key="08-heap-priority-queue/problems/020-smallest-range-k-lists.md" disabled><span class="ds-status">সমাধান করেছি: 020 — Smallest Range Covering Elements from K Lists</span></label>
<div class="practice-problem" markdown="1">

**[020 — Smallest Range Covering Elements from K Lists](08-heap-priority-queue/problems/020-smallest-range-k-lists.md)**

<p class="practice-pattern">K-way merge (min-heap of frontiers) + tracking the current max → window · Hard</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">বাড়তি অনুশীলন</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](08-heap-priority-queue/problems/020-smallest-range-k-lists.md#problem) → [২. ভিত্তি](08-heap-priority-queue/problems/020-smallest-range-k-lists.md#idea) → [৩. ধাপ ও ছবি](08-heap-priority-queue/problems/020-smallest-range-k-lists.md#walkthrough) → [৪. কোড](08-heap-priority-queue/problems/020-smallest-range-k-lists.md#code) → [৫. খরচ ও ভুল](08-heap-priority-queue/problems/020-smallest-range-k-lists.md#cost) → [৬. নিজে আবার করুন](08-heap-priority-queue/problems/020-smallest-range-k-lists.md#practice)

আটকে গেলে section-এর [ভিত্তি](08-heap-priority-queue/concept.md) · [চিত্র ও ব্যবহার](08-heap-priority-queue/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="extension" data-must="0" data-search="Heap ও Priority Queue 021 — Sliding Window Median Two heaps (lower max-heap + upper min-heap) + lazy deletion + rebalancing Hard" markdown="1">
<label class="practice-check-label" for="check-heap-021"><input class="practice-check" type="checkbox" id="check-heap-021" data-key="08-heap-priority-queue/problems/021-sliding-window-median.md" disabled><span class="ds-status">সমাধান করেছি: 021 — Sliding Window Median</span></label>
<div class="practice-problem" markdown="1">

**[021 — Sliding Window Median](08-heap-priority-queue/problems/021-sliding-window-median.md)**

<p class="practice-pattern">Two heaps (lower max-heap + upper min-heap) + lazy deletion + rebalancing · Hard</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">বাড়তি অনুশীলন</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](08-heap-priority-queue/problems/021-sliding-window-median.md#problem) → [২. ভিত্তি](08-heap-priority-queue/problems/021-sliding-window-median.md#idea) → [৩. ধাপ ও ছবি](08-heap-priority-queue/problems/021-sliding-window-median.md#walkthrough) → [৪. কোড](08-heap-priority-queue/problems/021-sliding-window-median.md#code) → [৫. খরচ ও ভুল](08-heap-priority-queue/problems/021-sliding-window-median.md#cost) → [৬. নিজে আবার করুন](08-heap-priority-queue/problems/021-sliding-window-median.md#practice)

আটকে গেলে section-এর [ভিত্তি](08-heap-priority-queue/concept.md) · [চিত্র ও ব্যবহার](08-heap-priority-queue/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="extension" data-must="0" data-search="Heap ও Priority Queue 022 — Trapping Rain Water II Min-heap + BFS inward from the border (process lowest wall first) Hard" markdown="1">
<label class="practice-check-label" for="check-heap-022"><input class="practice-check" type="checkbox" id="check-heap-022" data-key="08-heap-priority-queue/problems/022-trapping-rain-water-ii.md" disabled><span class="ds-status">সমাধান করেছি: 022 — Trapping Rain Water II</span></label>
<div class="practice-problem" markdown="1">

**[022 — Trapping Rain Water II](08-heap-priority-queue/problems/022-trapping-rain-water-ii.md)**

<p class="practice-pattern">Min-heap + BFS inward from the border (process lowest wall first) · Hard</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">বাড়তি অনুশীলন</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](08-heap-priority-queue/problems/022-trapping-rain-water-ii.md#problem) → [২. ভিত্তি](08-heap-priority-queue/problems/022-trapping-rain-water-ii.md#idea) → [৩. ধাপ ও ছবি](08-heap-priority-queue/problems/022-trapping-rain-water-ii.md#walkthrough) → [৪. কোড](08-heap-priority-queue/problems/022-trapping-rain-water-ii.md#code) → [৫. খরচ ও ভুল](08-heap-priority-queue/problems/022-trapping-rain-water-ii.md#cost) → [৬. নিজে আবার করুন](08-heap-priority-queue/problems/022-trapping-rain-water-ii.md#practice)

আটকে গেলে section-এর [ভিত্তি](08-heap-priority-queue/concept.md) · [চিত্র ও ব্যবহার](08-heap-priority-queue/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

</ol>
</details>

</div>

<div class="practice-chapter" data-family="graphs" markdown="1">

## Graph {#section-graphs}

<details class="practice-section" data-section="graphs" markdown="1">
<summary>Graph <span class="section-count">25টি</span></summary>

**আগে বুঝে নিন:** node/edge, adjacency list, visited, queue।

**আগে পড়ুন:** [ভিত্তি](09-graphs/concept.md) · [চিত্র ও ব্যবহার](09-graphs/visual-explanation.md)।

**Section-এর বড় challenge:** [ধাপে ধাপে প্রয়োগ করুন](guided-practice/graphs.md)। সব individual problem-এর বিকল্প নয়; প্রধান কৌশল একসঙ্গে ব্যবহার করার পরীক্ষা।

<ol class="practice-list" markdown="1">

<li class="practice-item" data-course="M3" data-must="0" data-search="Graph 001 — Find Center of Star Graph representation warm-up (degree / adjacency reasoning) Easy" markdown="1">
<label class="practice-check-label" for="check-graphs-001"><input class="practice-check" type="checkbox" id="check-graphs-001" data-key="09-graphs/problems/001-find-center-of-star-graph.md" disabled><span class="ds-status">সমাধান করেছি: 001 — Find Center of Star Graph</span></label>
<div class="practice-problem" markdown="1">

**[001 — Find Center of Star Graph](09-graphs/problems/001-find-center-of-star-graph.md)**

<p class="practice-pattern">representation warm-up (degree / adjacency reasoning) · Easy</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M3</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](09-graphs/problems/001-find-center-of-star-graph.md#problem) → [২. ভিত্তি](09-graphs/problems/001-find-center-of-star-graph.md#idea) → [৩. ধাপ ও ছবি](09-graphs/problems/001-find-center-of-star-graph.md#walkthrough) → [৪. কোড](09-graphs/problems/001-find-center-of-star-graph.md#code) → [৫. খরচ ও ভুল](09-graphs/problems/001-find-center-of-star-graph.md#cost) → [৬. নিজে আবার করুন](09-graphs/problems/001-find-center-of-star-graph.md#practice)

আটকে গেলে section-এর [ভিত্তি](09-graphs/concept.md) · [চিত্র ও ব্যবহার](09-graphs/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M3" data-must="1" data-search="Graph 002 — Find if Path Exists in Graph reachability (BFS / DFS traversal) Easy" markdown="1">
<label class="practice-check-label" for="check-graphs-002"><input class="practice-check" type="checkbox" id="check-graphs-002" data-key="09-graphs/problems/002-find-if-path-exists.md" disabled><span class="ds-status">সমাধান করেছি: 002 — Find if Path Exists in Graph</span></label>
<div class="practice-problem" markdown="1">

**[002 — Find if Path Exists in Graph](09-graphs/problems/002-find-if-path-exists.md)**

<p class="practice-pattern">reachability (BFS / DFS traversal) · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M3</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](09-graphs/problems/002-find-if-path-exists.md#problem) → [২. ভিত্তি](09-graphs/problems/002-find-if-path-exists.md#idea) → [৩. ধাপ ও ছবি](09-graphs/problems/002-find-if-path-exists.md#walkthrough) → [৪. কোড](09-graphs/problems/002-find-if-path-exists.md#code) → [৫. খরচ ও ভুল](09-graphs/problems/002-find-if-path-exists.md#cost) → [৬. নিজে আবার করুন](09-graphs/problems/002-find-if-path-exists.md#practice)

আটকে গেলে section-এর [ভিত্তি](09-graphs/concept.md) · [চিত্র ও ব্যবহার](09-graphs/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M3" data-must="1" data-search="Graph 003 — Flood Fill DFS on a grid (implicit graph) Easy" markdown="1">
<label class="practice-check-label" for="check-graphs-003"><input class="practice-check" type="checkbox" id="check-graphs-003" data-key="09-graphs/problems/003-flood-fill.md" disabled><span class="ds-status">সমাধান করেছি: 003 — Flood Fill</span></label>
<div class="practice-problem" markdown="1">

**[003 — Flood Fill](09-graphs/problems/003-flood-fill.md)**

<p class="practice-pattern">DFS on a grid (implicit graph) · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M3</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](09-graphs/problems/003-flood-fill.md#problem) → [২. ভিত্তি](09-graphs/problems/003-flood-fill.md#idea) → [৩. ধাপ ও ছবি](09-graphs/problems/003-flood-fill.md#walkthrough) → [৪. কোড](09-graphs/problems/003-flood-fill.md#code) → [৫. খরচ ও ভুল](09-graphs/problems/003-flood-fill.md#cost) → [৬. নিজে আবার করুন](09-graphs/problems/003-flood-fill.md#practice)

আটকে গেলে section-এর [ভিত্তি](09-graphs/concept.md) · [চিত্র ও ব্যবহার](09-graphs/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M3" data-must="1" data-search="Graph 004 — Number of Islands connected components on a grid (flood fill + counter) Medium" markdown="1">
<label class="practice-check-label" for="check-graphs-004"><input class="practice-check" type="checkbox" id="check-graphs-004" data-key="09-graphs/problems/004-number-of-islands.md" disabled><span class="ds-status">সমাধান করেছি: 004 — Number of Islands</span></label>
<div class="practice-problem" markdown="1">

**[004 — Number of Islands](09-graphs/problems/004-number-of-islands.md)**

<p class="practice-pattern">connected components on a grid (flood fill + counter) · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M3</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](09-graphs/problems/004-number-of-islands.md#problem) → [২. ভিত্তি](09-graphs/problems/004-number-of-islands.md#idea) → [৩. ধাপ ও ছবি](09-graphs/problems/004-number-of-islands.md#walkthrough) → [৪. কোড](09-graphs/problems/004-number-of-islands.md#code) → [৫. খরচ ও ভুল](09-graphs/problems/004-number-of-islands.md#cost) → [৬. নিজে আবার করুন](09-graphs/problems/004-number-of-islands.md#practice)

আটকে গেলে section-এর [ভিত্তি](09-graphs/concept.md) · [চিত্র ও ব্যবহার](09-graphs/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M3" data-must="0" data-search="Graph 005 — Max Area of Island connected components + size counting (flood fill returns a count) Medium" markdown="1">
<label class="practice-check-label" for="check-graphs-005"><input class="practice-check" type="checkbox" id="check-graphs-005" data-key="09-graphs/problems/005-max-area-of-island.md" disabled><span class="ds-status">সমাধান করেছি: 005 — Max Area of Island</span></label>
<div class="practice-problem" markdown="1">

**[005 — Max Area of Island](09-graphs/problems/005-max-area-of-island.md)**

<p class="practice-pattern">connected components + size counting (flood fill returns a count) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M3</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](09-graphs/problems/005-max-area-of-island.md#problem) → [২. ভিত্তি](09-graphs/problems/005-max-area-of-island.md#idea) → [৩. ধাপ ও ছবি](09-graphs/problems/005-max-area-of-island.md#walkthrough) → [৪. কোড](09-graphs/problems/005-max-area-of-island.md#code) → [৫. খরচ ও ভুল](09-graphs/problems/005-max-area-of-island.md#cost) → [৬. নিজে আবার করুন](09-graphs/problems/005-max-area-of-island.md#practice)

আটকে গেলে section-এর [ভিত্তি](09-graphs/concept.md) · [চিত্র ও ব্যবহার](09-graphs/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M3" data-must="0" data-search="Graph 006 — Number of Provinces connected components on an adjacency matrix Medium" markdown="1">
<label class="practice-check-label" for="check-graphs-006"><input class="practice-check" type="checkbox" id="check-graphs-006" data-key="09-graphs/problems/006-number-of-provinces.md" disabled><span class="ds-status">সমাধান করেছি: 006 — Number of Provinces</span></label>
<div class="practice-problem" markdown="1">

**[006 — Number of Provinces](09-graphs/problems/006-number-of-provinces.md)**

<p class="practice-pattern">connected components on an adjacency matrix · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M3</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](09-graphs/problems/006-number-of-provinces.md#problem) → [২. ভিত্তি](09-graphs/problems/006-number-of-provinces.md#idea) → [৩. ধাপ ও ছবি](09-graphs/problems/006-number-of-provinces.md#walkthrough) → [৪. কোড](09-graphs/problems/006-number-of-provinces.md#code) → [৫. খরচ ও ভুল](09-graphs/problems/006-number-of-provinces.md#cost) → [৬. নিজে আবার করুন](09-graphs/problems/006-number-of-provinces.md#practice)

আটকে গেলে section-এর [ভিত্তি](09-graphs/concept.md) · [চিত্র ও ব্যবহার](09-graphs/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M3" data-must="1" data-search="Graph 007 — Building Roads connected components (count, then join with components − 1 edges) Easy (competitive-programming scale)" markdown="1">
<label class="practice-check-label" for="check-graphs-007"><input class="practice-check" type="checkbox" id="check-graphs-007" data-key="09-graphs/problems/007-building-roads.md" disabled><span class="ds-status">সমাধান করেছি: 007 — Building Roads</span></label>
<div class="practice-problem" markdown="1">

**[007 — Building Roads](09-graphs/problems/007-building-roads.md)**

<p class="practice-pattern">connected components (count, then join with components − 1 edges) · Easy (competitive-programming scale)</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M3</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](09-graphs/problems/007-building-roads.md#problem) → [২. ভিত্তি](09-graphs/problems/007-building-roads.md#idea) → [৩. ধাপ ও ছবি](09-graphs/problems/007-building-roads.md#walkthrough) → [৪. কোড](09-graphs/problems/007-building-roads.md#code) → [৫. খরচ ও ভুল](09-graphs/problems/007-building-roads.md#cost) → [৬. নিজে আবার করুন](09-graphs/problems/007-building-roads.md#practice)

আটকে গেলে section-এর [ভিত্তি](09-graphs/concept.md) · [চিত্র ও ব্যবহার](09-graphs/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M3" data-must="1" data-search="Graph 008 — Rotting Oranges multi-source BFS on a grid (answer = number of levels) Medium" markdown="1">
<label class="practice-check-label" for="check-graphs-008"><input class="practice-check" type="checkbox" id="check-graphs-008" data-key="09-graphs/problems/008-rotting-oranges.md" disabled><span class="ds-status">সমাধান করেছি: 008 — Rotting Oranges</span></label>
<div class="practice-problem" markdown="1">

**[008 — Rotting Oranges](09-graphs/problems/008-rotting-oranges.md)**

<p class="practice-pattern">multi-source BFS on a grid (answer = number of levels) · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M3</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](09-graphs/problems/008-rotting-oranges.md#problem) → [২. ভিত্তি](09-graphs/problems/008-rotting-oranges.md#idea) → [৩. ধাপ ও ছবি](09-graphs/problems/008-rotting-oranges.md#walkthrough) → [৪. কোড](09-graphs/problems/008-rotting-oranges.md#code) → [৫. খরচ ও ভুল](09-graphs/problems/008-rotting-oranges.md#cost) → [৬. নিজে আবার করুন](09-graphs/problems/008-rotting-oranges.md#practice)

আটকে গেলে section-এর [ভিত্তি](09-graphs/concept.md) · [চিত্র ও ব্যবহার](09-graphs/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M3" data-must="0" data-search="Graph 009 — 01 Matrix multi-source BFS on a grid (distance to the nearest target) Medium" markdown="1">
<label class="practice-check-label" for="check-graphs-009"><input class="practice-check" type="checkbox" id="check-graphs-009" data-key="09-graphs/problems/009-01-matrix.md" disabled><span class="ds-status">সমাধান করেছি: 009 — 01 Matrix</span></label>
<div class="practice-problem" markdown="1">

**[009 — 01 Matrix](09-graphs/problems/009-01-matrix.md)**

<p class="practice-pattern">multi-source BFS on a grid (distance to the nearest target) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M3</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](09-graphs/problems/009-01-matrix.md#problem) → [২. ভিত্তি](09-graphs/problems/009-01-matrix.md#idea) → [৩. ধাপ ও ছবি](09-graphs/problems/009-01-matrix.md#walkthrough) → [৪. কোড](09-graphs/problems/009-01-matrix.md#code) → [৫. খরচ ও ভুল](09-graphs/problems/009-01-matrix.md#cost) → [৬. নিজে আবার করুন](09-graphs/problems/009-01-matrix.md#practice)

আটকে গেলে section-এর [ভিত্তি](09-graphs/concept.md) · [চিত্র ও ব্যবহার](09-graphs/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M3" data-must="1" data-search="Graph 010 — Labyrinth grid BFS + shortest-path reconstruction via parent pointers Medium (competitive-programming scale)" markdown="1">
<label class="practice-check-label" for="check-graphs-010"><input class="practice-check" type="checkbox" id="check-graphs-010" data-key="09-graphs/problems/010-labyrinth.md" disabled><span class="ds-status">সমাধান করেছি: 010 — Labyrinth</span></label>
<div class="practice-problem" markdown="1">

**[010 — Labyrinth](09-graphs/problems/010-labyrinth.md)**

<p class="practice-pattern">grid BFS + shortest-path reconstruction via parent pointers · Medium (competitive-programming scale)</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M3</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](09-graphs/problems/010-labyrinth.md#problem) → [২. ভিত্তি](09-graphs/problems/010-labyrinth.md#idea) → [৩. ধাপ ও ছবি](09-graphs/problems/010-labyrinth.md#walkthrough) → [৪. কোড](09-graphs/problems/010-labyrinth.md#code) → [৫. খরচ ও ভুল](09-graphs/problems/010-labyrinth.md#cost) → [৬. নিজে আবার করুন](09-graphs/problems/010-labyrinth.md#practice)

আটকে গেলে section-এর [ভিত্তি](09-graphs/concept.md) · [চিত্র ও ব্যবহার](09-graphs/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M3" data-must="1" data-search="Graph 011 — Is Graph Bipartite? BFS/DFS two-coloring (bipartite check) Medium" markdown="1">
<label class="practice-check-label" for="check-graphs-011"><input class="practice-check" type="checkbox" id="check-graphs-011" data-key="09-graphs/problems/011-is-graph-bipartite.md" disabled><span class="ds-status">সমাধান করেছি: 011 — Is Graph Bipartite?</span></label>
<div class="practice-problem" markdown="1">

**[011 — Is Graph Bipartite?](09-graphs/problems/011-is-graph-bipartite.md)**

<p class="practice-pattern">BFS/DFS two-coloring (bipartite check) · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M3</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](09-graphs/problems/011-is-graph-bipartite.md#problem) → [২. ভিত্তি](09-graphs/problems/011-is-graph-bipartite.md#idea) → [৩. ধাপ ও ছবি](09-graphs/problems/011-is-graph-bipartite.md#walkthrough) → [৪. কোড](09-graphs/problems/011-is-graph-bipartite.md#code) → [৫. খরচ ও ভুল](09-graphs/problems/011-is-graph-bipartite.md#cost) → [৬. নিজে আবার করুন](09-graphs/problems/011-is-graph-bipartite.md#practice)

আটকে গেলে section-এর [ভিত্তি](09-graphs/concept.md) · [চিত্র ও ব্যবহার](09-graphs/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M3" data-must="0" data-search="Graph 012 — Building Teams bipartite coloring (CP scale) Medium" markdown="1">
<label class="practice-check-label" for="check-graphs-012"><input class="practice-check" type="checkbox" id="check-graphs-012" data-key="09-graphs/problems/012-building-teams.md" disabled><span class="ds-status">সমাধান করেছি: 012 — Building Teams</span></label>
<div class="practice-problem" markdown="1">

**[012 — Building Teams](09-graphs/problems/012-building-teams.md)**

<p class="practice-pattern">bipartite coloring (CP scale) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M3</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](09-graphs/problems/012-building-teams.md#problem) → [২. ভিত্তি](09-graphs/problems/012-building-teams.md#idea) → [৩. ধাপ ও ছবি](09-graphs/problems/012-building-teams.md#walkthrough) → [৪. কোড](09-graphs/problems/012-building-teams.md#code) → [৫. খরচ ও ভুল](09-graphs/problems/012-building-teams.md#cost) → [৬. নিজে আবার করুন](09-graphs/problems/012-building-teams.md#practice)

আটকে গেলে section-এর [ভিত্তি](09-graphs/concept.md) · [চিত্র ও ব্যবহার](09-graphs/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M3" data-must="0" data-search="Graph 013 — Clone Graph traversal + copy map (deep copy of a graph) Medium" markdown="1">
<label class="practice-check-label" for="check-graphs-013"><input class="practice-check" type="checkbox" id="check-graphs-013" data-key="09-graphs/problems/013-clone-graph.md" disabled><span class="ds-status">সমাধান করেছি: 013 — Clone Graph</span></label>
<div class="practice-problem" markdown="1">

**[013 — Clone Graph](09-graphs/problems/013-clone-graph.md)**

<p class="practice-pattern">traversal + copy map (deep copy of a graph) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M3</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](09-graphs/problems/013-clone-graph.md#problem) → [২. ভিত্তি](09-graphs/problems/013-clone-graph.md#idea) → [৩. ধাপ ও ছবি](09-graphs/problems/013-clone-graph.md#walkthrough) → [৪. কোড](09-graphs/problems/013-clone-graph.md#code) → [৫. খরচ ও ভুল](09-graphs/problems/013-clone-graph.md#cost) → [৬. নিজে আবার করুন](09-graphs/problems/013-clone-graph.md#practice)

আটকে গেলে section-এর [ভিত্তি](09-graphs/concept.md) · [চিত্র ও ব্যবহার](09-graphs/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M3" data-must="0" data-search="Graph 014 — Pacific Atlantic Water Flow reverse flood from borders (two floods + intersection) Medium" markdown="1">
<label class="practice-check-label" for="check-graphs-014"><input class="practice-check" type="checkbox" id="check-graphs-014" data-key="09-graphs/problems/014-pacific-atlantic.md" disabled><span class="ds-status">সমাধান করেছি: 014 — Pacific Atlantic Water Flow</span></label>
<div class="practice-problem" markdown="1">

**[014 — Pacific Atlantic Water Flow](09-graphs/problems/014-pacific-atlantic.md)**

<p class="practice-pattern">reverse flood from borders (two floods + intersection) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M3</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](09-graphs/problems/014-pacific-atlantic.md#problem) → [২. ভিত্তি](09-graphs/problems/014-pacific-atlantic.md#idea) → [৩. ধাপ ও ছবি](09-graphs/problems/014-pacific-atlantic.md#walkthrough) → [৪. কোড](09-graphs/problems/014-pacific-atlantic.md#code) → [৫. খরচ ও ভুল](09-graphs/problems/014-pacific-atlantic.md#cost) → [৬. নিজে আবার করুন](09-graphs/problems/014-pacific-atlantic.md#practice)

আটকে গেলে section-এর [ভিত্তি](09-graphs/concept.md) · [চিত্র ও ব্যবহার](09-graphs/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M3" data-must="1" data-search="Graph 015 — Course Schedule cycle detection (directed graph) Medium" markdown="1">
<label class="practice-check-label" for="check-graphs-015"><input class="practice-check" type="checkbox" id="check-graphs-015" data-key="09-graphs/problems/015-course-schedule.md" disabled><span class="ds-status">সমাধান করেছি: 015 — Course Schedule</span></label>
<div class="practice-problem" markdown="1">

**[015 — Course Schedule](09-graphs/problems/015-course-schedule.md)**

<p class="practice-pattern">cycle detection (directed graph) · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M3</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](09-graphs/problems/015-course-schedule.md#problem) → [২. ভিত্তি](09-graphs/problems/015-course-schedule.md#idea) → [৩. ধাপ ও ছবি](09-graphs/problems/015-course-schedule.md#walkthrough) → [৪. কোড](09-graphs/problems/015-course-schedule.md#code) → [৫. খরচ ও ভুল](09-graphs/problems/015-course-schedule.md#cost) → [৬. নিজে আবার করুন](09-graphs/problems/015-course-schedule.md#practice)

আটকে গেলে section-এর [ভিত্তি](09-graphs/concept.md) · [চিত্র ও ব্যবহার](09-graphs/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M3" data-must="1" data-search="Graph 016 — Course Schedule II topological sort (Kahn&#x27;s algorithm) Medium" markdown="1">
<label class="practice-check-label" for="check-graphs-016"><input class="practice-check" type="checkbox" id="check-graphs-016" data-key="09-graphs/problems/016-course-schedule-ii.md" disabled><span class="ds-status">সমাধান করেছি: 016 — Course Schedule II</span></label>
<div class="practice-problem" markdown="1">

**[016 — Course Schedule II](09-graphs/problems/016-course-schedule-ii.md)**

<p class="practice-pattern">topological sort (Kahn&#x27;s algorithm) · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M3</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](09-graphs/problems/016-course-schedule-ii.md#problem) → [২. ভিত্তি](09-graphs/problems/016-course-schedule-ii.md#idea) → [৩. ধাপ ও ছবি](09-graphs/problems/016-course-schedule-ii.md#walkthrough) → [৪. কোড](09-graphs/problems/016-course-schedule-ii.md#code) → [৫. খরচ ও ভুল](09-graphs/problems/016-course-schedule-ii.md#cost) → [৬. নিজে আবার করুন](09-graphs/problems/016-course-schedule-ii.md#practice)

আটকে গেলে section-এর [ভিত্তি](09-graphs/concept.md) · [চিত্র ও ব্যবহার](09-graphs/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M3" data-must="0" data-search="Graph 017 — Course Schedule (CSES) topological sort, CP scale (Kahn) Medium" markdown="1">
<label class="practice-check-label" for="check-graphs-017"><input class="practice-check" type="checkbox" id="check-graphs-017" data-key="09-graphs/problems/017-course-schedule-cses.md" disabled><span class="ds-status">সমাধান করেছি: 017 — Course Schedule (CSES)</span></label>
<div class="practice-problem" markdown="1">

**[017 — Course Schedule (CSES)](09-graphs/problems/017-course-schedule-cses.md)**

<p class="practice-pattern">topological sort, CP scale (Kahn) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M3</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](09-graphs/problems/017-course-schedule-cses.md#problem) → [২. ভিত্তি](09-graphs/problems/017-course-schedule-cses.md#idea) → [৩. ধাপ ও ছবি](09-graphs/problems/017-course-schedule-cses.md#walkthrough) → [৪. কোড](09-graphs/problems/017-course-schedule-cses.md#code) → [৫. খরচ ও ভুল](09-graphs/problems/017-course-schedule-cses.md#cost) → [৬. নিজে আবার করুন](09-graphs/problems/017-course-schedule-cses.md#practice)

আটকে গেলে section-এর [ভিত্তি](09-graphs/concept.md) · [চিত্র ও ব্যবহার](09-graphs/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M5" data-must="1" data-search="Graph 018 — Network Delay Time Dijkstra (single-source shortest paths) Medium" markdown="1">
<label class="practice-check-label" for="check-graphs-018"><input class="practice-check" type="checkbox" id="check-graphs-018" data-key="09-graphs/problems/018-network-delay-time.md" disabled><span class="ds-status">সমাধান করেছি: 018 — Network Delay Time</span></label>
<div class="practice-problem" markdown="1">

**[018 — Network Delay Time](09-graphs/problems/018-network-delay-time.md)**

<p class="practice-pattern">Dijkstra (single-source shortest paths) · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M5</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](09-graphs/problems/018-network-delay-time.md#problem) → [২. ভিত্তি](09-graphs/problems/018-network-delay-time.md#idea) → [৩. ধাপ ও ছবি](09-graphs/problems/018-network-delay-time.md#walkthrough) → [৪. কোড](09-graphs/problems/018-network-delay-time.md#code) → [৫. খরচ ও ভুল](09-graphs/problems/018-network-delay-time.md#cost) → [৬. নিজে আবার করুন](09-graphs/problems/018-network-delay-time.md#practice)

আটকে গেলে section-এর [ভিত্তি](09-graphs/concept.md) · [চিত্র ও ব্যবহার](09-graphs/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M5" data-must="1" data-search="Graph 019 — Shortest Routes I Dijkstra, CP scale Medium" markdown="1">
<label class="practice-check-label" for="check-graphs-019"><input class="practice-check" type="checkbox" id="check-graphs-019" data-key="09-graphs/problems/019-shortest-routes-i.md" disabled><span class="ds-status">সমাধান করেছি: 019 — Shortest Routes I</span></label>
<div class="practice-problem" markdown="1">

**[019 — Shortest Routes I](09-graphs/problems/019-shortest-routes-i.md)**

<p class="practice-pattern">Dijkstra, CP scale · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M5</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](09-graphs/problems/019-shortest-routes-i.md#problem) → [২. ভিত্তি](09-graphs/problems/019-shortest-routes-i.md#idea) → [৩. ধাপ ও ছবি](09-graphs/problems/019-shortest-routes-i.md#walkthrough) → [৪. কোড](09-graphs/problems/019-shortest-routes-i.md#code) → [৫. খরচ ও ভুল](09-graphs/problems/019-shortest-routes-i.md#cost) → [৬. নিজে আবার করুন](09-graphs/problems/019-shortest-routes-i.md#practice)

আটকে গেলে section-এর [ভিত্তি](09-graphs/concept.md) · [চিত্র ও ব্যবহার](09-graphs/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M5" data-must="1" data-search="Graph 020 — Path With Minimum Effort minimax Dijkstra on grid (sum নয়, path-এর সবচেয়ে বড় step minimize) Medium" markdown="1">
<label class="practice-check-label" for="check-graphs-020"><input class="practice-check" type="checkbox" id="check-graphs-020" data-key="09-graphs/problems/020-path-with-minimum-effort.md" disabled><span class="ds-status">সমাধান করেছি: 020 — Path With Minimum Effort</span></label>
<div class="practice-problem" markdown="1">

**[020 — Path With Minimum Effort](09-graphs/problems/020-path-with-minimum-effort.md)**

<p class="practice-pattern">minimax Dijkstra on grid (sum নয়, path-এর সবচেয়ে বড় step minimize) · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M5</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](09-graphs/problems/020-path-with-minimum-effort.md#problem) → [২. ভিত্তি](09-graphs/problems/020-path-with-minimum-effort.md#idea) → [৩. ধাপ ও ছবি](09-graphs/problems/020-path-with-minimum-effort.md#walkthrough) → [৪. কোড](09-graphs/problems/020-path-with-minimum-effort.md#code) → [৫. খরচ ও ভুল](09-graphs/problems/020-path-with-minimum-effort.md#cost) → [৬. নিজে আবার করুন](09-graphs/problems/020-path-with-minimum-effort.md#practice)

আটকে গেলে section-এর [ভিত্তি](09-graphs/concept.md) · [চিত্র ও ব্যবহার](09-graphs/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M3" data-must="1" data-search="Graph 021 — Word Ladder BFS on implicit graph (word = node, এক-অক্ষর-আলাদা = edge) Hard" markdown="1">
<label class="practice-check-label" for="check-graphs-021"><input class="practice-check" type="checkbox" id="check-graphs-021" data-key="09-graphs/problems/021-word-ladder.md" disabled><span class="ds-status">সমাধান করেছি: 021 — Word Ladder</span></label>
<div class="practice-problem" markdown="1">

**[021 — Word Ladder](09-graphs/problems/021-word-ladder.md)**

<p class="practice-pattern">BFS on implicit graph (word = node, এক-অক্ষর-আলাদা = edge) · Hard</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M3</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](09-graphs/problems/021-word-ladder.md#problem) → [২. ভিত্তি](09-graphs/problems/021-word-ladder.md#idea) → [৩. ধাপ ও ছবি](09-graphs/problems/021-word-ladder.md#walkthrough) → [৪. কোড](09-graphs/problems/021-word-ladder.md#code) → [৫. খরচ ও ভুল](09-graphs/problems/021-word-ladder.md#cost) → [৬. নিজে আবার করুন](09-graphs/problems/021-word-ladder.md#practice)

আটকে গেলে section-এর [ভিত্তি](09-graphs/concept.md) · [চিত্র ও ব্যবহার](09-graphs/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M4 M5" data-must="1" data-search="Graph 022 — Cheapest Flights Within K Stops Bellman-Ford passes (at most k+1 edges পর্যন্ত relax) Hard" markdown="1">
<label class="practice-check-label" for="check-graphs-022"><input class="practice-check" type="checkbox" id="check-graphs-022" data-key="09-graphs/problems/022-cheapest-flights-k-stops.md" disabled><span class="ds-status">সমাধান করেছি: 022 — Cheapest Flights Within K Stops</span></label>
<div class="practice-problem" markdown="1">

**[022 — Cheapest Flights Within K Stops](09-graphs/problems/022-cheapest-flights-k-stops.md)**

<p class="practice-pattern">Bellman-Ford passes (at most k+1 edges পর্যন্ত relax) · Hard</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
<a class="practice-badge is-course" href="#course-map">Microsoft · M5</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](09-graphs/problems/022-cheapest-flights-k-stops.md#problem) → [২. ভিত্তি](09-graphs/problems/022-cheapest-flights-k-stops.md#idea) → [৩. ধাপ ও ছবি](09-graphs/problems/022-cheapest-flights-k-stops.md#walkthrough) → [৪. কোড](09-graphs/problems/022-cheapest-flights-k-stops.md#code) → [৫. খরচ ও ভুল](09-graphs/problems/022-cheapest-flights-k-stops.md#cost) → [৬. নিজে আবার করুন](09-graphs/problems/022-cheapest-flights-k-stops.md#practice)

আটকে গেলে section-এর [ভিত্তি](09-graphs/concept.md) · [চিত্র ও ব্যবহার](09-graphs/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M3" data-must="0" data-search="Graph 023 — Bus Routes BFS on transformed graph (node = route, edge = shared stop) Hard" markdown="1">
<label class="practice-check-label" for="check-graphs-023"><input class="practice-check" type="checkbox" id="check-graphs-023" data-key="09-graphs/problems/023-bus-routes.md" disabled><span class="ds-status">সমাধান করেছি: 023 — Bus Routes</span></label>
<div class="practice-problem" markdown="1">

**[023 — Bus Routes](09-graphs/problems/023-bus-routes.md)**

<p class="practice-pattern">BFS on transformed graph (node = route, edge = shared stop) · Hard</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M3</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](09-graphs/problems/023-bus-routes.md#problem) → [২. ভিত্তি](09-graphs/problems/023-bus-routes.md#idea) → [৩. ধাপ ও ছবি](09-graphs/problems/023-bus-routes.md#walkthrough) → [৪. কোড](09-graphs/problems/023-bus-routes.md#code) → [৫. খরচ ও ভুল](09-graphs/problems/023-bus-routes.md#cost) → [৬. নিজে আবার করুন](09-graphs/problems/023-bus-routes.md#practice)

আটকে গেলে section-এর [ভিত্তি](09-graphs/concept.md) · [চিত্র ও ব্যবহার](09-graphs/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M3" data-must="0" data-search="Graph 024 — Alien Dictionary build constraints + topological sort (Kahn) Hard" markdown="1">
<label class="practice-check-label" for="check-graphs-024"><input class="practice-check" type="checkbox" id="check-graphs-024" data-key="09-graphs/problems/024-alien-dictionary.md" disabled><span class="ds-status">সমাধান করেছি: 024 — Alien Dictionary</span></label>
<div class="practice-problem" markdown="1">

**[024 — Alien Dictionary](09-graphs/problems/024-alien-dictionary.md)**

<p class="practice-pattern">build constraints + topological sort (Kahn) · Hard</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M3</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](09-graphs/problems/024-alien-dictionary.md#problem) → [২. ভিত্তি](09-graphs/problems/024-alien-dictionary.md#idea) → [৩. ধাপ ও ছবি](09-graphs/problems/024-alien-dictionary.md#walkthrough) → [৪. কোড](09-graphs/problems/024-alien-dictionary.md#code) → [৫. খরচ ও ভুল](09-graphs/problems/024-alien-dictionary.md#cost) → [৬. নিজে আবার করুন](09-graphs/problems/024-alien-dictionary.md#practice)

আটকে গেলে section-এর [ভিত্তি](09-graphs/concept.md) · [চিত্র ও ব্যবহার](09-graphs/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M5" data-must="0" data-search="Graph 025 — Swim in Rising Water minimax Dijkstra (path বরাবর সর্বোচ্চ elevation minimize) Hard" markdown="1">
<label class="practice-check-label" for="check-graphs-025"><input class="practice-check" type="checkbox" id="check-graphs-025" data-key="09-graphs/problems/025-swim-in-rising-water.md" disabled><span class="ds-status">সমাধান করেছি: 025 — Swim in Rising Water</span></label>
<div class="practice-problem" markdown="1">

**[025 — Swim in Rising Water](09-graphs/problems/025-swim-in-rising-water.md)**

<p class="practice-pattern">minimax Dijkstra (path বরাবর সর্বোচ্চ elevation minimize) · Hard</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M5</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](09-graphs/problems/025-swim-in-rising-water.md#problem) → [২. ভিত্তি](09-graphs/problems/025-swim-in-rising-water.md#idea) → [৩. ধাপ ও ছবি](09-graphs/problems/025-swim-in-rising-water.md#walkthrough) → [৪. কোড](09-graphs/problems/025-swim-in-rising-water.md#code) → [৫. খরচ ও ভুল](09-graphs/problems/025-swim-in-rising-water.md#cost) → [৬. নিজে আবার করুন](09-graphs/problems/025-swim-in-rising-water.md#practice)

আটকে গেলে section-এর [ভিত্তি](09-graphs/concept.md) · [চিত্র ও ব্যবহার](09-graphs/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

</ol>
</details>

</div>

<div class="practice-chapter" data-family="dsu" markdown="1">

## Disjoint Set Union {#section-dsu}

<details class="practice-section" data-section="dsu" markdown="1">
<summary>Disjoint Set Union <span class="section-count">17টি</span></summary>

**আগে বুঝে নিন:** component, representative, parent, union/find।

**আগে পড়ুন:** [ভিত্তি](10-disjoint-set-union/concept.md) · [চিত্র ও ব্যবহার](10-disjoint-set-union/visual-explanation.md)।

**Section-এর বড় challenge:** [ধাপে ধাপে প্রয়োগ করুন](guided-practice/dsu.md)। সব individual problem-এর বিকল্প নয়; প্রধান কৌশল একসঙ্গে ব্যবহার করার পরীক্ষা।

<ol class="practice-list" markdown="1">

<li class="practice-item" data-course="extension" data-must="1" data-search="Disjoint Set Union 001 — Find if Path Exists in Graph dynamic connectivity (same group?) Easy" markdown="1">
<label class="practice-check-label" for="check-dsu-001"><input class="practice-check" type="checkbox" id="check-dsu-001" data-key="10-disjoint-set-union/problems/001-find-if-path-exists-dsu.md" disabled><span class="ds-status">সমাধান করেছি: 001 — Find if Path Exists in Graph</span></label>
<div class="practice-problem" markdown="1">

**[001 — Find if Path Exists in Graph](10-disjoint-set-union/problems/001-find-if-path-exists-dsu.md)**

<p class="practice-pattern">dynamic connectivity (same group?) · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-support" href="#course-map">বাড়তি অনুশীলন</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](10-disjoint-set-union/problems/001-find-if-path-exists-dsu.md#problem) → [২. ভিত্তি](10-disjoint-set-union/problems/001-find-if-path-exists-dsu.md#idea) → [৩. ধাপ ও ছবি](10-disjoint-set-union/problems/001-find-if-path-exists-dsu.md#walkthrough) → [৪. কোড](10-disjoint-set-union/problems/001-find-if-path-exists-dsu.md#code) → [৫. খরচ ও ভুল](10-disjoint-set-union/problems/001-find-if-path-exists-dsu.md#cost) → [৬. নিজে আবার করুন](10-disjoint-set-union/problems/001-find-if-path-exists-dsu.md#practice)

আটকে গেলে section-এর [ভিত্তি](10-disjoint-set-union/concept.md) · [চিত্র ও ব্যবহার](10-disjoint-set-union/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="extension" data-must="1" data-search="Disjoint Set Union 002 — Number of Provinces component counting Easy-Medium" markdown="1">
<label class="practice-check-label" for="check-dsu-002"><input class="practice-check" type="checkbox" id="check-dsu-002" data-key="10-disjoint-set-union/problems/002-number-of-provinces-dsu.md" disabled><span class="ds-status">সমাধান করেছি: 002 — Number of Provinces</span></label>
<div class="practice-problem" markdown="1">

**[002 — Number of Provinces](10-disjoint-set-union/problems/002-number-of-provinces-dsu.md)**

<p class="practice-pattern">component counting · Easy-Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-support" href="#course-map">বাড়তি অনুশীলন</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](10-disjoint-set-union/problems/002-number-of-provinces-dsu.md#problem) → [২. ভিত্তি](10-disjoint-set-union/problems/002-number-of-provinces-dsu.md#idea) → [৩. ধাপ ও ছবি](10-disjoint-set-union/problems/002-number-of-provinces-dsu.md#walkthrough) → [৪. কোড](10-disjoint-set-union/problems/002-number-of-provinces-dsu.md#code) → [৫. খরচ ও ভুল](10-disjoint-set-union/problems/002-number-of-provinces-dsu.md#cost) → [৬. নিজে আবার করুন](10-disjoint-set-union/problems/002-number-of-provinces-dsu.md#practice)

আটকে গেলে section-এর [ভিত্তি](10-disjoint-set-union/concept.md) · [চিত্র ও ব্যবহার](10-disjoint-set-union/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="extension" data-must="1" data-search="Disjoint Set Union 003 — Building Roads components − 1 (connect all components) Easy" markdown="1">
<label class="practice-check-label" for="check-dsu-003"><input class="practice-check" type="checkbox" id="check-dsu-003" data-key="10-disjoint-set-union/problems/003-building-roads-dsu.md" disabled><span class="ds-status">সমাধান করেছি: 003 — Building Roads</span></label>
<div class="practice-problem" markdown="1">

**[003 — Building Roads](10-disjoint-set-union/problems/003-building-roads-dsu.md)**

<p class="practice-pattern">components − 1 (connect all components) · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-support" href="#course-map">বাড়তি অনুশীলন</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](10-disjoint-set-union/problems/003-building-roads-dsu.md#problem) → [২. ভিত্তি](10-disjoint-set-union/problems/003-building-roads-dsu.md#idea) → [৩. ধাপ ও ছবি](10-disjoint-set-union/problems/003-building-roads-dsu.md#walkthrough) → [৪. কোড](10-disjoint-set-union/problems/003-building-roads-dsu.md#code) → [৫. খরচ ও ভুল](10-disjoint-set-union/problems/003-building-roads-dsu.md#cost) → [৬. নিজে আবার করুন](10-disjoint-set-union/problems/003-building-roads-dsu.md#practice)

আটকে গেলে section-এর [ভিত্তি](10-disjoint-set-union/concept.md) · [চিত্র ও ব্যবহার](10-disjoint-set-union/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="extension" data-must="1" data-search="Disjoint Set Union 004 — Graph Valid Tree cycle detection + component count Medium" markdown="1">
<label class="practice-check-label" for="check-dsu-004"><input class="practice-check" type="checkbox" id="check-dsu-004" data-key="10-disjoint-set-union/problems/004-graph-valid-tree.md" disabled><span class="ds-status">সমাধান করেছি: 004 — Graph Valid Tree</span></label>
<div class="practice-problem" markdown="1">

**[004 — Graph Valid Tree](10-disjoint-set-union/problems/004-graph-valid-tree.md)**

<p class="practice-pattern">cycle detection + component count · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-support" href="#course-map">বাড়তি অনুশীলন</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](10-disjoint-set-union/problems/004-graph-valid-tree.md#problem) → [২. ভিত্তি](10-disjoint-set-union/problems/004-graph-valid-tree.md#idea) → [৩. ধাপ ও ছবি](10-disjoint-set-union/problems/004-graph-valid-tree.md#walkthrough) → [৪. কোড](10-disjoint-set-union/problems/004-graph-valid-tree.md#code) → [৫. খরচ ও ভুল](10-disjoint-set-union/problems/004-graph-valid-tree.md#cost) → [৬. নিজে আবার করুন](10-disjoint-set-union/problems/004-graph-valid-tree.md#practice)

আটকে গেলে section-এর [ভিত্তি](10-disjoint-set-union/concept.md) · [চিত্র ও ব্যবহার](10-disjoint-set-union/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="extension" data-must="1" data-search="Disjoint Set Union 005 — Redundant Connection cycle detection Medium" markdown="1">
<label class="practice-check-label" for="check-dsu-005"><input class="practice-check" type="checkbox" id="check-dsu-005" data-key="10-disjoint-set-union/problems/005-redundant-connection.md" disabled><span class="ds-status">সমাধান করেছি: 005 — Redundant Connection</span></label>
<div class="practice-problem" markdown="1">

**[005 — Redundant Connection](10-disjoint-set-union/problems/005-redundant-connection.md)**

<p class="practice-pattern">cycle detection · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-support" href="#course-map">বাড়তি অনুশীলন</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](10-disjoint-set-union/problems/005-redundant-connection.md#problem) → [২. ভিত্তি](10-disjoint-set-union/problems/005-redundant-connection.md#idea) → [৩. ধাপ ও ছবি](10-disjoint-set-union/problems/005-redundant-connection.md#walkthrough) → [৪. কোড](10-disjoint-set-union/problems/005-redundant-connection.md#code) → [৫. খরচ ও ভুল](10-disjoint-set-union/problems/005-redundant-connection.md#cost) → [৬. নিজে আবার করুন](10-disjoint-set-union/problems/005-redundant-connection.md#practice)

আটকে গেলে section-এর [ভিত্তি](10-disjoint-set-union/concept.md) · [চিত্র ও ব্যবহার](10-disjoint-set-union/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="extension" data-must="1" data-search="Disjoint Set Union 006 — Number of Operations to Make Network Connected components + spare edges Medium" markdown="1">
<label class="practice-check-label" for="check-dsu-006"><input class="practice-check" type="checkbox" id="check-dsu-006" data-key="10-disjoint-set-union/problems/006-make-network-connected.md" disabled><span class="ds-status">সমাধান করেছি: 006 — Number of Operations to Make Network Connected</span></label>
<div class="practice-problem" markdown="1">

**[006 — Number of Operations to Make Network Connected](10-disjoint-set-union/problems/006-make-network-connected.md)**

<p class="practice-pattern">components + spare edges · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-support" href="#course-map">বাড়তি অনুশীলন</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](10-disjoint-set-union/problems/006-make-network-connected.md#problem) → [২. ভিত্তি](10-disjoint-set-union/problems/006-make-network-connected.md#idea) → [৩. ধাপ ও ছবি](10-disjoint-set-union/problems/006-make-network-connected.md#walkthrough) → [৪. কোড](10-disjoint-set-union/problems/006-make-network-connected.md#code) → [৫. খরচ ও ভুল](10-disjoint-set-union/problems/006-make-network-connected.md#cost) → [৬. নিজে আবার করুন](10-disjoint-set-union/problems/006-make-network-connected.md#practice)

আটকে গেলে section-এর [ভিত্তি](10-disjoint-set-union/concept.md) · [চিত্র ও ব্যবহার](10-disjoint-set-union/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="extension" data-must="0" data-search="Disjoint Set Union 007 — Satisfiability of Equality Equations equivalence classes Medium" markdown="1">
<label class="practice-check-label" for="check-dsu-007"><input class="practice-check" type="checkbox" id="check-dsu-007" data-key="10-disjoint-set-union/problems/007-equality-equations.md" disabled><span class="ds-status">সমাধান করেছি: 007 — Satisfiability of Equality Equations</span></label>
<div class="practice-problem" markdown="1">

**[007 — Satisfiability of Equality Equations](10-disjoint-set-union/problems/007-equality-equations.md)**

<p class="practice-pattern">equivalence classes · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">বাড়তি অনুশীলন</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](10-disjoint-set-union/problems/007-equality-equations.md#problem) → [২. ভিত্তি](10-disjoint-set-union/problems/007-equality-equations.md#idea) → [৩. ধাপ ও ছবি](10-disjoint-set-union/problems/007-equality-equations.md#walkthrough) → [৪. কোড](10-disjoint-set-union/problems/007-equality-equations.md#code) → [৫. খরচ ও ভুল](10-disjoint-set-union/problems/007-equality-equations.md#cost) → [৬. নিজে আবার করুন](10-disjoint-set-union/problems/007-equality-equations.md#practice)

আটকে গেলে section-এর [ভিত্তি](10-disjoint-set-union/concept.md) · [চিত্র ও ব্যবহার](10-disjoint-set-union/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="extension" data-must="0" data-search="Disjoint Set Union 008 — Smallest String With Swaps group then sort inside groups Medium" markdown="1">
<label class="practice-check-label" for="check-dsu-008"><input class="practice-check" type="checkbox" id="check-dsu-008" data-key="10-disjoint-set-union/problems/008-smallest-string-with-swaps.md" disabled><span class="ds-status">সমাধান করেছি: 008 — Smallest String With Swaps</span></label>
<div class="practice-problem" markdown="1">

**[008 — Smallest String With Swaps](10-disjoint-set-union/problems/008-smallest-string-with-swaps.md)**

<p class="practice-pattern">group then sort inside groups · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">বাড়তি অনুশীলন</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](10-disjoint-set-union/problems/008-smallest-string-with-swaps.md#problem) → [২. ভিত্তি](10-disjoint-set-union/problems/008-smallest-string-with-swaps.md#idea) → [৩. ধাপ ও ছবি](10-disjoint-set-union/problems/008-smallest-string-with-swaps.md#walkthrough) → [৪. কোড](10-disjoint-set-union/problems/008-smallest-string-with-swaps.md#code) → [৫. খরচ ও ভুল](10-disjoint-set-union/problems/008-smallest-string-with-swaps.md#cost) → [৬. নিজে আবার করুন](10-disjoint-set-union/problems/008-smallest-string-with-swaps.md#practice)

আটকে গেলে section-এর [ভিত্তি](10-disjoint-set-union/concept.md) · [চিত্র ও ব্যবহার](10-disjoint-set-union/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="extension" data-must="1" data-search="Disjoint Set Union 009 — Accounts Merge merging records by shared keys Medium" markdown="1">
<label class="practice-check-label" for="check-dsu-009"><input class="practice-check" type="checkbox" id="check-dsu-009" data-key="10-disjoint-set-union/problems/009-accounts-merge.md" disabled><span class="ds-status">সমাধান করেছি: 009 — Accounts Merge</span></label>
<div class="practice-problem" markdown="1">

**[009 — Accounts Merge](10-disjoint-set-union/problems/009-accounts-merge.md)**

<p class="practice-pattern">merging records by shared keys · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-support" href="#course-map">বাড়তি অনুশীলন</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](10-disjoint-set-union/problems/009-accounts-merge.md#problem) → [২. ভিত্তি](10-disjoint-set-union/problems/009-accounts-merge.md#idea) → [৩. ধাপ ও ছবি](10-disjoint-set-union/problems/009-accounts-merge.md#walkthrough) → [৪. কোড](10-disjoint-set-union/problems/009-accounts-merge.md#code) → [৫. খরচ ও ভুল](10-disjoint-set-union/problems/009-accounts-merge.md#cost) → [৬. নিজে আবার করুন](10-disjoint-set-union/problems/009-accounts-merge.md#practice)

আটকে গেলে section-এর [ভিত্তি](10-disjoint-set-union/concept.md) · [চিত্র ও ব্যবহার](10-disjoint-set-union/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="extension" data-must="0" data-search="Disjoint Set Union 010 — Number of Islands (DSU variant) grid cells as DSU elements Medium" markdown="1">
<label class="practice-check-label" for="check-dsu-010"><input class="practice-check" type="checkbox" id="check-dsu-010" data-key="10-disjoint-set-union/problems/010-number-of-islands-dsu.md" disabled><span class="ds-status">সমাধান করেছি: 010 — Number of Islands (DSU variant)</span></label>
<div class="practice-problem" markdown="1">

**[010 — Number of Islands (DSU variant)](10-disjoint-set-union/problems/010-number-of-islands-dsu.md)**

<p class="practice-pattern">grid cells as DSU elements · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">বাড়তি অনুশীলন</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](10-disjoint-set-union/problems/010-number-of-islands-dsu.md#problem) → [২. ভিত্তি](10-disjoint-set-union/problems/010-number-of-islands-dsu.md#idea) → [৩. ধাপ ও ছবি](10-disjoint-set-union/problems/010-number-of-islands-dsu.md#walkthrough) → [৪. কোড](10-disjoint-set-union/problems/010-number-of-islands-dsu.md#code) → [৫. খরচ ও ভুল](10-disjoint-set-union/problems/010-number-of-islands-dsu.md#cost) → [৬. নিজে আবার করুন](10-disjoint-set-union/problems/010-number-of-islands-dsu.md#practice)

আটকে গেলে section-এর [ভিত্তি](10-disjoint-set-union/concept.md) · [চিত্র ও ব্যবহার](10-disjoint-set-union/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="extension" data-must="0" data-search="Disjoint Set Union 011 — Most Stones Removed with Same Row or Column creative union keys (rows/cols as nodes) Medium" markdown="1">
<label class="practice-check-label" for="check-dsu-011"><input class="practice-check" type="checkbox" id="check-dsu-011" data-key="10-disjoint-set-union/problems/011-most-stones-removed.md" disabled><span class="ds-status">সমাধান করেছি: 011 — Most Stones Removed with Same Row or Column</span></label>
<div class="practice-problem" markdown="1">

**[011 — Most Stones Removed with Same Row or Column](10-disjoint-set-union/problems/011-most-stones-removed.md)**

<p class="practice-pattern">creative union keys (rows/cols as nodes) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">বাড়তি অনুশীলন</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](10-disjoint-set-union/problems/011-most-stones-removed.md#problem) → [২. ভিত্তি](10-disjoint-set-union/problems/011-most-stones-removed.md#idea) → [৩. ধাপ ও ছবি](10-disjoint-set-union/problems/011-most-stones-removed.md#walkthrough) → [৪. কোড](10-disjoint-set-union/problems/011-most-stones-removed.md#code) → [৫. খরচ ও ভুল](10-disjoint-set-union/problems/011-most-stones-removed.md#cost) → [৬. নিজে আবার করুন](10-disjoint-set-union/problems/011-most-stones-removed.md#practice)

আটকে গেলে section-এর [ভিত্তি](10-disjoint-set-union/concept.md) · [চিত্র ও ব্যবহার](10-disjoint-set-union/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="extension" data-must="0" data-search="Disjoint Set Union 012 — Regions Cut By Slashes cell subdivision + union (প্রতি cell-কে ছোট টুকরোয় ভেঙে DSU) Medium" markdown="1">
<label class="practice-check-label" for="check-dsu-012"><input class="practice-check" type="checkbox" id="check-dsu-012" data-key="10-disjoint-set-union/problems/012-regions-cut-by-slashes.md" disabled><span class="ds-status">সমাধান করেছি: 012 — Regions Cut By Slashes</span></label>
<div class="practice-problem" markdown="1">

**[012 — Regions Cut By Slashes](10-disjoint-set-union/problems/012-regions-cut-by-slashes.md)**

<p class="practice-pattern">cell subdivision + union (প্রতি cell-কে ছোট টুকরোয় ভেঙে DSU) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">বাড়তি অনুশীলন</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](10-disjoint-set-union/problems/012-regions-cut-by-slashes.md#problem) → [২. ভিত্তি](10-disjoint-set-union/problems/012-regions-cut-by-slashes.md#idea) → [৩. ধাপ ও ছবি](10-disjoint-set-union/problems/012-regions-cut-by-slashes.md#walkthrough) → [৪. কোড](10-disjoint-set-union/problems/012-regions-cut-by-slashes.md#code) → [৫. খরচ ও ভুল](10-disjoint-set-union/problems/012-regions-cut-by-slashes.md#cost) → [৬. নিজে আবার করুন](10-disjoint-set-union/problems/012-regions-cut-by-slashes.md#practice)

আটকে গেলে section-এর [ভিত্তি](10-disjoint-set-union/concept.md) · [চিত্র ও ব্যবহার](10-disjoint-set-union/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="extension" data-must="1" data-search="Disjoint Set Union 013 — Number of Islands II streaming dynamic connectivity (প্রতিটা addition-এর পর live island count) Hard" markdown="1">
<label class="practice-check-label" for="check-dsu-013"><input class="practice-check" type="checkbox" id="check-dsu-013" data-key="10-disjoint-set-union/problems/013-number-of-islands-ii.md" disabled><span class="ds-status">সমাধান করেছি: 013 — Number of Islands II</span></label>
<div class="practice-problem" markdown="1">

**[013 — Number of Islands II](10-disjoint-set-union/problems/013-number-of-islands-ii.md)**

<p class="practice-pattern">streaming dynamic connectivity (প্রতিটা addition-এর পর live island count) · Hard</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-support" href="#course-map">বাড়তি অনুশীলন</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](10-disjoint-set-union/problems/013-number-of-islands-ii.md#problem) → [২. ভিত্তি](10-disjoint-set-union/problems/013-number-of-islands-ii.md#idea) → [৩. ধাপ ও ছবি](10-disjoint-set-union/problems/013-number-of-islands-ii.md#walkthrough) → [৪. কোড](10-disjoint-set-union/problems/013-number-of-islands-ii.md#code) → [৫. খরচ ও ভুল](10-disjoint-set-union/problems/013-number-of-islands-ii.md#cost) → [৬. নিজে আবার করুন](10-disjoint-set-union/problems/013-number-of-islands-ii.md#practice)

আটকে গেলে section-এর [ভিত্তি](10-disjoint-set-union/concept.md) · [চিত্র ও ব্যবহার](10-disjoint-set-union/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="extension" data-must="0" data-search="Disjoint Set Union 014 — Making A Large Island component sizes + best merge (একটা 0-কে 1 করে সবচেয়ে বড় island) Hard" markdown="1">
<label class="practice-check-label" for="check-dsu-014"><input class="practice-check" type="checkbox" id="check-dsu-014" data-key="10-disjoint-set-union/problems/014-making-a-large-island.md" disabled><span class="ds-status">সমাধান করেছি: 014 — Making A Large Island</span></label>
<div class="practice-problem" markdown="1">

**[014 — Making A Large Island](10-disjoint-set-union/problems/014-making-a-large-island.md)**

<p class="practice-pattern">component sizes + best merge (একটা 0-কে 1 করে সবচেয়ে বড় island) · Hard</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">বাড়তি অনুশীলন</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](10-disjoint-set-union/problems/014-making-a-large-island.md#problem) → [২. ভিত্তি](10-disjoint-set-union/problems/014-making-a-large-island.md#idea) → [৩. ধাপ ও ছবি](10-disjoint-set-union/problems/014-making-a-large-island.md#walkthrough) → [৪. কোড](10-disjoint-set-union/problems/014-making-a-large-island.md#code) → [৫. খরচ ও ভুল](10-disjoint-set-union/problems/014-making-a-large-island.md#cost) → [৬. নিজে আবার করুন](10-disjoint-set-union/problems/014-making-a-large-island.md#practice)

আটকে গেলে section-এর [ভিত্তি](10-disjoint-set-union/concept.md) · [চিত্র ও ব্যবহার](10-disjoint-set-union/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="extension" data-must="0" data-search="Disjoint Set Union 015 — Swim in Rising Water (DSU variant) Kruskal-style threshold union (height order-এ cell union, start ও goal কখন যুক্ত) Hard" markdown="1">
<label class="practice-check-label" for="check-dsu-015"><input class="practice-check" type="checkbox" id="check-dsu-015" data-key="10-disjoint-set-union/problems/015-swim-in-rising-water-dsu.md" disabled><span class="ds-status">সমাধান করেছি: 015 — Swim in Rising Water (DSU variant)</span></label>
<div class="practice-problem" markdown="1">

**[015 — Swim in Rising Water (DSU variant)](10-disjoint-set-union/problems/015-swim-in-rising-water-dsu.md)**

<p class="practice-pattern">Kruskal-style threshold union (height order-এ cell union, start ও goal কখন যুক্ত) · Hard</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">বাড়তি অনুশীলন</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](10-disjoint-set-union/problems/015-swim-in-rising-water-dsu.md#problem) → [২. ভিত্তি](10-disjoint-set-union/problems/015-swim-in-rising-water-dsu.md#idea) → [৩. ধাপ ও ছবি](10-disjoint-set-union/problems/015-swim-in-rising-water-dsu.md#walkthrough) → [৪. কোড](10-disjoint-set-union/problems/015-swim-in-rising-water-dsu.md#code) → [৫. খরচ ও ভুল](10-disjoint-set-union/problems/015-swim-in-rising-water-dsu.md#cost) → [৬. নিজে আবার করুন](10-disjoint-set-union/problems/015-swim-in-rising-water-dsu.md#practice)

আটকে গেলে section-এর [ভিত্তি](10-disjoint-set-union/concept.md) · [চিত্র ও ব্যবহার](10-disjoint-set-union/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="extension" data-must="0" data-search="Disjoint Set Union 016 — Redundant Connection II directed cycle + double-parent cases (rooted tree-তে কোন edge সরালে ঠিক হয়) Hard" markdown="1">
<label class="practice-check-label" for="check-dsu-016"><input class="practice-check" type="checkbox" id="check-dsu-016" data-key="10-disjoint-set-union/problems/016-redundant-connection-ii.md" disabled><span class="ds-status">সমাধান করেছি: 016 — Redundant Connection II</span></label>
<div class="practice-problem" markdown="1">

**[016 — Redundant Connection II](10-disjoint-set-union/problems/016-redundant-connection-ii.md)**

<p class="practice-pattern">directed cycle + double-parent cases (rooted tree-তে কোন edge সরালে ঠিক হয়) · Hard</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">বাড়তি অনুশীলন</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](10-disjoint-set-union/problems/016-redundant-connection-ii.md#problem) → [২. ভিত্তি](10-disjoint-set-union/problems/016-redundant-connection-ii.md#idea) → [৩. ধাপ ও ছবি](10-disjoint-set-union/problems/016-redundant-connection-ii.md#walkthrough) → [৪. কোড](10-disjoint-set-union/problems/016-redundant-connection-ii.md#code) → [৫. খরচ ও ভুল](10-disjoint-set-union/problems/016-redundant-connection-ii.md#cost) → [৬. নিজে আবার করুন](10-disjoint-set-union/problems/016-redundant-connection-ii.md#practice)

আটকে গেলে section-এর [ভিত্তি](10-disjoint-set-union/concept.md) · [চিত্র ও ব্যবহার](10-disjoint-set-union/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="extension" data-must="1" data-search="Disjoint Set Union 017 — Road Construction live component count + max component size (প্রতিটা road-এর পর দুটো মান) Hard" markdown="1">
<label class="practice-check-label" for="check-dsu-017"><input class="practice-check" type="checkbox" id="check-dsu-017" data-key="10-disjoint-set-union/problems/017-road-construction.md" disabled><span class="ds-status">সমাধান করেছি: 017 — Road Construction</span></label>
<div class="practice-problem" markdown="1">

**[017 — Road Construction](10-disjoint-set-union/problems/017-road-construction.md)**

<p class="practice-pattern">live component count + max component size (প্রতিটা road-এর পর দুটো মান) · Hard</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-support" href="#course-map">বাড়তি অনুশীলন</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](10-disjoint-set-union/problems/017-road-construction.md#problem) → [২. ভিত্তি](10-disjoint-set-union/problems/017-road-construction.md#idea) → [৩. ধাপ ও ছবি](10-disjoint-set-union/problems/017-road-construction.md#walkthrough) → [৪. কোড](10-disjoint-set-union/problems/017-road-construction.md#code) → [৫. খরচ ও ভুল](10-disjoint-set-union/problems/017-road-construction.md#cost) → [৬. নিজে আবার করুন](10-disjoint-set-union/problems/017-road-construction.md#practice)

আটকে গেলে section-এর [ভিত্তি](10-disjoint-set-union/concept.md) · [চিত্র ও ব্যবহার](10-disjoint-set-union/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

</ol>
</details>

</div>

<div class="practice-chapter" data-family="range-queries" markdown="1">

## Segment Tree ও Fenwick Tree {#section-range-queries}

<details class="practice-section" data-section="range-queries" markdown="1">
<summary>Segment Tree ও Fenwick Tree <span class="section-count">18টি</span></summary>

**আগে বুঝে নিন:** prefix, interval, associative combine, update।

**আগে পড়ুন:** [ভিত্তি](11-segment-tree-and-fenwick-tree/learning-guide.md) · [চিত্র ও ব্যবহার](11-segment-tree-and-fenwick-tree/visual-explanation.md)।

**Section-এর বড় challenge:** [ধাপে ধাপে প্রয়োগ করুন](guided-practice/range-queries.md)। সব individual problem-এর বিকল্প নয়; প্রধান কৌশল একসঙ্গে ব্যবহার করার পরীক্ষা।

<ol class="practice-list" markdown="1">

<li class="practice-item" data-course="extension" data-must="1" data-search="Segment Tree ও Fenwick Tree 001 — Static Range Sum Queries prefix sums (frozen array, কোনো update নেই) Easy" markdown="1">
<label class="practice-check-label" for="check-range-queries-001"><input class="practice-check" type="checkbox" id="check-range-queries-001" data-key="11-segment-tree-and-fenwick-tree/problems/001-static-range-sum-queries.md" disabled><span class="ds-status">সমাধান করেছি: 001 — Static Range Sum Queries</span></label>
<div class="practice-problem" markdown="1">

**[001 — Static Range Sum Queries](11-segment-tree-and-fenwick-tree/problems/001-static-range-sum-queries.md)**

<p class="practice-pattern">prefix sums (frozen array, কোনো update নেই) · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-support" href="#course-map">বাড়তি অনুশীলন</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](11-segment-tree-and-fenwick-tree/problems/001-static-range-sum-queries.md#problem) → [২. ভিত্তি](11-segment-tree-and-fenwick-tree/problems/001-static-range-sum-queries.md#idea) → [৩. ধাপ ও ছবি](11-segment-tree-and-fenwick-tree/problems/001-static-range-sum-queries.md#walkthrough) → [৪. কোড](11-segment-tree-and-fenwick-tree/problems/001-static-range-sum-queries.md#code) → [৫. খরচ ও ভুল](11-segment-tree-and-fenwick-tree/problems/001-static-range-sum-queries.md#cost) → [৬. নিজে আবার করুন](11-segment-tree-and-fenwick-tree/problems/001-static-range-sum-queries.md#practice)

আটকে গেলে section-এর [ভিত্তি](11-segment-tree-and-fenwick-tree/learning-guide.md) · [চিত্র ও ব্যবহার](11-segment-tree-and-fenwick-tree/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="extension" data-must="0" data-search="Segment Tree ও Fenwick Tree 002 — Range Sum Query — Immutable prefix sums baseline, একটা reusable class-এ মোড়া Easy" markdown="1">
<label class="practice-check-label" for="check-range-queries-002"><input class="practice-check" type="checkbox" id="check-range-queries-002" data-key="11-segment-tree-and-fenwick-tree/problems/002-range-sum-query-immutable.md" disabled><span class="ds-status">সমাধান করেছি: 002 — Range Sum Query — Immutable</span></label>
<div class="practice-problem" markdown="1">

**[002 — Range Sum Query — Immutable](11-segment-tree-and-fenwick-tree/problems/002-range-sum-query-immutable.md)**

<p class="practice-pattern">prefix sums baseline, একটা reusable class-এ মোড়া · Easy</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">বাড়তি অনুশীলন</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](11-segment-tree-and-fenwick-tree/problems/002-range-sum-query-immutable.md#problem) → [২. ভিত্তি](11-segment-tree-and-fenwick-tree/problems/002-range-sum-query-immutable.md#idea) → [৩. ধাপ ও ছবি](11-segment-tree-and-fenwick-tree/problems/002-range-sum-query-immutable.md#walkthrough) → [৪. কোড](11-segment-tree-and-fenwick-tree/problems/002-range-sum-query-immutable.md#code) → [৫. খরচ ও ভুল](11-segment-tree-and-fenwick-tree/problems/002-range-sum-query-immutable.md#cost) → [৬. নিজে আবার করুন](11-segment-tree-and-fenwick-tree/problems/002-range-sum-query-immutable.md#practice)

আটকে গেলে section-এর [ভিত্তি](11-segment-tree-and-fenwick-tree/learning-guide.md) · [চিত্র ও ব্যবহার](11-segment-tree-and-fenwick-tree/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="extension" data-must="1" data-search="Segment Tree ও Fenwick Tree 003 — Hand-build a Segment Tree build + query tracing (হাতে tree আঁকা, কাগজে উত্তর বের করা) Easy" markdown="1">
<label class="practice-check-label" for="check-range-queries-003"><input class="practice-check" type="checkbox" id="check-range-queries-003" data-key="11-segment-tree-and-fenwick-tree/problems/003-hand-build-segment-tree.md" disabled><span class="ds-status">সমাধান করেছি: 003 — Hand-build a Segment Tree</span></label>
<div class="practice-problem" markdown="1">

**[003 — Hand-build a Segment Tree](11-segment-tree-and-fenwick-tree/problems/003-hand-build-segment-tree.md)**

<p class="practice-pattern">build + query tracing (হাতে tree আঁকা, কাগজে উত্তর বের করা) · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-support" href="#course-map">বাড়তি অনুশীলন</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](11-segment-tree-and-fenwick-tree/problems/003-hand-build-segment-tree.md#problem) → [২. ভিত্তি](11-segment-tree-and-fenwick-tree/problems/003-hand-build-segment-tree.md#idea) → [৩. ধাপ ও ছবি](11-segment-tree-and-fenwick-tree/problems/003-hand-build-segment-tree.md#walkthrough) → [৪. কোড](11-segment-tree-and-fenwick-tree/problems/003-hand-build-segment-tree.md#code) → [৫. খরচ ও ভুল](11-segment-tree-and-fenwick-tree/problems/003-hand-build-segment-tree.md#cost) → [৬. নিজে আবার করুন](11-segment-tree-and-fenwick-tree/problems/003-hand-build-segment-tree.md#practice)

আটকে গেলে section-এর [ভিত্তি](11-segment-tree-and-fenwick-tree/learning-guide.md) · [চিত্র ও ব্যবহার](11-segment-tree-and-fenwick-tree/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="extension" data-must="1" data-search="Segment Tree ও Fenwick Tree 004 — Hand-trace Fenwick Jumps lowbit navigation (index-jump hand-tracing) Easy" markdown="1">
<label class="practice-check-label" for="check-range-queries-004"><input class="practice-check" type="checkbox" id="check-range-queries-004" data-key="11-segment-tree-and-fenwick-tree/problems/004-hand-trace-fenwick-jumps.md" disabled><span class="ds-status">সমাধান করেছি: 004 — Hand-trace Fenwick Jumps</span></label>
<div class="practice-problem" markdown="1">

**[004 — Hand-trace Fenwick Jumps](11-segment-tree-and-fenwick-tree/problems/004-hand-trace-fenwick-jumps.md)**

<p class="practice-pattern">lowbit navigation (index-jump hand-tracing) · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-support" href="#course-map">বাড়তি অনুশীলন</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](11-segment-tree-and-fenwick-tree/problems/004-hand-trace-fenwick-jumps.md#problem) → [২. ভিত্তি](11-segment-tree-and-fenwick-tree/problems/004-hand-trace-fenwick-jumps.md#idea) → [৩. ধাপ ও ছবি](11-segment-tree-and-fenwick-tree/problems/004-hand-trace-fenwick-jumps.md#walkthrough) → [৪. কোড](11-segment-tree-and-fenwick-tree/problems/004-hand-trace-fenwick-jumps.md#code) → [৫. খরচ ও ভুল](11-segment-tree-and-fenwick-tree/problems/004-hand-trace-fenwick-jumps.md#cost) → [৬. নিজে আবার করুন](11-segment-tree-and-fenwick-tree/problems/004-hand-trace-fenwick-jumps.md#practice)

আটকে গেলে section-এর [ভিত্তি](11-segment-tree-and-fenwick-tree/learning-guide.md) · [চিত্র ও ব্যবহার](11-segment-tree-and-fenwick-tree/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="extension" data-must="1" data-search="Segment Tree ও Fenwick Tree 005 — Range Sum Query — Mutable segment tree / Fenwick core (point update + range sum) Medium" markdown="1">
<label class="practice-check-label" for="check-range-queries-005"><input class="practice-check" type="checkbox" id="check-range-queries-005" data-key="11-segment-tree-and-fenwick-tree/problems/005-range-sum-query-mutable.md" disabled><span class="ds-status">সমাধান করেছি: 005 — Range Sum Query — Mutable</span></label>
<div class="practice-problem" markdown="1">

**[005 — Range Sum Query — Mutable](11-segment-tree-and-fenwick-tree/problems/005-range-sum-query-mutable.md)**

<p class="practice-pattern">segment tree / Fenwick core (point update + range sum) · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-support" href="#course-map">বাড়তি অনুশীলন</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](11-segment-tree-and-fenwick-tree/problems/005-range-sum-query-mutable.md#problem) → [২. ভিত্তি](11-segment-tree-and-fenwick-tree/problems/005-range-sum-query-mutable.md#idea) → [৩. ধাপ ও ছবি](11-segment-tree-and-fenwick-tree/problems/005-range-sum-query-mutable.md#walkthrough) → [৪. কোড](11-segment-tree-and-fenwick-tree/problems/005-range-sum-query-mutable.md#code) → [৫. খরচ ও ভুল](11-segment-tree-and-fenwick-tree/problems/005-range-sum-query-mutable.md#cost) → [৬. নিজে আবার করুন](11-segment-tree-and-fenwick-tree/problems/005-range-sum-query-mutable.md#practice)

আটকে গেলে section-এর [ভিত্তি](11-segment-tree-and-fenwick-tree/learning-guide.md) · [চিত্র ও ব্যবহার](11-segment-tree-and-fenwick-tree/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="extension" data-must="1" data-search="Segment Tree ও Fenwick Tree 006 — Dynamic Range Sum Queries segment tree / Fenwick core (point update + range sum, contest scale) Medium" markdown="1">
<label class="practice-check-label" for="check-range-queries-006"><input class="practice-check" type="checkbox" id="check-range-queries-006" data-key="11-segment-tree-and-fenwick-tree/problems/006-dynamic-range-sum-queries.md" disabled><span class="ds-status">সমাধান করেছি: 006 — Dynamic Range Sum Queries</span></label>
<div class="practice-problem" markdown="1">

**[006 — Dynamic Range Sum Queries](11-segment-tree-and-fenwick-tree/problems/006-dynamic-range-sum-queries.md)**

<p class="practice-pattern">segment tree / Fenwick core (point update + range sum, contest scale) · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-support" href="#course-map">বাড়তি অনুশীলন</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](11-segment-tree-and-fenwick-tree/problems/006-dynamic-range-sum-queries.md#problem) → [২. ভিত্তি](11-segment-tree-and-fenwick-tree/problems/006-dynamic-range-sum-queries.md#idea) → [৩. ধাপ ও ছবি](11-segment-tree-and-fenwick-tree/problems/006-dynamic-range-sum-queries.md#walkthrough) → [৪. কোড](11-segment-tree-and-fenwick-tree/problems/006-dynamic-range-sum-queries.md#code) → [৫. খরচ ও ভুল](11-segment-tree-and-fenwick-tree/problems/006-dynamic-range-sum-queries.md#cost) → [৬. নিজে আবার করুন](11-segment-tree-and-fenwick-tree/problems/006-dynamic-range-sum-queries.md#practice)

আটকে গেলে section-এর [ভিত্তি](11-segment-tree-and-fenwick-tree/learning-guide.md) · [চিত্র ও ব্যবহার](11-segment-tree-and-fenwick-tree/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="extension" data-must="1" data-search="Segment Tree ও Fenwick Tree 007 — Dynamic Range Minimum Queries min segment tree (এখানে Fenwick চলবে না) Medium" markdown="1">
<label class="practice-check-label" for="check-range-queries-007"><input class="practice-check" type="checkbox" id="check-range-queries-007" data-key="11-segment-tree-and-fenwick-tree/problems/007-dynamic-range-min-queries.md" disabled><span class="ds-status">সমাধান করেছি: 007 — Dynamic Range Minimum Queries</span></label>
<div class="practice-problem" markdown="1">

**[007 — Dynamic Range Minimum Queries](11-segment-tree-and-fenwick-tree/problems/007-dynamic-range-min-queries.md)**

<p class="practice-pattern">min segment tree (এখানে Fenwick চলবে না) · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-support" href="#course-map">বাড়তি অনুশীলন</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](11-segment-tree-and-fenwick-tree/problems/007-dynamic-range-min-queries.md#problem) → [২. ভিত্তি](11-segment-tree-and-fenwick-tree/problems/007-dynamic-range-min-queries.md#idea) → [৩. ধাপ ও ছবি](11-segment-tree-and-fenwick-tree/problems/007-dynamic-range-min-queries.md#walkthrough) → [৪. কোড](11-segment-tree-and-fenwick-tree/problems/007-dynamic-range-min-queries.md#code) → [৫. খরচ ও ভুল](11-segment-tree-and-fenwick-tree/problems/007-dynamic-range-min-queries.md#cost) → [৬. নিজে আবার করুন](11-segment-tree-and-fenwick-tree/problems/007-dynamic-range-min-queries.md#practice)

আটকে গেলে section-এর [ভিত্তি](11-segment-tree-and-fenwick-tree/learning-guide.md) · [চিত্র ও ব্যবহার](11-segment-tree-and-fenwick-tree/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="extension" data-must="0" data-search="Segment Tree ও Fenwick Tree 008 — Range Xor Queries prefix xor / invertible ops (static range, tree লাগে না) Medium" markdown="1">
<label class="practice-check-label" for="check-range-queries-008"><input class="practice-check" type="checkbox" id="check-range-queries-008" data-key="11-segment-tree-and-fenwick-tree/problems/008-range-xor-queries.md" disabled><span class="ds-status">সমাধান করেছি: 008 — Range Xor Queries</span></label>
<div class="practice-problem" markdown="1">

**[008 — Range Xor Queries](11-segment-tree-and-fenwick-tree/problems/008-range-xor-queries.md)**

<p class="practice-pattern">prefix xor / invertible ops (static range, tree লাগে না) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">বাড়তি অনুশীলন</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](11-segment-tree-and-fenwick-tree/problems/008-range-xor-queries.md#problem) → [২. ভিত্তি](11-segment-tree-and-fenwick-tree/problems/008-range-xor-queries.md#idea) → [৩. ধাপ ও ছবি](11-segment-tree-and-fenwick-tree/problems/008-range-xor-queries.md#walkthrough) → [৪. কোড](11-segment-tree-and-fenwick-tree/problems/008-range-xor-queries.md#code) → [৫. খরচ ও ভুল](11-segment-tree-and-fenwick-tree/problems/008-range-xor-queries.md#cost) → [৬. নিজে আবার করুন](11-segment-tree-and-fenwick-tree/problems/008-range-xor-queries.md#practice)

আটকে গেলে section-এর [ভিত্তি](11-segment-tree-and-fenwick-tree/learning-guide.md) · [চিত্র ও ব্যবহার](11-segment-tree-and-fenwick-tree/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="extension" data-must="1" data-search="Segment Tree ও Fenwick Tree 009 — Blank-file Reimplementation from-memory implementation (দুটো structure-ই blank থেকে আবার লেখা) Medium" markdown="1">
<label class="practice-check-label" for="check-range-queries-009"><input class="practice-check" type="checkbox" id="check-range-queries-009" data-key="11-segment-tree-and-fenwick-tree/problems/009-blank-file-reimplementation.md" disabled><span class="ds-status">সমাধান করেছি: 009 — Blank-file Reimplementation</span></label>
<div class="practice-problem" markdown="1">

**[009 — Blank-file Reimplementation](11-segment-tree-and-fenwick-tree/problems/009-blank-file-reimplementation.md)**

<p class="practice-pattern">from-memory implementation (দুটো structure-ই blank থেকে আবার লেখা) · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-support" href="#course-map">বাড়তি অনুশীলন</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](11-segment-tree-and-fenwick-tree/problems/009-blank-file-reimplementation.md#problem) → [২. ভিত্তি](11-segment-tree-and-fenwick-tree/problems/009-blank-file-reimplementation.md#idea) → [৩. ধাপ ও ছবি](11-segment-tree-and-fenwick-tree/problems/009-blank-file-reimplementation.md#walkthrough) → [৪. কোড](11-segment-tree-and-fenwick-tree/problems/009-blank-file-reimplementation.md#code) → [৫. খরচ ও ভুল](11-segment-tree-and-fenwick-tree/problems/009-blank-file-reimplementation.md#cost) → [৬. নিজে আবার করুন](11-segment-tree-and-fenwick-tree/problems/009-blank-file-reimplementation.md#practice)

আটকে গেলে section-এর [ভিত্তি](11-segment-tree-and-fenwick-tree/learning-guide.md) · [চিত্র ও ব্যবহার](11-segment-tree-and-fenwick-tree/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="extension" data-must="1" data-search="Segment Tree ও Fenwick Tree 010 — Count Inversions Two Ways counting with BIT (merge sort vs Fenwick tree, পাশাপাশি) Medium" markdown="1">
<label class="practice-check-label" for="check-range-queries-010"><input class="practice-check" type="checkbox" id="check-range-queries-010" data-key="11-segment-tree-and-fenwick-tree/problems/010-count-inversions-two-ways.md" disabled><span class="ds-status">সমাধান করেছি: 010 — Count Inversions Two Ways</span></label>
<div class="practice-problem" markdown="1">

**[010 — Count Inversions Two Ways](11-segment-tree-and-fenwick-tree/problems/010-count-inversions-two-ways.md)**

<p class="practice-pattern">counting with BIT (merge sort vs Fenwick tree, পাশাপাশি) · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-support" href="#course-map">বাড়তি অনুশীলন</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](11-segment-tree-and-fenwick-tree/problems/010-count-inversions-two-ways.md#problem) → [২. ভিত্তি](11-segment-tree-and-fenwick-tree/problems/010-count-inversions-two-ways.md#idea) → [৩. ধাপ ও ছবি](11-segment-tree-and-fenwick-tree/problems/010-count-inversions-two-ways.md#walkthrough) → [৪. কোড](11-segment-tree-and-fenwick-tree/problems/010-count-inversions-two-ways.md#code) → [৫. খরচ ও ভুল](11-segment-tree-and-fenwick-tree/problems/010-count-inversions-two-ways.md#cost) → [৬. নিজে আবার করুন](11-segment-tree-and-fenwick-tree/problems/010-count-inversions-two-ways.md#practice)

আটকে গেলে section-এর [ভিত্তি](11-segment-tree-and-fenwick-tree/learning-guide.md) · [চিত্র ও ব্যবহার](11-segment-tree-and-fenwick-tree/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="extension" data-must="0" data-search="Segment Tree ও Fenwick Tree 011 — Forest Queries 2D prefix sums (static — tree লাগে না!) Medium" markdown="1">
<label class="practice-check-label" for="check-range-queries-011"><input class="practice-check" type="checkbox" id="check-range-queries-011" data-key="11-segment-tree-and-fenwick-tree/problems/011-forest-queries.md" disabled><span class="ds-status">সমাধান করেছি: 011 — Forest Queries</span></label>
<div class="practice-problem" markdown="1">

**[011 — Forest Queries](11-segment-tree-and-fenwick-tree/problems/011-forest-queries.md)**

<p class="practice-pattern">2D prefix sums (static — tree লাগে না!) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">বাড়তি অনুশীলন</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](11-segment-tree-and-fenwick-tree/problems/011-forest-queries.md#problem) → [২. ভিত্তি](11-segment-tree-and-fenwick-tree/problems/011-forest-queries.md#idea) → [৩. ধাপ ও ছবি](11-segment-tree-and-fenwick-tree/problems/011-forest-queries.md#walkthrough) → [৪. কোড](11-segment-tree-and-fenwick-tree/problems/011-forest-queries.md#code) → [৫. খরচ ও ভুল](11-segment-tree-and-fenwick-tree/problems/011-forest-queries.md#cost) → [৬. নিজে আবার করুন](11-segment-tree-and-fenwick-tree/problems/011-forest-queries.md#practice)

আটকে গেলে section-এর [ভিত্তি](11-segment-tree-and-fenwick-tree/learning-guide.md) · [চিত্র ও ব্যবহার](11-segment-tree-and-fenwick-tree/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="extension" data-must="0" data-search="Segment Tree ও Fenwick Tree 012 — BIT-accelerated LIS BIT accelerates DP transitions (value-indexed tree) Medium" markdown="1">
<label class="practice-check-label" for="check-range-queries-012"><input class="practice-check" type="checkbox" id="check-range-queries-012" data-key="11-segment-tree-and-fenwick-tree/problems/012-bit-accelerated-lis.md" disabled><span class="ds-status">সমাধান করেছি: 012 — BIT-accelerated LIS</span></label>
<div class="practice-problem" markdown="1">

**[012 — BIT-accelerated LIS](11-segment-tree-and-fenwick-tree/problems/012-bit-accelerated-lis.md)**

<p class="practice-pattern">BIT accelerates DP transitions (value-indexed tree) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">বাড়তি অনুশীলন</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](11-segment-tree-and-fenwick-tree/problems/012-bit-accelerated-lis.md#problem) → [২. ভিত্তি](11-segment-tree-and-fenwick-tree/problems/012-bit-accelerated-lis.md#idea) → [৩. ধাপ ও ছবি](11-segment-tree-and-fenwick-tree/problems/012-bit-accelerated-lis.md#walkthrough) → [৪. কোড](11-segment-tree-and-fenwick-tree/problems/012-bit-accelerated-lis.md#code) → [৫. খরচ ও ভুল](11-segment-tree-and-fenwick-tree/problems/012-bit-accelerated-lis.md#cost) → [৬. নিজে আবার করুন](11-segment-tree-and-fenwick-tree/problems/012-bit-accelerated-lis.md#practice)

আটকে গেলে section-এর [ভিত্তি](11-segment-tree-and-fenwick-tree/learning-guide.md) · [চিত্র ও ব্যবহার](11-segment-tree-and-fenwick-tree/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="extension" data-must="1" data-search="Segment Tree ও Fenwick Tree 013 — Count of Smaller Numbers After Self BIT + coordinate compression Hard" markdown="1">
<label class="practice-check-label" for="check-range-queries-013"><input class="practice-check" type="checkbox" id="check-range-queries-013" data-key="11-segment-tree-and-fenwick-tree/problems/013-count-of-smaller-after-self.md" disabled><span class="ds-status">সমাধান করেছি: 013 — Count of Smaller Numbers After Self</span></label>
<div class="practice-problem" markdown="1">

**[013 — Count of Smaller Numbers After Self](11-segment-tree-and-fenwick-tree/problems/013-count-of-smaller-after-self.md)**

<p class="practice-pattern">BIT + coordinate compression · Hard</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-support" href="#course-map">বাড়তি অনুশীলন</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](11-segment-tree-and-fenwick-tree/problems/013-count-of-smaller-after-self.md#problem) → [২. ভিত্তি](11-segment-tree-and-fenwick-tree/problems/013-count-of-smaller-after-self.md#idea) → [৩. ধাপ ও ছবি](11-segment-tree-and-fenwick-tree/problems/013-count-of-smaller-after-self.md#walkthrough) → [৪. কোড](11-segment-tree-and-fenwick-tree/problems/013-count-of-smaller-after-self.md#code) → [৫. খরচ ও ভুল](11-segment-tree-and-fenwick-tree/problems/013-count-of-smaller-after-self.md#cost) → [৬. নিজে আবার করুন](11-segment-tree-and-fenwick-tree/problems/013-count-of-smaller-after-self.md#practice)

আটকে গেলে section-এর [ভিত্তি](11-segment-tree-and-fenwick-tree/learning-guide.md) · [চিত্র ও ব্যবহার](11-segment-tree-and-fenwick-tree/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="extension" data-must="0" data-search="Segment Tree ও Fenwick Tree 014 — Reverse Pairs BIT / merge-sort counting Hard" markdown="1">
<label class="practice-check-label" for="check-range-queries-014"><input class="practice-check" type="checkbox" id="check-range-queries-014" data-key="11-segment-tree-and-fenwick-tree/problems/014-reverse-pairs.md" disabled><span class="ds-status">সমাধান করেছি: 014 — Reverse Pairs</span></label>
<div class="practice-problem" markdown="1">

**[014 — Reverse Pairs](11-segment-tree-and-fenwick-tree/problems/014-reverse-pairs.md)**

<p class="practice-pattern">BIT / merge-sort counting · Hard</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">বাড়তি অনুশীলন</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](11-segment-tree-and-fenwick-tree/problems/014-reverse-pairs.md#problem) → [২. ভিত্তি](11-segment-tree-and-fenwick-tree/problems/014-reverse-pairs.md#idea) → [৩. ধাপ ও ছবি](11-segment-tree-and-fenwick-tree/problems/014-reverse-pairs.md#walkthrough) → [৪. কোড](11-segment-tree-and-fenwick-tree/problems/014-reverse-pairs.md#code) → [৫. খরচ ও ভুল](11-segment-tree-and-fenwick-tree/problems/014-reverse-pairs.md#cost) → [৬. নিজে আবার করুন](11-segment-tree-and-fenwick-tree/problems/014-reverse-pairs.md#practice)

আটকে গেলে section-এর [ভিত্তি](11-segment-tree-and-fenwick-tree/learning-guide.md) · [চিত্র ও ব্যবহার](11-segment-tree-and-fenwick-tree/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="extension" data-must="1" data-search="Segment Tree ও Fenwick Tree 015 — Hotel Queries walk down a max segment tree (একটা tree বেয়ে নেমে প্রথম যোগ্য index খোঁজা) Hard" markdown="1">
<label class="practice-check-label" for="check-range-queries-015"><input class="practice-check" type="checkbox" id="check-range-queries-015" data-key="11-segment-tree-and-fenwick-tree/problems/015-hotel-queries.md" disabled><span class="ds-status">সমাধান করেছি: 015 — Hotel Queries</span></label>
<div class="practice-problem" markdown="1">

**[015 — Hotel Queries](11-segment-tree-and-fenwick-tree/problems/015-hotel-queries.md)**

<p class="practice-pattern">walk down a max segment tree (একটা tree বেয়ে নেমে প্রথম যোগ্য index খোঁজা) · Hard</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-support" href="#course-map">বাড়তি অনুশীলন</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](11-segment-tree-and-fenwick-tree/problems/015-hotel-queries.md#problem) → [২. ভিত্তি](11-segment-tree-and-fenwick-tree/problems/015-hotel-queries.md#idea) → [৩. ধাপ ও ছবি](11-segment-tree-and-fenwick-tree/problems/015-hotel-queries.md#walkthrough) → [৪. কোড](11-segment-tree-and-fenwick-tree/problems/015-hotel-queries.md#code) → [৫. খরচ ও ভুল](11-segment-tree-and-fenwick-tree/problems/015-hotel-queries.md#cost) → [৬. নিজে আবার করুন](11-segment-tree-and-fenwick-tree/problems/015-hotel-queries.md#practice)

আটকে গেলে section-এর [ভিত্তি](11-segment-tree-and-fenwick-tree/learning-guide.md) · [চিত্র ও ব্যবহার](11-segment-tree-and-fenwick-tree/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="extension" data-must="0" data-search="Segment Tree ও Fenwick Tree 016 — Salary Queries BIT over compressed values (value-দের উপর frequency table) Hard" markdown="1">
<label class="practice-check-label" for="check-range-queries-016"><input class="practice-check" type="checkbox" id="check-range-queries-016" data-key="11-segment-tree-and-fenwick-tree/problems/016-salary-queries.md" disabled><span class="ds-status">সমাধান করেছি: 016 — Salary Queries</span></label>
<div class="practice-problem" markdown="1">

**[016 — Salary Queries](11-segment-tree-and-fenwick-tree/problems/016-salary-queries.md)**

<p class="practice-pattern">BIT over compressed values (value-দের উপর frequency table) · Hard</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">বাড়তি অনুশীলন</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](11-segment-tree-and-fenwick-tree/problems/016-salary-queries.md#problem) → [২. ভিত্তি](11-segment-tree-and-fenwick-tree/problems/016-salary-queries.md#idea) → [৩. ধাপ ও ছবি](11-segment-tree-and-fenwick-tree/problems/016-salary-queries.md#walkthrough) → [৪. কোড](11-segment-tree-and-fenwick-tree/problems/016-salary-queries.md#code) → [৫. খরচ ও ভুল](11-segment-tree-and-fenwick-tree/problems/016-salary-queries.md#cost) → [৬. নিজে আবার করুন](11-segment-tree-and-fenwick-tree/problems/016-salary-queries.md#practice)

আটকে গেলে section-এর [ভিত্তি](11-segment-tree-and-fenwick-tree/learning-guide.md) · [চিত্র ও ব্যবহার](11-segment-tree-and-fenwick-tree/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="extension" data-must="0" data-search="Segment Tree ও Fenwick Tree 017 — My Calendar III sweep line / lazy-tree teaser (interval-এ +1, max overlap track) Hard" markdown="1">
<label class="practice-check-label" for="check-range-queries-017"><input class="practice-check" type="checkbox" id="check-range-queries-017" data-key="11-segment-tree-and-fenwick-tree/problems/017-my-calendar-iii.md" disabled><span class="ds-status">সমাধান করেছি: 017 — My Calendar III</span></label>
<div class="practice-problem" markdown="1">

**[017 — My Calendar III](11-segment-tree-and-fenwick-tree/problems/017-my-calendar-iii.md)**

<p class="practice-pattern">sweep line / lazy-tree teaser (interval-এ +1, max overlap track) · Hard</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">বাড়তি অনুশীলন</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](11-segment-tree-and-fenwick-tree/problems/017-my-calendar-iii.md#problem) → [২. ভিত্তি](11-segment-tree-and-fenwick-tree/problems/017-my-calendar-iii.md#idea) → [৩. ধাপ ও ছবি](11-segment-tree-and-fenwick-tree/problems/017-my-calendar-iii.md#walkthrough) → [৪. কোড](11-segment-tree-and-fenwick-tree/problems/017-my-calendar-iii.md#code) → [৫. খরচ ও ভুল](11-segment-tree-and-fenwick-tree/problems/017-my-calendar-iii.md#cost) → [৬. নিজে আবার করুন](11-segment-tree-and-fenwick-tree/problems/017-my-calendar-iii.md#practice)

আটকে গেলে section-এর [ভিত্তি](11-segment-tree-and-fenwick-tree/learning-guide.md) · [চিত্র ও ব্যবহার](11-segment-tree-and-fenwick-tree/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="extension" data-must="0" data-search="Segment Tree ও Fenwick Tree 018 — Codeforces Wild Pick: Recognizing the Segment-Tree Signal pattern recognition in the wild (editorial খোলার আগে structure চিনে নেওয়া) Hard" markdown="1">
<label class="practice-check-label" for="check-range-queries-018"><input class="practice-check" type="checkbox" id="check-range-queries-018" data-key="11-segment-tree-and-fenwick-tree/problems/018-codeforces-wild-pick.md" disabled><span class="ds-status">সমাধান করেছি: 018 — Codeforces Wild Pick: Recognizing the Segment-Tree Signal</span></label>
<div class="practice-problem" markdown="1">

**[018 — Codeforces Wild Pick: Recognizing the Segment-Tree Signal](11-segment-tree-and-fenwick-tree/problems/018-codeforces-wild-pick.md)**

<p class="practice-pattern">pattern recognition in the wild (editorial খোলার আগে structure চিনে নেওয়া) · Hard</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">বাড়তি অনুশীলন</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](11-segment-tree-and-fenwick-tree/problems/018-codeforces-wild-pick.md#problem) → [২. ভিত্তি](11-segment-tree-and-fenwick-tree/problems/018-codeforces-wild-pick.md#idea) → [৩. ধাপ ও ছবি](11-segment-tree-and-fenwick-tree/problems/018-codeforces-wild-pick.md#walkthrough) → [৪. কোড](11-segment-tree-and-fenwick-tree/problems/018-codeforces-wild-pick.md#code) → [৫. খরচ ও ভুল](11-segment-tree-and-fenwick-tree/problems/018-codeforces-wild-pick.md#cost) → [৬. নিজে আবার করুন](11-segment-tree-and-fenwick-tree/problems/018-codeforces-wild-pick.md#practice)

আটকে গেলে section-এর [ভিত্তি](11-segment-tree-and-fenwick-tree/learning-guide.md) · [চিত্র ও ব্যবহার](11-segment-tree-and-fenwick-tree/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

</ol>
</details>

</div>

<div class="practice-chapter" data-family="dp" markdown="1">

## Dynamic Programming {#section-dp}

<details class="practice-section" data-section="dp" markdown="1">
<summary>Dynamic Programming <span class="section-count">24টি</span></summary>

**আগে বুঝে নিন:** recurrence, state, dependency, memo/table।

**আগে পড়ুন:** [ভিত্তি](12-dynamic-programming/concept.md) · [চিত্র ও ব্যবহার](12-dynamic-programming/visual-explanation.md)।

**Section-এর বড় challenge:** [ধাপে ধাপে প্রয়োগ করুন](guided-practice/dynamic-programming.md)। সব individual problem-এর বিকল্প নয়; প্রধান কৌশল একসঙ্গে ব্যবহার করার পরীক্ষা।

<ol class="practice-list" markdown="1">

<li class="practice-item" data-course="M4" data-must="1" data-search="Dynamic Programming 001 — Fibonacci Number 1D linear DP Easy" markdown="1">
<label class="practice-check-label" for="check-dp-001"><input class="practice-check" type="checkbox" id="check-dp-001" data-key="12-dynamic-programming/problems/001-fibonacci-three-ways.md" disabled><span class="ds-status">সমাধান করেছি: 001 — Fibonacci Number</span></label>
<div class="practice-problem" markdown="1">

**[001 — Fibonacci Number](12-dynamic-programming/problems/001-fibonacci-three-ways.md)**

<p class="practice-pattern">1D linear DP · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](12-dynamic-programming/problems/001-fibonacci-three-ways.md#problem) → [২. ভিত্তি](12-dynamic-programming/problems/001-fibonacci-three-ways.md#idea) → [৩. ধাপ ও ছবি](12-dynamic-programming/problems/001-fibonacci-three-ways.md#walkthrough) → [৪. কোড](12-dynamic-programming/problems/001-fibonacci-three-ways.md#code) → [৫. খরচ ও ভুল](12-dynamic-programming/problems/001-fibonacci-three-ways.md#cost) → [৬. নিজে আবার করুন](12-dynamic-programming/problems/001-fibonacci-three-ways.md#practice)

আটকে গেলে section-এর [ভিত্তি](12-dynamic-programming/concept.md) · [চিত্র ও ব্যবহার](12-dynamic-programming/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M4" data-must="1" data-search="Dynamic Programming 002 — Climbing Stairs 1D linear DP (counting) Easy" markdown="1">
<label class="practice-check-label" for="check-dp-002"><input class="practice-check" type="checkbox" id="check-dp-002" data-key="12-dynamic-programming/problems/002-climbing-stairs.md" disabled><span class="ds-status">সমাধান করেছি: 002 — Climbing Stairs</span></label>
<div class="practice-problem" markdown="1">

**[002 — Climbing Stairs](12-dynamic-programming/problems/002-climbing-stairs.md)**

<p class="practice-pattern">1D linear DP (counting) · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](12-dynamic-programming/problems/002-climbing-stairs.md#problem) → [২. ভিত্তি](12-dynamic-programming/problems/002-climbing-stairs.md#idea) → [৩. ধাপ ও ছবি](12-dynamic-programming/problems/002-climbing-stairs.md#walkthrough) → [৪. কোড](12-dynamic-programming/problems/002-climbing-stairs.md#code) → [৫. খরচ ও ভুল](12-dynamic-programming/problems/002-climbing-stairs.md#cost) → [৬. নিজে আবার করুন](12-dynamic-programming/problems/002-climbing-stairs.md#practice)

আটকে গেলে section-এর [ভিত্তি](12-dynamic-programming/concept.md) · [চিত্র ও ব্যবহার](12-dynamic-programming/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M4" data-must="1" data-search="Dynamic Programming 003 — Min Cost Climbing Stairs 1D linear DP (min) Easy" markdown="1">
<label class="practice-check-label" for="check-dp-003"><input class="practice-check" type="checkbox" id="check-dp-003" data-key="12-dynamic-programming/problems/003-min-cost-climbing-stairs.md" disabled><span class="ds-status">সমাধান করেছি: 003 — Min Cost Climbing Stairs</span></label>
<div class="practice-problem" markdown="1">

**[003 — Min Cost Climbing Stairs](12-dynamic-programming/problems/003-min-cost-climbing-stairs.md)**

<p class="practice-pattern">1D linear DP (min) · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](12-dynamic-programming/problems/003-min-cost-climbing-stairs.md#problem) → [২. ভিত্তি](12-dynamic-programming/problems/003-min-cost-climbing-stairs.md#idea) → [৩. ধাপ ও ছবি](12-dynamic-programming/problems/003-min-cost-climbing-stairs.md#walkthrough) → [৪. কোড](12-dynamic-programming/problems/003-min-cost-climbing-stairs.md#code) → [৫. খরচ ও ভুল](12-dynamic-programming/problems/003-min-cost-climbing-stairs.md#cost) → [৬. নিজে আবার করুন](12-dynamic-programming/problems/003-min-cost-climbing-stairs.md#practice)

আটকে গেলে section-এর [ভিত্তি](12-dynamic-programming/concept.md) · [চিত্র ও ব্যবহার](12-dynamic-programming/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M4" data-must="0" data-search="Dynamic Programming 004 — Dice Combinations 1D counting DP Easy" markdown="1">
<label class="practice-check-label" for="check-dp-004"><input class="practice-check" type="checkbox" id="check-dp-004" data-key="12-dynamic-programming/problems/004-dice-combinations.md" disabled><span class="ds-status">সমাধান করেছি: 004 — Dice Combinations</span></label>
<div class="practice-problem" markdown="1">

**[004 — Dice Combinations](12-dynamic-programming/problems/004-dice-combinations.md)**

<p class="practice-pattern">1D counting DP · Easy</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](12-dynamic-programming/problems/004-dice-combinations.md#problem) → [২. ভিত্তি](12-dynamic-programming/problems/004-dice-combinations.md#idea) → [৩. ধাপ ও ছবি](12-dynamic-programming/problems/004-dice-combinations.md#walkthrough) → [৪. কোড](12-dynamic-programming/problems/004-dice-combinations.md#code) → [৫. খরচ ও ভুল](12-dynamic-programming/problems/004-dice-combinations.md#cost) → [৬. নিজে আবার করুন](12-dynamic-programming/problems/004-dice-combinations.md#practice)

আটকে গেলে section-এর [ভিত্তি](12-dynamic-programming/concept.md) · [চিত্র ও ব্যবহার](12-dynamic-programming/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M4" data-must="1" data-search="Dynamic Programming 005 — Maximum Subarray 1D linear DP, &quot;ends-at-i&quot; anchor Easy" markdown="1">
<label class="practice-check-label" for="check-dp-005"><input class="practice-check" type="checkbox" id="check-dp-005" data-key="12-dynamic-programming/problems/005-maximum-subarray-as-dp.md" disabled><span class="ds-status">সমাধান করেছি: 005 — Maximum Subarray</span></label>
<div class="practice-problem" markdown="1">

**[005 — Maximum Subarray](12-dynamic-programming/problems/005-maximum-subarray-as-dp.md)**

<p class="practice-pattern">1D linear DP, &quot;ends-at-i&quot; anchor · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](12-dynamic-programming/problems/005-maximum-subarray-as-dp.md#problem) → [২. ভিত্তি](12-dynamic-programming/problems/005-maximum-subarray-as-dp.md#idea) → [৩. ধাপ ও ছবি](12-dynamic-programming/problems/005-maximum-subarray-as-dp.md#walkthrough) → [৪. কোড](12-dynamic-programming/problems/005-maximum-subarray-as-dp.md#code) → [৫. খরচ ও ভুল](12-dynamic-programming/problems/005-maximum-subarray-as-dp.md#cost) → [৬. নিজে আবার করুন](12-dynamic-programming/problems/005-maximum-subarray-as-dp.md#practice)

আটকে গেলে section-এর [ভিত্তি](12-dynamic-programming/concept.md) · [চিত্র ও ব্যবহার](12-dynamic-programming/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M4" data-must="1" data-search="Dynamic Programming 006 — House Robber 1D take-or-skip DP Medium" markdown="1">
<label class="practice-check-label" for="check-dp-006"><input class="practice-check" type="checkbox" id="check-dp-006" data-key="12-dynamic-programming/problems/006-house-robber.md" disabled><span class="ds-status">সমাধান করেছি: 006 — House Robber</span></label>
<div class="practice-problem" markdown="1">

**[006 — House Robber](12-dynamic-programming/problems/006-house-robber.md)**

<p class="practice-pattern">1D take-or-skip DP · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](12-dynamic-programming/problems/006-house-robber.md#problem) → [২. ভিত্তি](12-dynamic-programming/problems/006-house-robber.md#idea) → [৩. ধাপ ও ছবি](12-dynamic-programming/problems/006-house-robber.md#walkthrough) → [৪. কোড](12-dynamic-programming/problems/006-house-robber.md#code) → [৫. খরচ ও ভুল](12-dynamic-programming/problems/006-house-robber.md#cost) → [৬. নিজে আবার করুন](12-dynamic-programming/problems/006-house-robber.md#practice)

আটকে গেলে section-এর [ভিত্তি](12-dynamic-programming/concept.md) · [চিত্র ও ব্যবহার](12-dynamic-programming/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M4" data-must="1" data-search="Dynamic Programming 007 — Unique Paths Grid DP (counting) Medium" markdown="1">
<label class="practice-check-label" for="check-dp-007"><input class="practice-check" type="checkbox" id="check-dp-007" data-key="12-dynamic-programming/problems/007-unique-paths.md" disabled><span class="ds-status">সমাধান করেছি: 007 — Unique Paths</span></label>
<div class="practice-problem" markdown="1">

**[007 — Unique Paths](12-dynamic-programming/problems/007-unique-paths.md)**

<p class="practice-pattern">Grid DP (counting) · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](12-dynamic-programming/problems/007-unique-paths.md#problem) → [২. ভিত্তি](12-dynamic-programming/problems/007-unique-paths.md#idea) → [৩. ধাপ ও ছবি](12-dynamic-programming/problems/007-unique-paths.md#walkthrough) → [৪. কোড](12-dynamic-programming/problems/007-unique-paths.md#code) → [৫. খরচ ও ভুল](12-dynamic-programming/problems/007-unique-paths.md#cost) → [৬. নিজে আবার করুন](12-dynamic-programming/problems/007-unique-paths.md#practice)

আটকে গেলে section-এর [ভিত্তি](12-dynamic-programming/concept.md) · [চিত্র ও ব্যবহার](12-dynamic-programming/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M4" data-must="1" data-search="Dynamic Programming 008 — Grid Paths Grid DP + obstacles Medium" markdown="1">
<label class="practice-check-label" for="check-dp-008"><input class="practice-check" type="checkbox" id="check-dp-008" data-key="12-dynamic-programming/problems/008-grid-paths-with-traps.md" disabled><span class="ds-status">সমাধান করেছি: 008 — Grid Paths</span></label>
<div class="practice-problem" markdown="1">

**[008 — Grid Paths](12-dynamic-programming/problems/008-grid-paths-with-traps.md)**

<p class="practice-pattern">Grid DP + obstacles · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](12-dynamic-programming/problems/008-grid-paths-with-traps.md#problem) → [২. ভিত্তি](12-dynamic-programming/problems/008-grid-paths-with-traps.md#idea) → [৩. ধাপ ও ছবি](12-dynamic-programming/problems/008-grid-paths-with-traps.md#walkthrough) → [৪. কোড](12-dynamic-programming/problems/008-grid-paths-with-traps.md#code) → [৫. খরচ ও ভুল](12-dynamic-programming/problems/008-grid-paths-with-traps.md#cost) → [৬. নিজে আবার করুন](12-dynamic-programming/problems/008-grid-paths-with-traps.md#practice)

আটকে গেলে section-এর [ভিত্তি](12-dynamic-programming/concept.md) · [চিত্র ও ব্যবহার](12-dynamic-programming/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M4" data-must="0" data-search="Dynamic Programming 009 — Minimum Path Sum Grid DP (min) Medium" markdown="1">
<label class="practice-check-label" for="check-dp-009"><input class="practice-check" type="checkbox" id="check-dp-009" data-key="12-dynamic-programming/problems/009-minimum-path-sum.md" disabled><span class="ds-status">সমাধান করেছি: 009 — Minimum Path Sum</span></label>
<div class="practice-problem" markdown="1">

**[009 — Minimum Path Sum](12-dynamic-programming/problems/009-minimum-path-sum.md)**

<p class="practice-pattern">Grid DP (min) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](12-dynamic-programming/problems/009-minimum-path-sum.md#problem) → [২. ভিত্তি](12-dynamic-programming/problems/009-minimum-path-sum.md#idea) → [৩. ধাপ ও ছবি](12-dynamic-programming/problems/009-minimum-path-sum.md#walkthrough) → [৪. কোড](12-dynamic-programming/problems/009-minimum-path-sum.md#code) → [৫. খরচ ও ভুল](12-dynamic-programming/problems/009-minimum-path-sum.md#cost) → [৬. নিজে আবার করুন](12-dynamic-programming/problems/009-minimum-path-sum.md#practice)

আটকে গেলে section-এর [ভিত্তি](12-dynamic-programming/concept.md) · [চিত্র ও ব্যবহার](12-dynamic-programming/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M4" data-must="1" data-search="Dynamic Programming 010 — Coin Change Unbounded knapsack (min) Medium" markdown="1">
<label class="practice-check-label" for="check-dp-010"><input class="practice-check" type="checkbox" id="check-dp-010" data-key="12-dynamic-programming/problems/010-coin-change-min.md" disabled><span class="ds-status">সমাধান করেছি: 010 — Coin Change</span></label>
<div class="practice-problem" markdown="1">

**[010 — Coin Change](12-dynamic-programming/problems/010-coin-change-min.md)**

<p class="practice-pattern">Unbounded knapsack (min) · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](12-dynamic-programming/problems/010-coin-change-min.md#problem) → [২. ভিত্তি](12-dynamic-programming/problems/010-coin-change-min.md#idea) → [৩. ধাপ ও ছবি](12-dynamic-programming/problems/010-coin-change-min.md#walkthrough) → [৪. কোড](12-dynamic-programming/problems/010-coin-change-min.md#code) → [৫. খরচ ও ভুল](12-dynamic-programming/problems/010-coin-change-min.md#cost) → [৬. নিজে আবার করুন](12-dynamic-programming/problems/010-coin-change-min.md#practice)

আটকে গেলে section-এর [ভিত্তি](12-dynamic-programming/concept.md) · [চিত্র ও ব্যবহার](12-dynamic-programming/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M4" data-must="0" data-search="Dynamic Programming 011 — Minimizing Coins Unbounded knapsack (min) Medium" markdown="1">
<label class="practice-check-label" for="check-dp-011"><input class="practice-check" type="checkbox" id="check-dp-011" data-key="12-dynamic-programming/problems/011-minimizing-coins.md" disabled><span class="ds-status">সমাধান করেছি: 011 — Minimizing Coins</span></label>
<div class="practice-problem" markdown="1">

**[011 — Minimizing Coins](12-dynamic-programming/problems/011-minimizing-coins.md)**

<p class="practice-pattern">Unbounded knapsack (min) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](12-dynamic-programming/problems/011-minimizing-coins.md#problem) → [২. ভিত্তি](12-dynamic-programming/problems/011-minimizing-coins.md#idea) → [৩. ধাপ ও ছবি](12-dynamic-programming/problems/011-minimizing-coins.md#walkthrough) → [৪. কোড](12-dynamic-programming/problems/011-minimizing-coins.md#code) → [৫. খরচ ও ভুল](12-dynamic-programming/problems/011-minimizing-coins.md#cost) → [৬. নিজে আবার করুন](12-dynamic-programming/problems/011-minimizing-coins.md#practice)

আটকে গেলে section-এর [ভিত্তি](12-dynamic-programming/concept.md) · [চিত্র ও ব্যবহার](12-dynamic-programming/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M4" data-must="1" data-search="Dynamic Programming 012 — Coin Combinations I Unbounded counting Medium" markdown="1">
<label class="practice-check-label" for="check-dp-012"><input class="practice-check" type="checkbox" id="check-dp-012" data-key="12-dynamic-programming/problems/012-coin-combinations-i.md" disabled><span class="ds-status">সমাধান করেছি: 012 — Coin Combinations I</span></label>
<div class="practice-problem" markdown="1">

**[012 — Coin Combinations I](12-dynamic-programming/problems/012-coin-combinations-i.md)**

<p class="practice-pattern">Unbounded counting · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](12-dynamic-programming/problems/012-coin-combinations-i.md#problem) → [২. ভিত্তি](12-dynamic-programming/problems/012-coin-combinations-i.md#idea) → [৩. ধাপ ও ছবি](12-dynamic-programming/problems/012-coin-combinations-i.md#walkthrough) → [৪. কোড](12-dynamic-programming/problems/012-coin-combinations-i.md#code) → [৫. খরচ ও ভুল](12-dynamic-programming/problems/012-coin-combinations-i.md#cost) → [৬. নিজে আবার করুন](12-dynamic-programming/problems/012-coin-combinations-i.md#practice)

আটকে গেলে section-এর [ভিত্তি](12-dynamic-programming/concept.md) · [চিত্র ও ব্যবহার](12-dynamic-programming/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M4" data-must="1" data-search="Dynamic Programming 013 — Partition Equal Subset Sum Subset-sum (0/1, boolean) Medium" markdown="1">
<label class="practice-check-label" for="check-dp-013"><input class="practice-check" type="checkbox" id="check-dp-013" data-key="12-dynamic-programming/problems/013-partition-equal-subset-sum.md" disabled><span class="ds-status">সমাধান করেছি: 013 — Partition Equal Subset Sum</span></label>
<div class="practice-problem" markdown="1">

**[013 — Partition Equal Subset Sum](12-dynamic-programming/problems/013-partition-equal-subset-sum.md)**

<p class="practice-pattern">Subset-sum (0/1, boolean) · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](12-dynamic-programming/problems/013-partition-equal-subset-sum.md#problem) → [২. ভিত্তি](12-dynamic-programming/problems/013-partition-equal-subset-sum.md#idea) → [৩. ধাপ ও ছবি](12-dynamic-programming/problems/013-partition-equal-subset-sum.md#walkthrough) → [৪. কোড](12-dynamic-programming/problems/013-partition-equal-subset-sum.md#code) → [৫. খরচ ও ভুল](12-dynamic-programming/problems/013-partition-equal-subset-sum.md#cost) → [৬. নিজে আবার করুন](12-dynamic-programming/problems/013-partition-equal-subset-sum.md#practice)

আটকে গেলে section-এর [ভিত্তি](12-dynamic-programming/concept.md) · [চিত্র ও ব্যবহার](12-dynamic-programming/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M4" data-must="1" data-search="Dynamic Programming 014 — Book Shop 0/1 knapsack Medium" markdown="1">
<label class="practice-check-label" for="check-dp-014"><input class="practice-check" type="checkbox" id="check-dp-014" data-key="12-dynamic-programming/problems/014-book-shop-knapsack.md" disabled><span class="ds-status">সমাধান করেছি: 014 — Book Shop</span></label>
<div class="practice-problem" markdown="1">

**[014 — Book Shop](12-dynamic-programming/problems/014-book-shop-knapsack.md)**

<p class="practice-pattern">0/1 knapsack · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](12-dynamic-programming/problems/014-book-shop-knapsack.md#problem) → [২. ভিত্তি](12-dynamic-programming/problems/014-book-shop-knapsack.md#idea) → [৩. ধাপ ও ছবি](12-dynamic-programming/problems/014-book-shop-knapsack.md#walkthrough) → [৪. কোড](12-dynamic-programming/problems/014-book-shop-knapsack.md#code) → [৫. খরচ ও ভুল](12-dynamic-programming/problems/014-book-shop-knapsack.md#cost) → [৬. নিজে আবার করুন](12-dynamic-programming/problems/014-book-shop-knapsack.md#practice)

আটকে গেলে section-এর [ভিত্তি](12-dynamic-programming/concept.md) · [চিত্র ও ব্যবহার](12-dynamic-programming/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M4" data-must="1" data-search="Dynamic Programming 015 — Longest Increasing Subsequence LIS family Medium" markdown="1">
<label class="practice-check-label" for="check-dp-015"><input class="practice-check" type="checkbox" id="check-dp-015" data-key="12-dynamic-programming/problems/015-lis-n-squared.md" disabled><span class="ds-status">সমাধান করেছি: 015 — Longest Increasing Subsequence</span></label>
<div class="practice-problem" markdown="1">

**[015 — Longest Increasing Subsequence](12-dynamic-programming/problems/015-lis-n-squared.md)**

<p class="practice-pattern">LIS family · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](12-dynamic-programming/problems/015-lis-n-squared.md#problem) → [২. ভিত্তি](12-dynamic-programming/problems/015-lis-n-squared.md#idea) → [৩. ধাপ ও ছবি](12-dynamic-programming/problems/015-lis-n-squared.md#walkthrough) → [৪. কোড](12-dynamic-programming/problems/015-lis-n-squared.md#code) → [৫. খরচ ও ভুল](12-dynamic-programming/problems/015-lis-n-squared.md#cost) → [৬. নিজে আবার করুন](12-dynamic-programming/problems/015-lis-n-squared.md#practice)

আটকে গেলে section-এর [ভিত্তি](12-dynamic-programming/concept.md) · [চিত্র ও ব্যবহার](12-dynamic-programming/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M4" data-must="1" data-search="Dynamic Programming 016 — Word Break 1D over string prefixes Medium" markdown="1">
<label class="practice-check-label" for="check-dp-016"><input class="practice-check" type="checkbox" id="check-dp-016" data-key="12-dynamic-programming/problems/016-word-break.md" disabled><span class="ds-status">সমাধান করেছি: 016 — Word Break</span></label>
<div class="practice-problem" markdown="1">

**[016 — Word Break](12-dynamic-programming/problems/016-word-break.md)**

<p class="practice-pattern">1D over string prefixes · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](12-dynamic-programming/problems/016-word-break.md#problem) → [২. ভিত্তি](12-dynamic-programming/problems/016-word-break.md#idea) → [৩. ধাপ ও ছবি](12-dynamic-programming/problems/016-word-break.md#walkthrough) → [৪. কোড](12-dynamic-programming/problems/016-word-break.md#code) → [৫. খরচ ও ভুল](12-dynamic-programming/problems/016-word-break.md#cost) → [৬. নিজে আবার করুন](12-dynamic-programming/problems/016-word-break.md#practice)

আটকে গেলে section-এর [ভিত্তি](12-dynamic-programming/concept.md) · [চিত্র ও ব্যবহার](12-dynamic-programming/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M4" data-must="1" data-search="Dynamic Programming 017 — Longest Common Subsequence String DP (two-prefix state shape) Medium" markdown="1">
<label class="practice-check-label" for="check-dp-017"><input class="practice-check" type="checkbox" id="check-dp-017" data-key="12-dynamic-programming/problems/017-longest-common-subsequence.md" disabled><span class="ds-status">সমাধান করেছি: 017 — Longest Common Subsequence</span></label>
<div class="practice-problem" markdown="1">

**[017 — Longest Common Subsequence](12-dynamic-programming/problems/017-longest-common-subsequence.md)**

<p class="practice-pattern">String DP (two-prefix state shape) · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](12-dynamic-programming/problems/017-longest-common-subsequence.md#problem) → [২. ভিত্তি](12-dynamic-programming/problems/017-longest-common-subsequence.md#idea) → [৩. ধাপ ও ছবি](12-dynamic-programming/problems/017-longest-common-subsequence.md#walkthrough) → [৪. কোড](12-dynamic-programming/problems/017-longest-common-subsequence.md#code) → [৫. খরচ ও ভুল](12-dynamic-programming/problems/017-longest-common-subsequence.md#cost) → [৬. নিজে আবার করুন](12-dynamic-programming/problems/017-longest-common-subsequence.md#practice)

আটকে গেলে section-এর [ভিত্তি](12-dynamic-programming/concept.md) · [চিত্র ও ব্যবহার](12-dynamic-programming/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M4" data-must="1" data-search="Dynamic Programming 018 — Edit Distance String DP (two-prefix grid, three-way transition) Hard" markdown="1">
<label class="practice-check-label" for="check-dp-018"><input class="practice-check" type="checkbox" id="check-dp-018" data-key="12-dynamic-programming/problems/018-edit-distance.md" disabled><span class="ds-status">সমাধান করেছি: 018 — Edit Distance</span></label>
<div class="practice-problem" markdown="1">

**[018 — Edit Distance](12-dynamic-programming/problems/018-edit-distance.md)**

<p class="practice-pattern">String DP (two-prefix grid, three-way transition) · Hard</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](12-dynamic-programming/problems/018-edit-distance.md#problem) → [২. ভিত্তি](12-dynamic-programming/problems/018-edit-distance.md#idea) → [৩. ধাপ ও ছবি](12-dynamic-programming/problems/018-edit-distance.md#walkthrough) → [৪. কোড](12-dynamic-programming/problems/018-edit-distance.md#code) → [৫. খরচ ও ভুল](12-dynamic-programming/problems/018-edit-distance.md#cost) → [৬. নিজে আবার করুন](12-dynamic-programming/problems/018-edit-distance.md#practice)

আটকে গেলে section-এর [ভিত্তি](12-dynamic-programming/concept.md) · [চিত্র ও ব্যবহার](12-dynamic-programming/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M4" data-must="0" data-search="Dynamic Programming 019 — LIS in O(n log n) LIS family + binary search Hard" markdown="1">
<label class="practice-check-label" for="check-dp-019"><input class="practice-check" type="checkbox" id="check-dp-019" data-key="12-dynamic-programming/problems/019-lis-n-log-n.md" disabled><span class="ds-status">সমাধান করেছি: 019 — LIS in O(n log n)</span></label>
<div class="practice-problem" markdown="1">

**[019 — LIS in O(n log n)](12-dynamic-programming/problems/019-lis-n-log-n.md)**

<p class="practice-pattern">LIS family + binary search · Hard</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](12-dynamic-programming/problems/019-lis-n-log-n.md#problem) → [২. ভিত্তি](12-dynamic-programming/problems/019-lis-n-log-n.md#idea) → [৩. ধাপ ও ছবি](12-dynamic-programming/problems/019-lis-n-log-n.md#walkthrough) → [৪. কোড](12-dynamic-programming/problems/019-lis-n-log-n.md#code) → [৫. খরচ ও ভুল](12-dynamic-programming/problems/019-lis-n-log-n.md#cost) → [৬. নিজে আবার করুন](12-dynamic-programming/problems/019-lis-n-log-n.md#practice)

আটকে গেলে section-এর [ভিত্তি](12-dynamic-programming/concept.md) · [চিত্র ও ব্যবহার](12-dynamic-programming/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M4" data-must="0" data-search="Dynamic Programming 020 — House Robber on a Circle 1D take-or-skip DP + case split Hard" markdown="1">
<label class="practice-check-label" for="check-dp-020"><input class="practice-check" type="checkbox" id="check-dp-020" data-key="12-dynamic-programming/problems/020-house-robber-circular.md" disabled><span class="ds-status">সমাধান করেছি: 020 — House Robber on a Circle</span></label>
<div class="practice-problem" markdown="1">

**[020 — House Robber on a Circle](12-dynamic-programming/problems/020-house-robber-circular.md)**

<p class="practice-pattern">1D take-or-skip DP + case split · Hard</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](12-dynamic-programming/problems/020-house-robber-circular.md#problem) → [২. ভিত্তি](12-dynamic-programming/problems/020-house-robber-circular.md#idea) → [৩. ধাপ ও ছবি](12-dynamic-programming/problems/020-house-robber-circular.md#walkthrough) → [৪. কোড](12-dynamic-programming/problems/020-house-robber-circular.md#code) → [৫. খরচ ও ভুল](12-dynamic-programming/problems/020-house-robber-circular.md#cost) → [৬. নিজে আবার করুন](12-dynamic-programming/problems/020-house-robber-circular.md#practice)

আটকে গেলে section-এর [ভিত্তি](12-dynamic-programming/concept.md) · [চিত্র ও ব্যবহার](12-dynamic-programming/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M4" data-must="0" data-search="Dynamic Programming 021 — Burst Balloons Interval DP Hard" markdown="1">
<label class="practice-check-label" for="check-dp-021"><input class="practice-check" type="checkbox" id="check-dp-021" data-key="12-dynamic-programming/problems/021-burst-balloons.md" disabled><span class="ds-status">সমাধান করেছি: 021 — Burst Balloons</span></label>
<div class="practice-problem" markdown="1">

**[021 — Burst Balloons](12-dynamic-programming/problems/021-burst-balloons.md)**

<p class="practice-pattern">Interval DP · Hard</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](12-dynamic-programming/problems/021-burst-balloons.md#problem) → [২. ভিত্তি](12-dynamic-programming/problems/021-burst-balloons.md#idea) → [৩. ধাপ ও ছবি](12-dynamic-programming/problems/021-burst-balloons.md#walkthrough) → [৪. কোড](12-dynamic-programming/problems/021-burst-balloons.md#code) → [৫. খরচ ও ভুল](12-dynamic-programming/problems/021-burst-balloons.md#cost) → [৬. নিজে আবার করুন](12-dynamic-programming/problems/021-burst-balloons.md#practice)

আটকে গেলে section-এর [ভিত্তি](12-dynamic-programming/concept.md) · [চিত্র ও ব্যবহার](12-dynamic-programming/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M4" data-must="0" data-search="Dynamic Programming 022 — Regular Expression Matching String DP, hard transitions Hard" markdown="1">
<label class="practice-check-label" for="check-dp-022"><input class="practice-check" type="checkbox" id="check-dp-022" data-key="12-dynamic-programming/problems/022-regex-matching.md" disabled><span class="ds-status">সমাধান করেছি: 022 — Regular Expression Matching</span></label>
<div class="practice-problem" markdown="1">

**[022 — Regular Expression Matching](12-dynamic-programming/problems/022-regex-matching.md)**

<p class="practice-pattern">String DP, hard transitions · Hard</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](12-dynamic-programming/problems/022-regex-matching.md#problem) → [২. ভিত্তি](12-dynamic-programming/problems/022-regex-matching.md#idea) → [৩. ধাপ ও ছবি](12-dynamic-programming/problems/022-regex-matching.md#walkthrough) → [৪. কোড](12-dynamic-programming/problems/022-regex-matching.md#code) → [৫. খরচ ও ভুল](12-dynamic-programming/problems/022-regex-matching.md#cost) → [৬. নিজে আবার করুন](12-dynamic-programming/problems/022-regex-matching.md#practice)

আটকে গেলে section-এর [ভিত্তি](12-dynamic-programming/concept.md) · [চিত্র ও ব্যবহার](12-dynamic-programming/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M4" data-must="0" data-search="Dynamic Programming 023 — Longest Path in a DAG DP on DAG Hard" markdown="1">
<label class="practice-check-label" for="check-dp-023"><input class="practice-check" type="checkbox" id="check-dp-023" data-key="12-dynamic-programming/problems/023-longest-path-dag.md" disabled><span class="ds-status">সমাধান করেছি: 023 — Longest Path in a DAG</span></label>
<div class="practice-problem" markdown="1">

**[023 — Longest Path in a DAG](12-dynamic-programming/problems/023-longest-path-dag.md)**

<p class="practice-pattern">DP on DAG · Hard</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](12-dynamic-programming/problems/023-longest-path-dag.md#problem) → [২. ভিত্তি](12-dynamic-programming/problems/023-longest-path-dag.md#idea) → [৩. ধাপ ও ছবি](12-dynamic-programming/problems/023-longest-path-dag.md#walkthrough) → [৪. কোড](12-dynamic-programming/problems/023-longest-path-dag.md#code) → [৫. খরচ ও ভুল](12-dynamic-programming/problems/023-longest-path-dag.md#cost) → [৬. নিজে আবার করুন](12-dynamic-programming/problems/023-longest-path-dag.md#practice)

আটকে গেলে section-এর [ভিত্তি](12-dynamic-programming/concept.md) · [চিত্র ও ব্যবহার](12-dynamic-programming/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M4" data-must="0" data-search="Dynamic Programming 024 — Codeforces Blind Pick (Pattern Recognition) Pattern recognition (any family) Hard" markdown="1">
<label class="practice-check-label" for="check-dp-024"><input class="practice-check" type="checkbox" id="check-dp-024" data-key="12-dynamic-programming/problems/024-codeforces-blind-pick.md" disabled><span class="ds-status">সমাধান করেছি: 024 — Codeforces Blind Pick (Pattern Recognition)</span></label>
<div class="practice-problem" markdown="1">

**[024 — Codeforces Blind Pick (Pattern Recognition)](12-dynamic-programming/problems/024-codeforces-blind-pick.md)**

<p class="practice-pattern">Pattern recognition (any family) · Hard</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](12-dynamic-programming/problems/024-codeforces-blind-pick.md#problem) → [২. ভিত্তি](12-dynamic-programming/problems/024-codeforces-blind-pick.md#idea) → [৩. ধাপ ও ছবি](12-dynamic-programming/problems/024-codeforces-blind-pick.md#walkthrough) → [৪. কোড](12-dynamic-programming/problems/024-codeforces-blind-pick.md#code) → [৫. খরচ ও ভুল](12-dynamic-programming/problems/024-codeforces-blind-pick.md#cost) → [৬. নিজে আবার করুন](12-dynamic-programming/problems/024-codeforces-blind-pick.md#practice)

আটকে গেলে section-এর [ভিত্তি](12-dynamic-programming/concept.md) · [চিত্র ও ব্যবহার](12-dynamic-programming/visual-explanation.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

</ol>
</details>

</div>

<div class="practice-chapter" data-family="interview" markdown="1">

## Mixed Interview Practice {#section-interview}

<details class="practice-section" data-section="interview" markdown="1">
<summary>Mixed Interview Practice <span class="section-count">29টি</span></summary>

**আগে বুঝে নিন:** constraint থেকে pattern বাছাই, invariant, test।

**আগে পড়ুন:** [ভিত্তি](13-interview-master-problems/learning-guide.md) · [চিত্র ও ব্যবহার](13-interview-master-problems/learning-guide.md)।

**Section-এর বড় challenge:** [ধাপে ধাপে প্রয়োগ করুন](guided-practice/interview.md)। সব individual problem-এর বিকল্প নয়; প্রধান কৌশল একসঙ্গে ব্যবহার করার পরীক্ষা।

<ol class="practice-list" markdown="1">

<li class="practice-item" data-course="M4" data-must="1" data-search="Mixed Interview Practice 001 — Maximum Subarray 1D DP (Kadane&#x27;s running maximum) Easy" markdown="1">
<label class="practice-check-label" for="check-interview-001"><input class="practice-check" type="checkbox" id="check-interview-001" data-key="13-interview-master-problems/problems/001-maximum-subarray.md" disabled><span class="ds-status">সমাধান করেছি: 001 — Maximum Subarray</span></label>
<div class="practice-problem" markdown="1">

**[001 — Maximum Subarray](13-interview-master-problems/problems/001-maximum-subarray.md)**

<p class="practice-pattern">1D DP (Kadane&#x27;s running maximum) · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](13-interview-master-problems/problems/001-maximum-subarray.md#problem) → [২. ভিত্তি](13-interview-master-problems/problems/001-maximum-subarray.md#idea) → [৩. ধাপ ও ছবি](13-interview-master-problems/problems/001-maximum-subarray.md#walkthrough) → [৪. কোড](13-interview-master-problems/problems/001-maximum-subarray.md#code) → [৫. খরচ ও ভুল](13-interview-master-problems/problems/001-maximum-subarray.md#cost) → [৬. নিজে আবার করুন](13-interview-master-problems/problems/001-maximum-subarray.md#practice)

আটকে গেলে section-এর [ভিত্তি](13-interview-master-problems/learning-guide.md) · [চিত্র ও ব্যবহার](13-interview-master-problems/learning-guide.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M4" data-must="0" data-search="Mixed Interview Practice 002 — Climbing Stairs 1D DP (bottom-up Fibonacci recurrence) Easy" markdown="1">
<label class="practice-check-label" for="check-interview-002"><input class="practice-check" type="checkbox" id="check-interview-002" data-key="13-interview-master-problems/problems/002-climbing-stairs-mock.md" disabled><span class="ds-status">সমাধান করেছি: 002 — Climbing Stairs</span></label>
<div class="practice-problem" markdown="1">

**[002 — Climbing Stairs](13-interview-master-problems/problems/002-climbing-stairs-mock.md)**

<p class="practice-pattern">1D DP (bottom-up Fibonacci recurrence) · Easy</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](13-interview-master-problems/problems/002-climbing-stairs-mock.md#problem) → [২. ভিত্তি](13-interview-master-problems/problems/002-climbing-stairs-mock.md#idea) → [৩. ধাপ ও ছবি](13-interview-master-problems/problems/002-climbing-stairs-mock.md#walkthrough) → [৪. কোড](13-interview-master-problems/problems/002-climbing-stairs-mock.md#code) → [৫. খরচ ও ভুল](13-interview-master-problems/problems/002-climbing-stairs-mock.md#cost) → [৬. নিজে আবার করুন](13-interview-master-problems/problems/002-climbing-stairs-mock.md#practice)

আটকে গেলে section-এর [ভিত্তি](13-interview-master-problems/learning-guide.md) · [চিত্র ও ব্যবহার](13-interview-master-problems/learning-guide.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M1" data-must="1" data-search="Mixed Interview Practice 003 — Merge Two Sorted Lists Two-pointer merge with a dummy head Easy" markdown="1">
<label class="practice-check-label" for="check-interview-003"><input class="practice-check" type="checkbox" id="check-interview-003" data-key="13-interview-master-problems/problems/003-merge-two-sorted-lists.md" disabled><span class="ds-status">সমাধান করেছি: 003 — Merge Two Sorted Lists</span></label>
<div class="practice-problem" markdown="1">

**[003 — Merge Two Sorted Lists](13-interview-master-problems/problems/003-merge-two-sorted-lists.md)**

<p class="practice-pattern">Two-pointer merge with a dummy head · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M1</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](13-interview-master-problems/problems/003-merge-two-sorted-lists.md#problem) → [২. ভিত্তি](13-interview-master-problems/problems/003-merge-two-sorted-lists.md#idea) → [৩. ধাপ ও ছবি](13-interview-master-problems/problems/003-merge-two-sorted-lists.md#walkthrough) → [৪. কোড](13-interview-master-problems/problems/003-merge-two-sorted-lists.md#code) → [৫. খরচ ও ভুল](13-interview-master-problems/problems/003-merge-two-sorted-lists.md#cost) → [৬. নিজে আবার করুন](13-interview-master-problems/problems/003-merge-two-sorted-lists.md#practice)

আটকে গেলে section-এর [ভিত্তি](13-interview-master-problems/learning-guide.md) · [চিত্র ও ব্যবহার](13-interview-master-problems/learning-guide.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M1" data-must="1" data-search="Mixed Interview Practice 004 — Reverse Linked List (Iterative AND Recursive) Pointer surgery — iterative three-pointer AND recursive rewiring Easy" markdown="1">
<label class="practice-check-label" for="check-interview-004"><input class="practice-check" type="checkbox" id="check-interview-004" data-key="13-interview-master-problems/problems/004-reverse-linked-list-both-ways.md" disabled><span class="ds-status">সমাধান করেছি: 004 — Reverse Linked List (Iterative AND Recursive)</span></label>
<div class="practice-problem" markdown="1">

**[004 — Reverse Linked List (Iterative AND Recursive)](13-interview-master-problems/problems/004-reverse-linked-list-both-ways.md)**

<p class="practice-pattern">Pointer surgery — iterative three-pointer AND recursive rewiring · Easy</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M1</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](13-interview-master-problems/problems/004-reverse-linked-list-both-ways.md#problem) → [২. ভিত্তি](13-interview-master-problems/problems/004-reverse-linked-list-both-ways.md#idea) → [৩. ধাপ ও ছবি](13-interview-master-problems/problems/004-reverse-linked-list-both-ways.md#walkthrough) → [৪. কোড](13-interview-master-problems/problems/004-reverse-linked-list-both-ways.md#code) → [৫. খরচ ও ভুল](13-interview-master-problems/problems/004-reverse-linked-list-both-ways.md#cost) → [৬. নিজে আবার করুন](13-interview-master-problems/problems/004-reverse-linked-list-both-ways.md#practice)

আটকে গেলে section-এর [ভিত্তি](13-interview-master-problems/learning-guide.md) · [চিত্র ও ব্যবহার](13-interview-master-problems/learning-guide.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M1" data-must="0" data-search="Mixed Interview Practice 005 — Linked List Cycle Slow/fast pointers (Floyd&#x27;s cycle detection) Easy" markdown="1">
<label class="practice-check-label" for="check-interview-005"><input class="practice-check" type="checkbox" id="check-interview-005" data-key="13-interview-master-problems/problems/005-linked-list-cycle.md" disabled><span class="ds-status">সমাধান করেছি: 005 — Linked List Cycle</span></label>
<div class="practice-problem" markdown="1">

**[005 — Linked List Cycle](13-interview-master-problems/problems/005-linked-list-cycle.md)**

<p class="practice-pattern">Slow/fast pointers (Floyd&#x27;s cycle detection) · Easy</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M1</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](13-interview-master-problems/problems/005-linked-list-cycle.md#problem) → [২. ভিত্তি](13-interview-master-problems/problems/005-linked-list-cycle.md#idea) → [৩. ধাপ ও ছবি](13-interview-master-problems/problems/005-linked-list-cycle.md#walkthrough) → [৪. কোড](13-interview-master-problems/problems/005-linked-list-cycle.md#code) → [৫. খরচ ও ভুল](13-interview-master-problems/problems/005-linked-list-cycle.md#cost) → [৬. নিজে আবার করুন](13-interview-master-problems/problems/005-linked-list-cycle.md#practice)

আটকে গেলে section-এর [ভিত্তি](13-interview-master-problems/learning-guide.md) · [চিত্র ও ব্যবহার](13-interview-master-problems/learning-guide.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M4" data-must="1" data-search="Mixed Interview Practice 006 — Group Anagrams Canonical key + hashmap bucketing Medium" markdown="1">
<label class="practice-check-label" for="check-interview-006"><input class="practice-check" type="checkbox" id="check-interview-006" data-key="13-interview-master-problems/problems/006-group-anagrams.md" disabled><span class="ds-status">সমাধান করেছি: 006 — Group Anagrams</span></label>
<div class="practice-problem" markdown="1">

**[006 — Group Anagrams](13-interview-master-problems/problems/006-group-anagrams.md)**

<p class="practice-pattern">Canonical key + hashmap bucketing · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](13-interview-master-problems/problems/006-group-anagrams.md#problem) → [২. ভিত্তি](13-interview-master-problems/problems/006-group-anagrams.md#idea) → [৩. ধাপ ও ছবি](13-interview-master-problems/problems/006-group-anagrams.md#walkthrough) → [৪. কোড](13-interview-master-problems/problems/006-group-anagrams.md#code) → [৫. খরচ ও ভুল](13-interview-master-problems/problems/006-group-anagrams.md#cost) → [৬. নিজে আবার করুন](13-interview-master-problems/problems/006-group-anagrams.md#practice)

আটকে গেলে section-এর [ভিত্তি](13-interview-master-problems/learning-guide.md) · [চিত্র ও ব্যবহার](13-interview-master-problems/learning-guide.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M4" data-must="0" data-search="Mixed Interview Practice 007 — Longest Consecutive Sequence Hash set + run starts (only count from a number that has no left neighbor) Medium" markdown="1">
<label class="practice-check-label" for="check-interview-007"><input class="practice-check" type="checkbox" id="check-interview-007" data-key="13-interview-master-problems/problems/007-longest-consecutive-sequence.md" disabled><span class="ds-status">সমাধান করেছি: 007 — Longest Consecutive Sequence</span></label>
<div class="practice-problem" markdown="1">

**[007 — Longest Consecutive Sequence](13-interview-master-problems/problems/007-longest-consecutive-sequence.md)**

<p class="practice-pattern">Hash set + run starts (only count from a number that has no left neighbor) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](13-interview-master-problems/problems/007-longest-consecutive-sequence.md#problem) → [২. ভিত্তি](13-interview-master-problems/problems/007-longest-consecutive-sequence.md#idea) → [৩. ধাপ ও ছবি](13-interview-master-problems/problems/007-longest-consecutive-sequence.md#walkthrough) → [৪. কোড](13-interview-master-problems/problems/007-longest-consecutive-sequence.md#code) → [৫. খরচ ও ভুল](13-interview-master-problems/problems/007-longest-consecutive-sequence.md#cost) → [৬. নিজে আবার করুন](13-interview-master-problems/problems/007-longest-consecutive-sequence.md#practice)

আটকে গেলে section-এর [ভিত্তি](13-interview-master-problems/learning-guide.md) · [চিত্র ও ব্যবহার](13-interview-master-problems/learning-guide.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M3" data-must="1" data-search="Mixed Interview Practice 008 — Number of Islands Grid flood fill — connected-component counting via DFS Medium" markdown="1">
<label class="practice-check-label" for="check-interview-008"><input class="practice-check" type="checkbox" id="check-interview-008" data-key="13-interview-master-problems/problems/008-number-of-islands.md" disabled><span class="ds-status">সমাধান করেছি: 008 — Number of Islands</span></label>
<div class="practice-problem" markdown="1">

**[008 — Number of Islands](13-interview-master-problems/problems/008-number-of-islands.md)**

<p class="practice-pattern">Grid flood fill — connected-component counting via DFS · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M3</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](13-interview-master-problems/problems/008-number-of-islands.md#problem) → [২. ভিত্তি](13-interview-master-problems/problems/008-number-of-islands.md#idea) → [৩. ধাপ ও ছবি](13-interview-master-problems/problems/008-number-of-islands.md#walkthrough) → [৪. কোড](13-interview-master-problems/problems/008-number-of-islands.md#code) → [৫. খরচ ও ভুল](13-interview-master-problems/problems/008-number-of-islands.md#cost) → [৬. নিজে আবার করুন](13-interview-master-problems/problems/008-number-of-islands.md#practice)

আটকে গেলে section-এর [ভিত্তি](13-interview-master-problems/learning-guide.md) · [চিত্র ও ব্যবহার](13-interview-master-problems/learning-guide.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M3" data-must="0" data-search="Mixed Interview Practice 009 — Rotting Oranges Multi-source BFS, counting levels (minutes) Medium" markdown="1">
<label class="practice-check-label" for="check-interview-009"><input class="practice-check" type="checkbox" id="check-interview-009" data-key="13-interview-master-problems/problems/009-rotting-oranges.md" disabled><span class="ds-status">সমাধান করেছি: 009 — Rotting Oranges</span></label>
<div class="practice-problem" markdown="1">

**[009 — Rotting Oranges](13-interview-master-problems/problems/009-rotting-oranges.md)**

<p class="practice-pattern">Multi-source BFS, counting levels (minutes) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M3</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](13-interview-master-problems/problems/009-rotting-oranges.md#problem) → [২. ভিত্তি](13-interview-master-problems/problems/009-rotting-oranges.md#idea) → [৩. ধাপ ও ছবি](13-interview-master-problems/problems/009-rotting-oranges.md#walkthrough) → [৪. কোড](13-interview-master-problems/problems/009-rotting-oranges.md#code) → [৫. খরচ ও ভুল](13-interview-master-problems/problems/009-rotting-oranges.md#cost) → [৬. নিজে আবার করুন](13-interview-master-problems/problems/009-rotting-oranges.md#practice)

আটকে গেলে section-এর [ভিত্তি](13-interview-master-problems/learning-guide.md) · [চিত্র ও ব্যবহার](13-interview-master-problems/learning-guide.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M3" data-must="1" data-search="Mixed Interview Practice 010 — Course Schedule Cycle detection via topological sort (Kahn&#x27;s BFS on indegree) Medium" markdown="1">
<label class="practice-check-label" for="check-interview-010"><input class="practice-check" type="checkbox" id="check-interview-010" data-key="13-interview-master-problems/problems/010-course-schedule.md" disabled><span class="ds-status">সমাধান করেছি: 010 — Course Schedule</span></label>
<div class="practice-problem" markdown="1">

**[010 — Course Schedule](13-interview-master-problems/problems/010-course-schedule.md)**

<p class="practice-pattern">Cycle detection via topological sort (Kahn&#x27;s BFS on indegree) · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M3</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](13-interview-master-problems/problems/010-course-schedule.md#problem) → [২. ভিত্তি](13-interview-master-problems/problems/010-course-schedule.md#idea) → [৩. ধাপ ও ছবি](13-interview-master-problems/problems/010-course-schedule.md#walkthrough) → [৪. কোড](13-interview-master-problems/problems/010-course-schedule.md#code) → [৫. খরচ ও ভুল](13-interview-master-problems/problems/010-course-schedule.md#cost) → [৬. নিজে আবার করুন](13-interview-master-problems/problems/010-course-schedule.md#practice)

আটকে গেলে section-এর [ভিত্তি](13-interview-master-problems/learning-guide.md) · [চিত্র ও ব্যবহার](13-interview-master-problems/learning-guide.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M2" data-must="1" data-search="Mixed Interview Practice 011 — Merge Intervals Sort by start, তারপর এক-পাসে overlap collapse (sweep) Medium" markdown="1">
<label class="practice-check-label" for="check-interview-011"><input class="practice-check" type="checkbox" id="check-interview-011" data-key="13-interview-master-problems/problems/011-merge-intervals.md" disabled><span class="ds-status">সমাধান করেছি: 011 — Merge Intervals</span></label>
<div class="practice-problem" markdown="1">

**[011 — Merge Intervals](13-interview-master-problems/problems/011-merge-intervals.md)**

<p class="practice-pattern">Sort by start, তারপর এক-পাসে overlap collapse (sweep) · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M2</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](13-interview-master-problems/problems/011-merge-intervals.md#problem) → [২. ভিত্তি](13-interview-master-problems/problems/011-merge-intervals.md#idea) → [৩. ধাপ ও ছবি](13-interview-master-problems/problems/011-merge-intervals.md#walkthrough) → [৪. কোড](13-interview-master-problems/problems/011-merge-intervals.md#code) → [৫. খরচ ও ভুল](13-interview-master-problems/problems/011-merge-intervals.md#cost) → [৬. নিজে আবার করুন](13-interview-master-problems/problems/011-merge-intervals.md#practice)

আটকে গেলে section-এর [ভিত্তি](13-interview-master-problems/learning-guide.md) · [চিত্র ও ব্যবহার](13-interview-master-problems/learning-guide.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M5" data-must="1" data-search="Mixed Interview Practice 012 — Kth Largest Element in an Array Size-k min-heap (online), অথবা quickselect partition (average O(n)) Medium" markdown="1">
<label class="practice-check-label" for="check-interview-012"><input class="practice-check" type="checkbox" id="check-interview-012" data-key="13-interview-master-problems/problems/012-kth-largest-element.md" disabled><span class="ds-status">সমাধান করেছি: 012 — Kth Largest Element in an Array</span></label>
<div class="practice-problem" markdown="1">

**[012 — Kth Largest Element in an Array](13-interview-master-problems/problems/012-kth-largest-element.md)**

<p class="practice-pattern">Size-k min-heap (online), অথবা quickselect partition (average O(n)) · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M5</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](13-interview-master-problems/problems/012-kth-largest-element.md#problem) → [২. ভিত্তি](13-interview-master-problems/problems/012-kth-largest-element.md#idea) → [৩. ধাপ ও ছবি](13-interview-master-problems/problems/012-kth-largest-element.md#walkthrough) → [৪. কোড](13-interview-master-problems/problems/012-kth-largest-element.md#code) → [৫. খরচ ও ভুল](13-interview-master-problems/problems/012-kth-largest-element.md#cost) → [৬. নিজে আবার করুন](13-interview-master-problems/problems/012-kth-largest-element.md#practice)

আটকে গেলে section-এর [ভিত্তি](13-interview-master-problems/learning-guide.md) · [চিত্র ও ব্যবহার](13-interview-master-problems/learning-guide.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M4 M5" data-must="0" data-search="Mixed Interview Practice 013 — Top K Frequent Elements Frequency hashmap, তারপর k-টা সবচেয়ে ঘন element তোলা (heap বা bucket) Medium" markdown="1">
<label class="practice-check-label" for="check-interview-013"><input class="practice-check" type="checkbox" id="check-interview-013" data-key="13-interview-master-problems/problems/013-top-k-frequent.md" disabled><span class="ds-status">সমাধান করেছি: 013 — Top K Frequent Elements</span></label>
<div class="practice-problem" markdown="1">

**[013 — Top K Frequent Elements](13-interview-master-problems/problems/013-top-k-frequent.md)**

<p class="practice-pattern">Frequency hashmap, তারপর k-টা সবচেয়ে ঘন element তোলা (heap বা bucket) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
<a class="practice-badge is-course" href="#course-map">Microsoft · M5</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](13-interview-master-problems/problems/013-top-k-frequent.md#problem) → [২. ভিত্তি](13-interview-master-problems/problems/013-top-k-frequent.md#idea) → [৩. ধাপ ও ছবি](13-interview-master-problems/problems/013-top-k-frequent.md#walkthrough) → [৪. কোড](13-interview-master-problems/problems/013-top-k-frequent.md#code) → [৫. খরচ ও ভুল](13-interview-master-problems/problems/013-top-k-frequent.md#cost) → [৬. নিজে আবার করুন](13-interview-master-problems/problems/013-top-k-frequent.md#practice)

আটকে গেলে section-এর [ভিত্তি](13-interview-master-problems/learning-guide.md) · [চিত্র ও ব্যবহার](13-interview-master-problems/learning-guide.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M1" data-must="1" data-search="Mixed Interview Practice 014 — Daily Temperatures Monotonic (decreasing) stack — next greater element Medium" markdown="1">
<label class="practice-check-label" for="check-interview-014"><input class="practice-check" type="checkbox" id="check-interview-014" data-key="13-interview-master-problems/problems/014-daily-temperatures.md" disabled><span class="ds-status">সমাধান করেছি: 014 — Daily Temperatures</span></label>
<div class="practice-problem" markdown="1">

**[014 — Daily Temperatures](13-interview-master-problems/problems/014-daily-temperatures.md)**

<p class="practice-pattern">Monotonic (decreasing) stack — next greater element · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M1</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](13-interview-master-problems/problems/014-daily-temperatures.md#problem) → [২. ভিত্তি](13-interview-master-problems/problems/014-daily-temperatures.md#idea) → [৩. ধাপ ও ছবি](13-interview-master-problems/problems/014-daily-temperatures.md#walkthrough) → [৪. কোড](13-interview-master-problems/problems/014-daily-temperatures.md#code) → [৫. খরচ ও ভুল](13-interview-master-problems/problems/014-daily-temperatures.md#cost) → [৬. নিজে আবার করুন](13-interview-master-problems/problems/014-daily-temperatures.md#practice)

আটকে গেলে section-এর [ভিত্তি](13-interview-master-problems/learning-guide.md) · [চিত্র ও ব্যবহার](13-interview-master-problems/learning-guide.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M1" data-must="1" data-search="Mixed Interview Practice 015 — Longest Substring Without Repeating Characters Sliding window + hashmap (variable-size window) Medium" markdown="1">
<label class="practice-check-label" for="check-interview-015"><input class="practice-check" type="checkbox" id="check-interview-015" data-key="13-interview-master-problems/problems/015-longest-substring-no-repeat.md" disabled><span class="ds-status">সমাধান করেছি: 015 — Longest Substring Without Repeating Characters</span></label>
<div class="practice-problem" markdown="1">

**[015 — Longest Substring Without Repeating Characters](13-interview-master-problems/problems/015-longest-substring-no-repeat.md)**

<p class="practice-pattern">Sliding window + hashmap (variable-size window) · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M1</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](13-interview-master-problems/problems/015-longest-substring-no-repeat.md#problem) → [২. ভিত্তি](13-interview-master-problems/problems/015-longest-substring-no-repeat.md#idea) → [৩. ধাপ ও ছবি](13-interview-master-problems/problems/015-longest-substring-no-repeat.md#walkthrough) → [৪. কোড](13-interview-master-problems/problems/015-longest-substring-no-repeat.md#code) → [৫. খরচ ও ভুল](13-interview-master-problems/problems/015-longest-substring-no-repeat.md#cost) → [৬. নিজে আবার করুন](13-interview-master-problems/problems/015-longest-substring-no-repeat.md#practice)

আটকে গেলে section-এর [ভিত্তি](13-interview-master-problems/learning-guide.md) · [চিত্র ও ব্যবহার](13-interview-master-problems/learning-guide.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M4" data-must="1" data-search="Mixed Interview Practice 016 — Coin Change Unbounded knapsack DP (minimize count, coins reusable) Medium" markdown="1">
<label class="practice-check-label" for="check-interview-016"><input class="practice-check" type="checkbox" id="check-interview-016" data-key="13-interview-master-problems/problems/016-coin-change-mock.md" disabled><span class="ds-status">সমাধান করেছি: 016 — Coin Change</span></label>
<div class="practice-problem" markdown="1">

**[016 — Coin Change](13-interview-master-problems/problems/016-coin-change-mock.md)**

<p class="practice-pattern">Unbounded knapsack DP (minimize count, coins reusable) · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](13-interview-master-problems/problems/016-coin-change-mock.md#problem) → [২. ভিত্তি](13-interview-master-problems/problems/016-coin-change-mock.md#idea) → [৩. ধাপ ও ছবি](13-interview-master-problems/problems/016-coin-change-mock.md#walkthrough) → [৪. কোড](13-interview-master-problems/problems/016-coin-change-mock.md#code) → [৫. খরচ ও ভুল](13-interview-master-problems/problems/016-coin-change-mock.md#cost) → [৬. নিজে আবার করুন](13-interview-master-problems/problems/016-coin-change-mock.md#practice)

আটকে গেলে section-এর [ভিত্তি](13-interview-master-problems/learning-guide.md) · [চিত্র ও ব্যবহার](13-interview-master-problems/learning-guide.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M4" data-must="0" data-search="Mixed Interview Practice 017 — Partition Equal Subset Sum Subset-sum DP (0-1 knapsack, boolean reachability) Medium" markdown="1">
<label class="practice-check-label" for="check-interview-017"><input class="practice-check" type="checkbox" id="check-interview-017" data-key="13-interview-master-problems/problems/017-partition-equal-subset-sum.md" disabled><span class="ds-status">সমাধান করেছি: 017 — Partition Equal Subset Sum</span></label>
<div class="practice-problem" markdown="1">

**[017 — Partition Equal Subset Sum](13-interview-master-problems/problems/017-partition-equal-subset-sum.md)**

<p class="practice-pattern">Subset-sum DP (0-1 knapsack, boolean reachability) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](13-interview-master-problems/problems/017-partition-equal-subset-sum.md#problem) → [২. ভিত্তি](13-interview-master-problems/problems/017-partition-equal-subset-sum.md#idea) → [৩. ধাপ ও ছবি](13-interview-master-problems/problems/017-partition-equal-subset-sum.md#walkthrough) → [৪. কোড](13-interview-master-problems/problems/017-partition-equal-subset-sum.md#code) → [৫. খরচ ও ভুল](13-interview-master-problems/problems/017-partition-equal-subset-sum.md#cost) → [৬. নিজে আবার করুন](13-interview-master-problems/problems/017-partition-equal-subset-sum.md#practice)

আটকে গেলে section-এর [ভিত্তি](13-interview-master-problems/learning-guide.md) · [চিত্র ও ব্যবহার](13-interview-master-problems/learning-guide.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M4" data-must="0" data-search="Mixed Interview Practice 018 — Word Break Prefix DP + set lookup (segmentation feasibility) Medium" markdown="1">
<label class="practice-check-label" for="check-interview-018"><input class="practice-check" type="checkbox" id="check-interview-018" data-key="13-interview-master-problems/problems/018-word-break.md" disabled><span class="ds-status">সমাধান করেছি: 018 — Word Break</span></label>
<div class="practice-problem" markdown="1">

**[018 — Word Break](13-interview-master-problems/problems/018-word-break.md)**

<p class="practice-pattern">Prefix DP + set lookup (segmentation feasibility) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](13-interview-master-problems/problems/018-word-break.md#problem) → [২. ভিত্তি](13-interview-master-problems/problems/018-word-break.md#idea) → [৩. ধাপ ও ছবি](13-interview-master-problems/problems/018-word-break.md#walkthrough) → [৪. কোড](13-interview-master-problems/problems/018-word-break.md#code) → [৫. খরচ ও ভুল](13-interview-master-problems/problems/018-word-break.md#cost) → [৬. নিজে আবার করুন](13-interview-master-problems/problems/018-word-break.md#practice)

আটকে গেলে section-এর [ভিত্তি](13-interview-master-problems/learning-guide.md) · [চিত্র ও ব্যবহার](13-interview-master-problems/learning-guide.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M3" data-must="1" data-search="Mixed Interview Practice 019 — Validate Binary Search Tree Range-passing recursion (valid-bounds propagation) Medium" markdown="1">
<label class="practice-check-label" for="check-interview-019"><input class="practice-check" type="checkbox" id="check-interview-019" data-key="13-interview-master-problems/problems/019-validate-bst.md" disabled><span class="ds-status">সমাধান করেছি: 019 — Validate Binary Search Tree</span></label>
<div class="practice-problem" markdown="1">

**[019 — Validate Binary Search Tree](13-interview-master-problems/problems/019-validate-bst.md)**

<p class="practice-pattern">Range-passing recursion (valid-bounds propagation) · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M3</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](13-interview-master-problems/problems/019-validate-bst.md#problem) → [২. ভিত্তি](13-interview-master-problems/problems/019-validate-bst.md#idea) → [৩. ধাপ ও ছবি](13-interview-master-problems/problems/019-validate-bst.md#walkthrough) → [৪. কোড](13-interview-master-problems/problems/019-validate-bst.md#code) → [৫. খরচ ও ভুল](13-interview-master-problems/problems/019-validate-bst.md#cost) → [৬. নিজে আবার করুন](13-interview-master-problems/problems/019-validate-bst.md#practice)

আটকে গেলে section-এর [ভিত্তি](13-interview-master-problems/learning-guide.md) · [চিত্র ও ব্যবহার](13-interview-master-problems/learning-guide.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M3" data-must="0" data-search="Mixed Interview Practice 020 — Lowest Common Ancestor of a Binary Tree Post-order reasoning (bubble-up found signals) Medium" markdown="1">
<label class="practice-check-label" for="check-interview-020"><input class="practice-check" type="checkbox" id="check-interview-020" data-key="13-interview-master-problems/problems/020-lowest-common-ancestor.md" disabled><span class="ds-status">সমাধান করেছি: 020 — Lowest Common Ancestor of a Binary Tree</span></label>
<div class="practice-problem" markdown="1">

**[020 — Lowest Common Ancestor of a Binary Tree](13-interview-master-problems/problems/020-lowest-common-ancestor.md)**

<p class="practice-pattern">Post-order reasoning (bubble-up found signals) · Medium</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M3</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](13-interview-master-problems/problems/020-lowest-common-ancestor.md#problem) → [২. ভিত্তি](13-interview-master-problems/problems/020-lowest-common-ancestor.md#idea) → [৩. ধাপ ও ছবি](13-interview-master-problems/problems/020-lowest-common-ancestor.md#walkthrough) → [৪. কোড](13-interview-master-problems/problems/020-lowest-common-ancestor.md#code) → [৫. খরচ ও ভুল](13-interview-master-problems/problems/020-lowest-common-ancestor.md#cost) → [৬. নিজে আবার করুন](13-interview-master-problems/problems/020-lowest-common-ancestor.md#practice)

আটকে গেলে section-এর [ভিত্তি](13-interview-master-problems/learning-guide.md) · [চিত্র ও ব্যবহার](13-interview-master-problems/learning-guide.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M4" data-must="1" data-search="Mixed Interview Practice 021 — LRU Cache Hashmap + doubly linked list design Medium" markdown="1">
<label class="practice-check-label" for="check-interview-021"><input class="practice-check" type="checkbox" id="check-interview-021" data-key="13-interview-master-problems/problems/021-lru-cache.md" disabled><span class="ds-status">সমাধান করেছি: 021 — LRU Cache</span></label>
<div class="practice-problem" markdown="1">

**[021 — LRU Cache](13-interview-master-problems/problems/021-lru-cache.md)**

<p class="practice-pattern">Hashmap + doubly linked list design · Medium</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](13-interview-master-problems/problems/021-lru-cache.md#problem) → [২. ভিত্তি](13-interview-master-problems/problems/021-lru-cache.md#idea) → [৩. ধাপ ও ছবি](13-interview-master-problems/problems/021-lru-cache.md#walkthrough) → [৪. কোড](13-interview-master-problems/problems/021-lru-cache.md#code) → [৫. খরচ ও ভুল](13-interview-master-problems/problems/021-lru-cache.md#cost) → [৬. নিজে আবার করুন](13-interview-master-problems/problems/021-lru-cache.md#practice)

আটকে গেলে section-এর [ভিত্তি](13-interview-master-problems/learning-guide.md) · [চিত্র ও ব্যবহার](13-interview-master-problems/learning-guide.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M3" data-must="0" data-search="Mixed Interview Practice 022 — Word Ladder Implicit graph + BFS + bucketing Hard" markdown="1">
<label class="practice-check-label" for="check-interview-022"><input class="practice-check" type="checkbox" id="check-interview-022" data-key="13-interview-master-problems/problems/022-word-ladder.md" disabled><span class="ds-status">সমাধান করেছি: 022 — Word Ladder</span></label>
<div class="practice-problem" markdown="1">

**[022 — Word Ladder](13-interview-master-problems/problems/022-word-ladder.md)**

<p class="practice-pattern">Implicit graph + BFS + bucketing · Hard</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M3</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](13-interview-master-problems/problems/022-word-ladder.md#problem) → [২. ভিত্তি](13-interview-master-problems/problems/022-word-ladder.md#idea) → [৩. ধাপ ও ছবি](13-interview-master-problems/problems/022-word-ladder.md#walkthrough) → [৪. কোড](13-interview-master-problems/problems/022-word-ladder.md#code) → [৫. খরচ ও ভুল](13-interview-master-problems/problems/022-word-ladder.md#cost) → [৬. নিজে আবার করুন](13-interview-master-problems/problems/022-word-ladder.md#practice)

আটকে গেলে section-এর [ভিত্তি](13-interview-master-problems/learning-guide.md) · [চিত্র ও ব্যবহার](13-interview-master-problems/learning-guide.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M4" data-must="0" data-search="Mixed Interview Practice 023 — Minimum Window Substring Sliding window + counting hashmap Hard" markdown="1">
<label class="practice-check-label" for="check-interview-023"><input class="practice-check" type="checkbox" id="check-interview-023" data-key="13-interview-master-problems/problems/023-minimum-window-substring.md" disabled><span class="ds-status">সমাধান করেছি: 023 — Minimum Window Substring</span></label>
<div class="practice-problem" markdown="1">

**[023 — Minimum Window Substring](13-interview-master-problems/problems/023-minimum-window-substring.md)**

<p class="practice-pattern">Sliding window + counting hashmap · Hard</p>
<div class="practice-badges">
<a class="practice-badge is-course" href="#course-map">Microsoft · M4</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](13-interview-master-problems/problems/023-minimum-window-substring.md#problem) → [২. ভিত্তি](13-interview-master-problems/problems/023-minimum-window-substring.md#idea) → [৩. ধাপ ও ছবি](13-interview-master-problems/problems/023-minimum-window-substring.md#walkthrough) → [৪. কোড](13-interview-master-problems/problems/023-minimum-window-substring.md#code) → [৫. খরচ ও ভুল](13-interview-master-problems/problems/023-minimum-window-substring.md#cost) → [৬. নিজে আবার করুন](13-interview-master-problems/problems/023-minimum-window-substring.md#practice)

আটকে গেলে section-এর [ভিত্তি](13-interview-master-problems/learning-guide.md) · [চিত্র ও ব্যবহার](13-interview-master-problems/learning-guide.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M1 M5" data-must="1" data-search="Mixed Interview Practice 024 — Merge k Sorted Lists Heap over k frontiers Hard" markdown="1">
<label class="practice-check-label" for="check-interview-024"><input class="practice-check" type="checkbox" id="check-interview-024" data-key="13-interview-master-problems/problems/024-merge-k-sorted-lists.md" disabled><span class="ds-status">সমাধান করেছি: 024 — Merge k Sorted Lists</span></label>
<div class="practice-problem" markdown="1">

**[024 — Merge k Sorted Lists](13-interview-master-problems/problems/024-merge-k-sorted-lists.md)**

<p class="practice-pattern">Heap over k frontiers · Hard</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M1</a>
<a class="practice-badge is-course" href="#course-map">Microsoft · M5</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](13-interview-master-problems/problems/024-merge-k-sorted-lists.md#problem) → [২. ভিত্তি](13-interview-master-problems/problems/024-merge-k-sorted-lists.md#idea) → [৩. ধাপ ও ছবি](13-interview-master-problems/problems/024-merge-k-sorted-lists.md#walkthrough) → [৪. কোড](13-interview-master-problems/problems/024-merge-k-sorted-lists.md#code) → [৫. খরচ ও ভুল](13-interview-master-problems/problems/024-merge-k-sorted-lists.md#cost) → [৬. নিজে আবার করুন](13-interview-master-problems/problems/024-merge-k-sorted-lists.md#practice)

আটকে গেলে section-এর [ভিত্তি](13-interview-master-problems/learning-guide.md) · [চিত্র ও ব্যবহার](13-interview-master-problems/learning-guide.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="support" data-must="0" data-search="Mixed Interview Practice 025 — Trapping Rain Water monotonic stack AND two pointers (দুটোই করো) Hard" markdown="1">
<label class="practice-check-label" for="check-interview-025"><input class="practice-check" type="checkbox" id="check-interview-025" data-key="13-interview-master-problems/problems/025-trapping-rain-water.md" disabled><span class="ds-status">সমাধান করেছি: 025 — Trapping Rain Water</span></label>
<div class="practice-problem" markdown="1">

**[025 — Trapping Rain Water](13-interview-master-problems/problems/025-trapping-rain-water.md)**

<p class="practice-pattern">monotonic stack AND two pointers (দুটোই করো) · Hard</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">সহায়ক ভিত্তি</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](13-interview-master-problems/problems/025-trapping-rain-water.md#problem) → [২. ভিত্তি](13-interview-master-problems/problems/025-trapping-rain-water.md#idea) → [৩. ধাপ ও ছবি](13-interview-master-problems/problems/025-trapping-rain-water.md#walkthrough) → [৪. কোড](13-interview-master-problems/problems/025-trapping-rain-water.md#code) → [৫. খরচ ও ভুল](13-interview-master-problems/problems/025-trapping-rain-water.md#cost) → [৬. নিজে আবার করুন](13-interview-master-problems/problems/025-trapping-rain-water.md#practice)

আটকে গেলে section-এর [ভিত্তি](13-interview-master-problems/learning-guide.md) · [চিত্র ও ব্যবহার](13-interview-master-problems/learning-guide.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M2" data-must="1" data-search="Mixed Interview Practice 026 — Median of Two Sorted Arrays binary search on a partition (একটা partition খুঁজে median বের করা) Hard" markdown="1">
<label class="practice-check-label" for="check-interview-026"><input class="practice-check" type="checkbox" id="check-interview-026" data-key="13-interview-master-problems/problems/026-median-two-sorted-arrays.md" disabled><span class="ds-status">সমাধান করেছি: 026 — Median of Two Sorted Arrays</span></label>
<div class="practice-problem" markdown="1">

**[026 — Median of Two Sorted Arrays](13-interview-master-problems/problems/026-median-two-sorted-arrays.md)**

<p class="practice-pattern">binary search on a partition (একটা partition খুঁজে median বের করা) · Hard</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M2</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](13-interview-master-problems/problems/026-median-two-sorted-arrays.md#problem) → [২. ভিত্তি](13-interview-master-problems/problems/026-median-two-sorted-arrays.md#idea) → [৩. ধাপ ও ছবি](13-interview-master-problems/problems/026-median-two-sorted-arrays.md#walkthrough) → [৪. কোড](13-interview-master-problems/problems/026-median-two-sorted-arrays.md#code) → [৫. খরচ ও ভুল](13-interview-master-problems/problems/026-median-two-sorted-arrays.md#cost) → [৬. নিজে আবার করুন](13-interview-master-problems/problems/026-median-two-sorted-arrays.md#practice)

আটকে গেলে section-এর [ভিত্তি](13-interview-master-problems/learning-guide.md) · [চিত্র ও ব্যবহার](13-interview-master-problems/learning-guide.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="M3" data-must="1" data-search="Mixed Interview Practice 027 — Serialize and Deserialize Binary Tree traversal + format design (একটা traversal বেছে, null mark করে, একই ক্রমে rebuild) Hard" markdown="1">
<label class="practice-check-label" for="check-interview-027"><input class="practice-check" type="checkbox" id="check-interview-027" data-key="13-interview-master-problems/problems/027-serialize-deserialize-tree.md" disabled><span class="ds-status">সমাধান করেছি: 027 — Serialize and Deserialize Binary Tree</span></label>
<div class="practice-problem" markdown="1">

**[027 — Serialize and Deserialize Binary Tree](13-interview-master-problems/problems/027-serialize-deserialize-tree.md)**

<p class="practice-pattern">traversal + format design (একটা traversal বেছে, null mark করে, একই ক্রমে rebuild) · Hard</p>
<div class="practice-badges">
<span class="practice-badge is-core">আগে করতেই হবে</span>
<a class="practice-badge is-course" href="#course-map">Microsoft · M3</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](13-interview-master-problems/problems/027-serialize-deserialize-tree.md#problem) → [২. ভিত্তি](13-interview-master-problems/problems/027-serialize-deserialize-tree.md#idea) → [৩. ধাপ ও ছবি](13-interview-master-problems/problems/027-serialize-deserialize-tree.md#walkthrough) → [৪. কোড](13-interview-master-problems/problems/027-serialize-deserialize-tree.md#code) → [৫. খরচ ও ভুল](13-interview-master-problems/problems/027-serialize-deserialize-tree.md#cost) → [৬. নিজে আবার করুন](13-interview-master-problems/problems/027-serialize-deserialize-tree.md#practice)

আটকে গেলে section-এর [ভিত্তি](13-interview-master-problems/learning-guide.md) · [চিত্র ও ব্যবহার](13-interview-master-problems/learning-guide.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="extension" data-must="0" data-search="Mixed Interview Practice 028 — Longest Increasing Path in a Matrix DP on an implicit DAG (memoized DFS, প্রতিটা cell থেকে দীর্ঘতম বাড়তি পথ) Hard" markdown="1">
<label class="practice-check-label" for="check-interview-028"><input class="practice-check" type="checkbox" id="check-interview-028" data-key="13-interview-master-problems/problems/028-longest-increasing-path-matrix.md" disabled><span class="ds-status">সমাধান করেছি: 028 — Longest Increasing Path in a Matrix</span></label>
<div class="practice-problem" markdown="1">

**[028 — Longest Increasing Path in a Matrix](13-interview-master-problems/problems/028-longest-increasing-path-matrix.md)**

<p class="practice-pattern">DP on an implicit DAG (memoized DFS, প্রতিটা cell থেকে দীর্ঘতম বাড়তি পথ) · Hard</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">বাড়তি অনুশীলন</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](13-interview-master-problems/problems/028-longest-increasing-path-matrix.md#problem) → [২. ভিত্তি](13-interview-master-problems/problems/028-longest-increasing-path-matrix.md#idea) → [৩. ধাপ ও ছবি](13-interview-master-problems/problems/028-longest-increasing-path-matrix.md#walkthrough) → [৪. কোড](13-interview-master-problems/problems/028-longest-increasing-path-matrix.md#code) → [৫. খরচ ও ভুল](13-interview-master-problems/problems/028-longest-increasing-path-matrix.md#cost) → [৬. নিজে আবার করুন](13-interview-master-problems/problems/028-longest-increasing-path-matrix.md#practice)

আটকে গেলে section-এর [ভিত্তি](13-interview-master-problems/learning-guide.md) · [চিত্র ও ব্যবহার](13-interview-master-problems/learning-guide.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

<li class="practice-item" data-course="extension" data-must="0" data-search="Mixed Interview Practice 029 — Count of Smaller Numbers After Self BIT order statistics + coordinate compression (value-দের উপর frequency count) Hard" markdown="1">
<label class="practice-check-label" for="check-interview-029"><input class="practice-check" type="checkbox" id="check-interview-029" data-key="13-interview-master-problems/problems/029-count-of-smaller-after-self.md" disabled><span class="ds-status">সমাধান করেছি: 029 — Count of Smaller Numbers After Self</span></label>
<div class="practice-problem" markdown="1">

**[029 — Count of Smaller Numbers After Self](13-interview-master-problems/problems/029-count-of-smaller-after-self.md)**

<p class="practice-pattern">BIT order statistics + coordinate compression (value-দের উপর frequency count) · Hard</p>
<div class="practice-badges">
<a class="practice-badge is-support" href="#course-map">বাড়তি অনুশীলন</a>
</div>
<details class="reading-path" markdown="1"><summary>পড়ার ধাপ</summary>

[১. প্রশ্ন](13-interview-master-problems/problems/029-count-of-smaller-after-self.md#problem) → [২. ভিত্তি](13-interview-master-problems/problems/029-count-of-smaller-after-self.md#idea) → [৩. ধাপ ও ছবি](13-interview-master-problems/problems/029-count-of-smaller-after-self.md#walkthrough) → [৪. কোড](13-interview-master-problems/problems/029-count-of-smaller-after-self.md#code) → [৫. খরচ ও ভুল](13-interview-master-problems/problems/029-count-of-smaller-after-self.md#cost) → [৬. নিজে আবার করুন](13-interview-master-problems/problems/029-count-of-smaller-after-self.md#practice)

আটকে গেলে section-এর [ভিত্তি](13-interview-master-problems/learning-guide.md) · [চিত্র ও ব্যবহার](13-interview-master-problems/learning-guide.md) আবার পড়ুন। ছোট input-এ নিজের dry run লিখে তারপর code মেলান।

</details>
</div>
</li>

</ol>
</details>

</div>
</div>

## Guided challenge কীভাবে করবেন {#guided}

[১৪টি challenge-এর তালিকা](guided-practice/README.md) থেকে একটি section বেছে নিন। প্রতিটিতে পড়ার prerequisite, ছোট example, milestone, hint, reference solution ও executable unit test আছে। প্রথমে একেকটি milestone শেষ করুন, তারপর পুরো input-এর ফল মেলান।

একটি বড় problem সব আলাদা problem-এর proof বা variation শেখায় না। Coverage table-তে যা নেই, সেটির জন্য উপরের ছোট অনুশীলনে ফিরে আসুন।
