# Problem Tracker — Arrays and Strings

[অধ্যায়ে ফিরে যাও](../README.md) · [Pattern guide](../patterns.md) · [চিত্রসহ ব্যাখ্যা](../visual-explanation.md)

**এই তালিকার প্রতিটি problem-এর বাংলা নোট ইতিমধ্যেই লেখা আছে।** `Official task` বা platform link দিয়ে মূল প্রশ্ন ও judge খুলবে; `বাংলা নোট` বা `Note file` দিয়ে এখানকার ব্যাখ্যা খুলবে। `planned` হলো তোমার ব্যক্তিগত practice status, নোট অনুপস্থিত থাকার চিহ্ন নয়। Difficulty/স্তর হলো এই পাঠক্রমের শেখার ক্রম; platform-এর difficulty আলাদা হতে পারে।

এই tracker কীভাবে ব্যবহার করবে:

- প্রথমে order ধরে solve করো; পরে pattern ধরে jump করতে পারো।
- যেতে যেতে `Status` update করো: planned → attempted → solved → reviewed।
- "Inherits from" বলে দেয় problem-টা গোপনে আগের কোন idea reuse করছে — code লেখার আগে সেটা মুখে বলো।

| # | Problem | Difficulty | Source | Pattern | Inherits from | Note file | Status |
| --- | --- | --- | --- | --- | --- | --- | --- |
| 1 | একটা char array in place reverse করো | Easy | [LeetCode 344](https://leetcode.com/problems/reverse-string/) | Two pointers | Basic swap + index walk | [001-reverse-string.md](001-reverse-string.md) | planned |
| 2 | যে দুটো index-এর value-র যোগফল target হয় | Easy | [LeetCode 1](https://leetcode.com/problems/two-sum/) | Frequency counting / complement | Math level 5 (prefix/contribution)-এর complement thinking | [002-two-sum.md](002-two-sum.md) | planned |
| 3 | দুটো string কি ঠিক একই অক্ষরগুলো ব্যবহার করে? | Easy | [LeetCode 242](https://leetcode.com/problems/valid-anagram/) | Frequency counting | Math fundamentals-এর counting | [003-valid-anagram.md](003-valid-anagram.md) | planned |
| 4 | Sorted array থেকে duplicate গুলো in place সরাও | Easy | [LeetCode 26](https://leetcode.com/problems/remove-duplicates-from-sorted-array/) | Two pointers (slow/fast) | Two-pointer reversal-এর idea | [004-remove-duplicates-sorted.md](004-remove-duplicates-sorted.md) | planned |
| 5 | দুটো sorted array merge করো বড়টার ভেতরে, in place | Easy | [LeetCode 88](https://leetcode.com/problems/merge-sorted-array/) | Two pointers (পেছন থেকে) | Pair-sum-এর pointer movement | [005-merge-sorted-array.md](005-merge-sorted-array.md) | planned |
| 6 | সব zero শেষে পাঠাও, বাকিদের order ঠিক রেখে | Easy | [LeetCode 283](https://leetcode.com/problems/move-zeroes/) | Two pointers (slow/fast) | Remove-duplicates-এর skeleton | [006-move-zeroes.md](006-move-zeroes.md) | planned |
| 7 | একবার buy + একবার sell করে max profit | Easy | [LeetCode 121](https://leetcode.com/problems/best-time-to-buy-and-sell-stock/) | Running min (Kadane-flavored) | Prefix-min thinking, math level 5 | [007-buy-sell-stock.md](007-buy-sell-stock.md) | planned |
| 8 | একটা weight কি দুটো জোড় positive ভাগে ভাঙা যায়? | Easy | [Codeforces 4A](https://codeforces.com/problemset/problem/4/A) | Parity warm-up | Math fundamentals-এর modulo arithmetic | [008-watermelon.md](008-watermelon.md) | planned |
| 9 | একটা static array-তে অনেকগুলো range-sum query-র উত্তর দাও | Easy | [CSES Problem Set](https://cses.fi/problemset/task/1646/) — "Static Range Sum Queries" | Prefix sums | Math level 5-এর prefix sums, সরাসরি | [009-static-range-sum.md](009-static-range-sum.md) | planned |
| 10 | কোনো repeated character ছাড়া longest substring | Medium | [LeetCode 3](https://leetcode.com/problems/longest-substring-without-repeating-characters/) | Sliding window | Two pointers + frequency counting | [010-longest-unique-substring.md](010-longest-unique-substring.md) | planned |
| 11 | যেকোনো contiguous subarray-র largest sum | Medium | [LeetCode 53](https://leetcode.com/problems/maximum-subarray/) | Kadane's | Prefix sums (best = prefix - min prefix) | [011-maximum-subarray.md](011-maximum-subarray.md) | planned |
| 12 | Container-এর দেয়ালের best জোড়া (max area) | Medium | [LeetCode 11](https://leetcode.com/problems/container-with-most-water/) | Two pointers | Pair-sum-এর discard argument | [012-container-most-water.md](012-container-most-water.md) | planned |
| 13 | Array-কে ডানে k ঘর rotate করো, O(1) extra space-এ | Medium | [LeetCode 189](https://leetcode.com/problems/rotate-array/) | Triple reversal | In-place reversal (problem 1) | [013-rotate-array.md](013-rotate-array.md) | planned |
| 14 | নিজেকে বাদ দিয়ে সবার product, division ছাড়া | Medium | [LeetCode 238](https://leetcode.com/problems/product-of-array-except-self/) | Prefix products | Prefix sums, + এর জায়গায় x বসিয়ে | [014-product-except-self.md](014-product-except-self.md) | planned |
| 15 | যে subarray গুলোর sum ঠিক K, সেগুলো count করো | Medium | [LeetCode 560](https://leetcode.com/problems/subarray-sum-equals-k/) | Prefix sums + hash map | Two Sum-এর complement + prefix sums | [015-subarray-sum-k.md](015-subarray-sum-k.md) | planned |
| 16 | যোগফল zero হয় এমন সব unique triple | Medium | [LeetCode 15](https://leetcode.com/problems/3sum/) | Sort + two pointers | Pair sum (problem 2), একটা element fix করে | [016-three-sum.md](016-three-sum.md) | planned |
| 17 | একে অপরের anagram এমন word গুলো group করো | Medium | [LeetCode 49](https://leetcode.com/problems/group-anagrams/) | Frequency counting / canonical key | Valid anagram (problem 3), bucket key হিসেবে | [017-group-anagrams.md](017-group-anagrams.md) | planned |
| 18 | একটা set-এ consecutive integer-দের longest streak | Medium | [LeetCode 128](https://leetcode.com/problems/longest-consecutive-sequence/) | Set + smart start detection | Frequency/set membership | [018-longest-consecutive.md](018-longest-consecutive.md) | planned |
| 19 | 3[a2[c]]-এর মতো string decode করো | Medium | [LeetCode 394](https://leetcode.com/problems/decode-string/) | String building + stack | String building; ../../04-stack-and-queue/-এর preview | [019-decode-string.md](019-decode-string.md) | planned |
| 20 | t-এর সব char ধারণ করা s-এর shortest window | Hard | [LeetCode 76](https://leetcode.com/problems/minimum-window-substring/) | Sliding window (shrinkable) | Longest-unique window (problem 10) + counts | [020-minimum-window-substring.md](020-minimum-window-substring.md) | planned |
| 21 | Elevation bar-গুলোর মাঝে আটকে থাকা পানি | Hard | [LeetCode 42](https://leetcode.com/problems/trapping-rain-water/) | Two pointers / prefix max | Prefix max array + pointer discard | [021-trapping-rain-water.md](021-trapping-rain-water.md) | planned |
| 22 | Smallest missing positive integer, O(n) time O(1) space | Hard | [LeetCode 41](https://leetcode.com/problems/first-missing-positive/) | In-place index marking | Array-কেই-নিজের-hashmap বানানোর trick | [022-first-missing-positive.md](022-first-missing-positive.md) | planned |
| 23 | Size k-এর প্রতিটা window-র maximum | Hard | [LeetCode 239](https://leetcode.com/problems/sliding-window-maximum/) | Monotonic deque | Sliding window + queue — full walkthrough ../../04-stack-and-queue/patterns.md-তে | [023-sliding-window-maximum.md](023-sliding-window-maximum.md) | planned |

## Suggested milestones (পরামর্শ দেওয়া milestone)

- Problem 1–9-এর পর: basics তোমার দখলে — pointers, counting, prefix sums।
- 10–17-এর পর: এই topic-এর বেশিরভাগ interview medium তুমি pattern-match করতে পারবে।
- 18–23-এর পর: তুমি hard territory ছুঁয়ে ফেলেছ; problem 23 তোমাকে stack/queue chapter-এ hand off করে দেয়।
