<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Md. Rishat Talukder</title>
    <description>The latest articles on DEV Community by Md. Rishat Talukder (@therealrishat).</description>
    <link>https://dev.to/therealrishat</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2167633%2F7088b3d3-50b2-4e4f-bce8-e5ed3e5c73a6.jpg</url>
      <title>DEV Community: Md. Rishat Talukder</title>
      <link>https://dev.to/therealrishat</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/therealrishat"/>
    <language>en</language>
    <item>
      <title>🧠 Solving LeetCode Until I Become Top 1% — Day `77`</title>
      <dc:creator>Md. Rishat Talukder</dc:creator>
      <pubDate>Mon, 08 Sep 2025 09:30:39 +0000</pubDate>
      <link>https://dev.to/therealrishat/solving-leetcode-until-i-become-top-1-day-77-1b3a</link>
      <guid>https://dev.to/therealrishat/solving-leetcode-until-i-become-top-1-day-77-1b3a</guid>
      <description>&lt;h3&gt;
  
  
  🔹 Problem: &lt;a href="https://leetcode.com/problems/convert-integer-to-the-sum-of-two-no-zero-integers/?envType=daily-question&amp;amp;envId=2025-09-08" rel="noopener noreferrer"&gt;1317 Convert Integer to the Sum of Two No-Zero Integers&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Difficulty:&lt;/strong&gt; #Easy&lt;br&gt;
&lt;strong&gt;Tags:&lt;/strong&gt; #Math, #BruteForce&lt;/p&gt;




&lt;h3&gt;
  
  
  📝 Problem Summary
&lt;/h3&gt;

&lt;p&gt;We are given an integer &lt;code&gt;n&lt;/code&gt;. We need to split it into two positive integers &lt;code&gt;A&lt;/code&gt; and &lt;code&gt;B&lt;/code&gt; such that:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;code&gt;A + B = n&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Neither &lt;code&gt;A&lt;/code&gt; nor &lt;code&gt;B&lt;/code&gt; contains the digit &lt;code&gt;0&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Return any valid pair &lt;code&gt;[A, B]&lt;/code&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  🧠 My Thought Process
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Brute Force Idea:&lt;/strong&gt;&lt;br&gt;
Iterate over all possible values of &lt;code&gt;A&lt;/code&gt; from &lt;code&gt;1&lt;/code&gt; to &lt;code&gt;n-1&lt;/code&gt;. For each &lt;code&gt;A&lt;/code&gt;, compute &lt;code&gt;B = n - A&lt;/code&gt;.&lt;br&gt;
Check if both numbers do &lt;strong&gt;not contain the digit 0&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Optimized Strategy:&lt;/strong&gt;&lt;br&gt;
Since the range is only &lt;code&gt;1&lt;/code&gt; to &lt;code&gt;n-1&lt;/code&gt;, the brute force is actually fine. The constraint is small enough that this simple approach passes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Algorithm Used:&lt;/strong&gt;&lt;br&gt;
Simple &lt;strong&gt;brute force search&lt;/strong&gt; with string conversion to detect &lt;code&gt;0&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  ⚙️ Code Implementation (Python)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Solution&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;getNoZeroIntegers&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
        &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;A&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
            &lt;span class="n"&gt;B&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;A&lt;/span&gt;
            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;0&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;A&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nf"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;B&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
                &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;A&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;B&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  ⏱️ Time &amp;amp; Space Complexity
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Time:&lt;/strong&gt; O(n * log(n))&lt;br&gt;
(We loop up to &lt;code&gt;n&lt;/code&gt;, and string conversion/checking costs about &lt;code&gt;O(log n)&lt;/code&gt; per number.)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Space:&lt;/strong&gt; O(1)&lt;br&gt;
(Only a few integers are stored at a time.)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  🧩 Key Takeaways
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;✅ Checking digits via string conversion is often the simplest and fast enough for small constraints.&lt;/li&gt;
&lt;li&gt;💡 Sometimes brute force is the &lt;em&gt;intended&lt;/em&gt; solution when constraints are low.&lt;/li&gt;
&lt;li&gt;💭 Always confirm input size before over-optimizing.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  🔁 Reflection (Self-Check)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;[x] Could I solve this without help?&lt;/li&gt;
&lt;li&gt;[x] Did I write code from scratch?&lt;/li&gt;
&lt;li&gt;[x] Did I understand why it works?&lt;/li&gt;
&lt;li&gt;[x] Will I be able to recall this in a week?&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  🚀 Progress Tracker
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Day&lt;/td&gt;
&lt;td&gt;&lt;code&gt;77&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Total Problems Solved&lt;/td&gt;
&lt;td&gt;&lt;code&gt;441&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Confidence Today&lt;/td&gt;
&lt;td&gt;😃&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Leetcode Rating&lt;/td&gt;
&lt;td&gt;&lt;code&gt;1530&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

</description>
    </item>
    <item>
      <title>🧠 Solving LeetCode Until I Become Top 1% — Day `76`</title>
      <dc:creator>Md. Rishat Talukder</dc:creator>
      <pubDate>Mon, 08 Sep 2025 09:29:30 +0000</pubDate>
      <link>https://dev.to/therealrishat/solving-leetcode-until-i-become-top-1-day-76-42p9</link>
      <guid>https://dev.to/therealrishat/solving-leetcode-until-i-become-top-1-day-76-42p9</guid>
      <description>&lt;h3&gt;
  
  
  🔹 Problem: &lt;a href="https://leetcode.com/problems/find-n-unique-integers-sum-up-to-zero/?envType=daily-question&amp;amp;envId=2025-09-07" rel="noopener noreferrer"&gt;1304 Find N Unique Integers Sum up to Zero&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Difficulty:&lt;/strong&gt; #Easy&lt;br&gt;
&lt;strong&gt;Tags:&lt;/strong&gt; #Math, #Constructive&lt;/p&gt;




&lt;h3&gt;
  
  
  📝 Problem Summary
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;Given an integer &lt;code&gt;n&lt;/code&gt;, return an array of &lt;code&gt;n&lt;/code&gt; &lt;strong&gt;unique integers&lt;/strong&gt; such that they sum up to 0.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  🧠 My Thought Process
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Brute Force Idea:&lt;/strong&gt;&lt;br&gt;
Generate random numbers and try to adjust until their sum is zero. This would be messy and inefficient.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Optimized Strategy:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pair positive and negative integers: &lt;code&gt;(1, -1), (2, -2), ...&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;If &lt;code&gt;n&lt;/code&gt; is even, the pairs are enough.&lt;/li&gt;
&lt;li&gt;If &lt;code&gt;n&lt;/code&gt; is odd, just add &lt;code&gt;0&lt;/code&gt; to balance everything out.&lt;/li&gt;
&lt;li&gt;This guarantees uniqueness and ensures the sum is always 0.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;strong&gt;Algorithm Used:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Constructive Math (pairing positives and negatives).&lt;/p&gt;&lt;/li&gt;

&lt;/ul&gt;




&lt;h3&gt;
  
  
  ⚙️ Code Implementation (Python)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Solution&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;sumZero&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
        &lt;span class="n"&gt;ans&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;
        &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
            &lt;span class="n"&gt;ans&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="n"&gt;ans&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="n"&gt;ans&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;ans&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  ⏱️ Time &amp;amp; Space Complexity
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Time:&lt;/strong&gt; O(n) — we generate &lt;code&gt;n&lt;/code&gt; elements.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Space:&lt;/strong&gt; O(n) — storing the result array.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  🧩 Key Takeaways
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;✅ Learned how constructive math can directly give the answer without brute force.&lt;/li&gt;
&lt;li&gt;💡 The “pairing” trick is a powerful way to balance sums.&lt;/li&gt;
&lt;li&gt;💭 If a problem asks for sums = 0 (or balanced counts), think about symmetry.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  🔁 Reflection (Self-Check)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;[x] Could I solve this without help?&lt;/li&gt;
&lt;li&gt;[x] Did I write code from scratch?&lt;/li&gt;
&lt;li&gt;[x] Did I understand why it works?&lt;/li&gt;
&lt;li&gt;[x] Will I be able to recall this in a week?&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  🚀 Progress Tracker
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Day&lt;/td&gt;
&lt;td&gt;&lt;code&gt;76&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Total Problems Solved&lt;/td&gt;
&lt;td&gt;&lt;code&gt;440&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Confidence Today&lt;/td&gt;
&lt;td&gt;😃&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Leetcode Rating&lt;/td&gt;
&lt;td&gt;&lt;code&gt;1530&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

</description>
    </item>
    <item>
      <title>🧠 Solving LeetCode Until I Become Top 1% — Day `75`</title>
      <dc:creator>Md. Rishat Talukder</dc:creator>
      <pubDate>Fri, 05 Sep 2025 10:54:26 +0000</pubDate>
      <link>https://dev.to/therealrishat/solving-leetcode-until-i-become-top-1-day-75-1gb8</link>
      <guid>https://dev.to/therealrishat/solving-leetcode-until-i-become-top-1-day-75-1gb8</guid>
      <description>&lt;h3&gt;
  
  
  🔹 Problem: &lt;a href="https://leetcode.com/problems/minimum-operations-to-make-the-integer-zero/description/?envType=daily-question&amp;amp;envId=2025-09-05" rel="noopener noreferrer"&gt;2749 Minimum Operations to Make the Integer Zero&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Difficulty:&lt;/strong&gt; #Medium&lt;br&gt;
&lt;strong&gt;Tags:&lt;/strong&gt; #Math, #BitManipulation, #Greedy&lt;/p&gt;




&lt;h3&gt;
  
  
  📝 Problem Summary
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;You’re given two integers &lt;code&gt;num1&lt;/code&gt; and &lt;code&gt;num2&lt;/code&gt;. In one operation, you can subtract &lt;code&gt;num2 * k&lt;/code&gt; from &lt;code&gt;num1&lt;/code&gt;. The goal is to find the smallest integer &lt;code&gt;k&lt;/code&gt; such that the result can be represented as the sum of exactly &lt;code&gt;k&lt;/code&gt; powers of two (not necessarily distinct). If no such &lt;code&gt;k&lt;/code&gt; exists, return -1.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  🧠 My Thought Process
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Brute Force Idea:&lt;/strong&gt;&lt;br&gt;
Try all possible &lt;code&gt;k&lt;/code&gt; values, compute &lt;code&gt;x = num1 - num2*k&lt;/code&gt;, then check if &lt;code&gt;x&lt;/code&gt; can be broken into exactly &lt;code&gt;k&lt;/code&gt; powers of two.&lt;br&gt;
But checking this naively for large numbers would be too slow.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Optimized Strategy:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;After subtracting, we get &lt;code&gt;x = num1 - num2*k&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;For &lt;code&gt;x&lt;/code&gt; to work:&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1. `x ≥ k` (since the smallest way to split is all ones, requiring at least `k`).
2. `k ≥ popcount(x)` (since we need at least one summand for each set bit in binary).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;The smallest valid &lt;code&gt;k&lt;/code&gt; is the answer.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Algorithm Used:&lt;/strong&gt;
Math + Bit Manipulation (&lt;code&gt;bit_count&lt;/code&gt; to check popcount condition).&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;




&lt;h3&gt;
  
  
  ⚙️ Code Implementation (Python)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Solution&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;makeTheIntegerZero&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;num1&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;num2&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;k&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
        &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;num1&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;num2&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;k&lt;/span&gt;
            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;k&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;  &lt;span class="c1"&gt;# impossible since we can't split into k parts
&lt;/span&gt;                &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;k&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;bit_count&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;  &lt;span class="c1"&gt;# valid if k &amp;gt;= popcount(x)
&lt;/span&gt;                &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;k&lt;/span&gt;
            &lt;span class="n"&gt;k&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  ⏱️ Time &amp;amp; Space Complexity
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Time:&lt;/strong&gt; O(num1 / num2) in worst case (looping k), but usually small because conditions fail quickly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Space:&lt;/strong&gt; O(1).&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  🧩 Key Takeaways
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;✅ Learned that &lt;code&gt;popcount(x)&lt;/code&gt; gives the &lt;em&gt;minimum&lt;/em&gt; number of summands (powers of two) needed to form &lt;code&gt;x&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;💡 The tricky part was realizing you also need &lt;code&gt;x ≥ k&lt;/code&gt; to bound the maximum possible summands.&lt;/li&gt;
&lt;li&gt;💭 Similar problems often combine &lt;strong&gt;math inequalities + binary representations&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  🔁 Reflection (Self-Check)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;[x] Could I solve this without help? (No, needed some guidance)&lt;/li&gt;
&lt;li&gt;[x] Did I write code from scratch?&lt;/li&gt;
&lt;li&gt;[x] Did I understand why it works?&lt;/li&gt;
&lt;li&gt;[x] Will I be able to recall this in a week? (Need to revisit binary condition intuition)&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  📚 Related Problems
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;[[1658 Minimum Operations to Reduce X to Zero]]&lt;/li&gt;
&lt;li&gt;[[991 Broken Calculator]]&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  🚀 Progress Tracker
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Day&lt;/td&gt;
&lt;td&gt;&lt;code&gt;75&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Total Problems Solved&lt;/td&gt;
&lt;td&gt;&lt;code&gt;438&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Confidence Today&lt;/td&gt;
&lt;td&gt;😐&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Leetcode Rating&lt;/td&gt;
&lt;td&gt;&lt;code&gt;1530&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

</description>
    </item>
    <item>
      <title>🧠 Solving LeetCode Until I Become Top 1% — Day `74`</title>
      <dc:creator>Md. Rishat Talukder</dc:creator>
      <pubDate>Thu, 04 Sep 2025 05:52:44 +0000</pubDate>
      <link>https://dev.to/therealrishat/solving-leetcode-until-i-become-top-1-day-74-4gci</link>
      <guid>https://dev.to/therealrishat/solving-leetcode-until-i-become-top-1-day-74-4gci</guid>
      <description>&lt;h3&gt;
  
  
  🔹 Problem: &lt;a href="https://leetcode.com/problems/find-closest-person/description/?envType=daily-question&amp;amp;envId=2025-09-04" rel="noopener noreferrer"&gt;3516 Find Closest Person&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Difficulty:&lt;/strong&gt; #Easy&lt;br&gt;
&lt;strong&gt;Tags:&lt;/strong&gt; #Math, #Comparison&lt;/p&gt;




&lt;h3&gt;
  
  
  📝 Problem Summary
&lt;/h3&gt;

&lt;p&gt;First of all, maybe the EASIEST PROBLEM IN LEETCODE HISTORY.&lt;/p&gt;

&lt;p&gt;You are given three integers &lt;code&gt;x&lt;/code&gt;, &lt;code&gt;y&lt;/code&gt;, and &lt;code&gt;z&lt;/code&gt;. The task is to determine which of &lt;code&gt;x&lt;/code&gt; or &lt;code&gt;y&lt;/code&gt; is &lt;strong&gt;closer to &lt;code&gt;z&lt;/code&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If both are equally close → return &lt;code&gt;0&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;If &lt;code&gt;x&lt;/code&gt; is closer → return &lt;code&gt;1&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;If &lt;code&gt;y&lt;/code&gt; is closer → return &lt;code&gt;2&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  🧠 My Thought Process
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Brute Force Idea:&lt;/strong&gt;&lt;br&gt;
I think you can solve this eeeasily with simple math.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Optimized Strategy:&lt;/strong&gt;&lt;br&gt;
The brute force is optimal here — no loops, no data structures, just math.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Compute &lt;code&gt;|x - z|&lt;/code&gt; and &lt;code&gt;|y - z|&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Compare the two distances.&lt;/li&gt;
&lt;li&gt;Decide the answer based on which difference is smaller.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;strong&gt;Algorithm Used:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Pure &lt;strong&gt;mathematical comparison&lt;/strong&gt; using absolute difference.&lt;/p&gt;&lt;/li&gt;

&lt;/ul&gt;




&lt;h3&gt;
  
  
  ⚙️ Code Implementation (Python)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Solution&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;findClosest&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;z&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;x_abs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;abs&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;z&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;y_abs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;abs&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;z&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;x_abs&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="n"&gt;y_abs&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
        &lt;span class="k"&gt;elif&lt;/span&gt; &lt;span class="n"&gt;x_abs&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;y_abs&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
        &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  ⏱️ Time &amp;amp; Space Complexity
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Time:&lt;/strong&gt; O(1) → Only a few arithmetic operations.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Space:&lt;/strong&gt; O(1) → No extra memory used.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  🧩 Key Takeaways
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;✅ Learned how simple absolute difference comparisons solve closest-number problems.&lt;/li&gt;
&lt;li&gt;💡 The trick is recognizing that &lt;strong&gt;absolute difference&lt;/strong&gt; directly measures closeness.&lt;/li&gt;
&lt;li&gt;💭 This technique can be reused in problems like “find closest element to a target in an array” (but with loops/binary search).&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  🔁 Reflection (Self-Check)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;[x] Could I solve this without help? (Yes, straightforward math)&lt;/li&gt;
&lt;li&gt;[x] Did I write code from scratch? (Yes)&lt;/li&gt;
&lt;li&gt;[x] Did I understand why it works? (Yes, absolute difference logic)&lt;/li&gt;
&lt;li&gt;[x] Will I be able to recall this in a week? (Yes, very simple pattern)&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  🚀 Progress Tracker
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Day&lt;/td&gt;
&lt;td&gt;&lt;code&gt;74&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Total Problems Solved&lt;/td&gt;
&lt;td&gt;&lt;code&gt;437&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Confidence Today&lt;/td&gt;
&lt;td&gt;😃&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Leetcode Rating&lt;/td&gt;
&lt;td&gt;&lt;code&gt;1530&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

</description>
    </item>
    <item>
      <title>🧠 Solving LeetCode Until I Become Top 1% — Day `73`</title>
      <dc:creator>Md. Rishat Talukder</dc:creator>
      <pubDate>Mon, 01 Sep 2025 05:18:57 +0000</pubDate>
      <link>https://dev.to/therealrishat/solving-leetcode-until-i-become-top-1-day-73-poe</link>
      <guid>https://dev.to/therealrishat/solving-leetcode-until-i-become-top-1-day-73-poe</guid>
      <description>&lt;h3&gt;
  
  
  🔹 Problem: &lt;a href="https://leetcode.com/problems/maximum-average-pass-ratio/" rel="noopener noreferrer"&gt;1792. Maximum Average Pass Ratio&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Difficulty:&lt;/strong&gt; #Medium&lt;br&gt;
&lt;strong&gt;Tags:&lt;/strong&gt; #Greedy, #Heap, #Math, #PriorityQueue&lt;/p&gt;




&lt;h3&gt;
  
  
  📝 Problem Summary
&lt;/h3&gt;

&lt;p&gt;You are given &lt;code&gt;n&lt;/code&gt; classes, each with &lt;code&gt;passed&lt;/code&gt; students out of &lt;code&gt;total&lt;/code&gt; students. You can add &lt;code&gt;extraStudents&lt;/code&gt; students, one at a time, and for each added student you can choose which class they join. Each added student is guaranteed to &lt;strong&gt;pass&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Your goal: distribute the extra students to maximize the &lt;strong&gt;average pass ratio&lt;/strong&gt; across all classes.&lt;/p&gt;




&lt;h3&gt;
  
  
  🧠 My Thought Process
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Brute Force Idea:&lt;/strong&gt;&lt;br&gt;
Try distributing students in all possible ways and compute the final average. This is obviously infeasible because the number of ways grows exponentially (&lt;code&gt;n^extraStudents&lt;/code&gt;).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Optimized Strategy:&lt;/strong&gt;&lt;br&gt;
Instead of brute force, notice that adding a student to different classes &lt;strong&gt;doesn’t give equal benefit&lt;/strong&gt;. Adding a student to a class with a &lt;strong&gt;low pass ratio&lt;/strong&gt; increases the average differently than adding to one with a &lt;strong&gt;higher pass ratio&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The trick is: &lt;strong&gt;at each step, add the student to the class where they will provide the maximum increase ("gain") in the overall average.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Algorithm Used:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Greedy + Max Heap&lt;/li&gt;
&lt;li&gt;Precompute the &lt;strong&gt;gain function&lt;/strong&gt; for each class.&lt;/li&gt;
&lt;li&gt;Always pick the class with the maximum marginal gain using a heap.&lt;/li&gt;
&lt;li&gt;After placing a student, update its new gain and push it back into the heap.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;




&lt;h3&gt;
  
  
  📐 Mathematics
&lt;/h3&gt;

&lt;p&gt;The gain of adding one student to a class with &lt;code&gt;p&lt;/code&gt; passes out of &lt;code&gt;t&lt;/code&gt; total is:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;gain(p,t) = (p+1)/(t+1) - p/t&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Why?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Before adding: pass ratio = &lt;code&gt;p/t&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;After adding: pass ratio = &lt;code&gt;(p+1)/(t+1)&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;difference&lt;/strong&gt; = &lt;code&gt;(p+1)/(t+1) - p/t&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This gain tells us &lt;strong&gt;exactly how much the class's ratio improves&lt;/strong&gt; if we assign the next student here.&lt;/p&gt;

&lt;p&gt;Since we want to maximize the total average, we must always choose the class with the &lt;strong&gt;largest gain&lt;/strong&gt; at each step → that’s why we use a &lt;strong&gt;max heap&lt;/strong&gt;.&lt;br&gt;
(We push negative values because Python’s &lt;code&gt;heapq&lt;/code&gt; is a min-heap by default.)&lt;/p&gt;




&lt;h3&gt;
  
  
  ⚙️ Code Implementation (Python)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;heapq&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;typing&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;List&lt;/span&gt;

&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Solution&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;maxAverageRatio&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;classes&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;]],&lt;/span&gt; &lt;span class="n"&gt;extraStudents&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;float&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;heap&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;

        &lt;span class="c1"&gt;# Gain function = improvement in pass ratio by adding one student
&lt;/span&gt;        &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;gain&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;pas&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;total&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
            &lt;span class="nf"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;pas&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;total&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;pas&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;total&lt;/span&gt;

        &lt;span class="c1"&gt;# Build initial heap with all classes
&lt;/span&gt;        &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;pas&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;total&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;classes&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="n"&gt;g&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;gain&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;pas&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;total&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="n"&gt;heapq&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;heappush&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;heap&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;g&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;pas&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;total&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;  &lt;span class="c1"&gt;# store negative for max heap
&lt;/span&gt;
        &lt;span class="c1"&gt;# Assign extra students greedily
&lt;/span&gt;        &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;_&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;extraStudents&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
            &lt;span class="n"&gt;g&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;pas&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;total&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;heapq&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;heappop&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;heap&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="n"&gt;pas&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
            &lt;span class="n"&gt;total&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
            &lt;span class="n"&gt;g&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;gain&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;pas&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;total&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="n"&gt;heapq&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;heappush&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;heap&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;g&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;pas&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;total&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

        &lt;span class="c1"&gt;# Compute final average
&lt;/span&gt;        &lt;span class="n"&gt;total_avg&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;pas&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;total&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;_&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;pas&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;total&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;heap&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;total_avg&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;classes&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  ⏱️ Time &amp;amp; Space Complexity
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Time:&lt;/strong&gt; O((n + extraStudents) log n)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Each heap push/pop costs log(n).&lt;/li&gt;
&lt;li&gt;We do this for &lt;code&gt;n&lt;/code&gt; initializations + &lt;code&gt;extraStudents&lt;/code&gt; assignments.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;strong&gt;Space:&lt;/strong&gt; O(n) for the heap.&lt;/p&gt;&lt;/li&gt;

&lt;/ul&gt;




&lt;h3&gt;
  
  
  🧩 Key Takeaways
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;✅ The &lt;strong&gt;gain function&lt;/strong&gt; is the key insight — quantify the benefit of adding a student.&lt;/li&gt;
&lt;li&gt;💡 Using a &lt;strong&gt;max heap&lt;/strong&gt; makes greedy selection efficient.&lt;/li&gt;
&lt;li&gt;💭 Many allocation/optimization problems reduce to "compute marginal gain → pick max → update."&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  🔁 Reflection (Self-Check)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;[x] Could I solve this without help? (Partially — needed insight for gain function)&lt;/li&gt;
&lt;li&gt;[x] Did I write code from scratch?&lt;/li&gt;
&lt;li&gt;[x] Did I understand why it works?&lt;/li&gt;
&lt;li&gt;[x] Will I be able to recall this in a week? (Yes, heap + marginal gain pattern is memorable)&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  🚀 Progress Tracker
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Day&lt;/td&gt;
&lt;td&gt;&lt;code&gt;73&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Total Problems Solved&lt;/td&gt;
&lt;td&gt;&lt;code&gt;434&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Confidence Today&lt;/td&gt;
&lt;td&gt;😃&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Leetcode Rating&lt;/td&gt;
&lt;td&gt;&lt;code&gt;1530&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

</description>
    </item>
    <item>
      <title>🧠 Solving LeetCode Until I Become Top 1% — Day `72`</title>
      <dc:creator>Md. Rishat Talukder</dc:creator>
      <pubDate>Sun, 31 Aug 2025 08:01:20 +0000</pubDate>
      <link>https://dev.to/therealrishat/solving-leetcode-until-i-become-top-1-day-72-47bh</link>
      <guid>https://dev.to/therealrishat/solving-leetcode-until-i-become-top-1-day-72-47bh</guid>
      <description>&lt;h3&gt;
  
  
  🔹 Problem: &lt;a href="https://leetcode.com/problems/sudoku-solver/?envType=daily-question&amp;amp;envId=2025-08-31" rel="noopener noreferrer"&gt;37 Sudoku Solver&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Difficulty:&lt;/strong&gt; #Hard&lt;br&gt;
&lt;strong&gt;Tags:&lt;/strong&gt; #Backtracking, #Matrix, #Recursion&lt;/p&gt;




&lt;h3&gt;
  
  
  📝 Problem Summary
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;We are given a partially filled 9×9 Sudoku board. The task is to fill the empty cells (&lt;code&gt;.&lt;/code&gt;) such that the Sudoku rules are satisfied:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Each row contains digits &lt;code&gt;1–9&lt;/code&gt; without repetition&lt;/li&gt;
&lt;li&gt;Each column contains digits &lt;code&gt;1–9&lt;/code&gt; without repetition&lt;/li&gt;
&lt;li&gt;Each of the nine 3×3 sub-boxes contains digits &lt;code&gt;1–9&lt;/code&gt; without repetition&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The solution must modify the board &lt;strong&gt;in-place&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  🧠 My Thought Process
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Brute Force Idea:&lt;/strong&gt;&lt;br&gt;
Try all numbers &lt;code&gt;1–9&lt;/code&gt; in every empty cell and check if the board remains valid. This would be extremely slow because there are many possibilities.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Optimized Strategy:&lt;/strong&gt;&lt;br&gt;
Use &lt;strong&gt;backtracking with constraints tracking&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sudoku is already solved partially in programming, So, this problem is more like a algorithm memorization problem.&lt;/li&gt;
&lt;li&gt;Maintain three data structures (&lt;code&gt;rows&lt;/code&gt;, &lt;code&gt;cols&lt;/code&gt;, &lt;code&gt;boxes&lt;/code&gt;) to quickly check if a number can be placed.&lt;/li&gt;
&lt;li&gt;Instead of recomputing validity each time, update these structures when placing/removing numbers.&lt;/li&gt;
&lt;li&gt;Recursively try to fill the board cell by cell.&lt;/li&gt;
&lt;li&gt;If a placement leads to a dead end, undo (backtrack) and try another number.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Algorithm Used:&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Backtracking with pruning&lt;/strong&gt; using helper functions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;couldPlace(val, row, col)&lt;/code&gt; → checks if we can place a number.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;placeNumber(val, row, col)&lt;/code&gt; / &lt;code&gt;removeNumber(...)&lt;/code&gt; → update board + tracking arrays.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;backtrack(row, col)&lt;/code&gt; → recursive filling with backtracking.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;




&lt;h3&gt;
  
  
  ⚙️ Code Implementation (Python)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Solution&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;solveSudoku&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;board&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;]])&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;
        Modify the board in-place using backtracking.
        &lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
        &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;N&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;9&lt;/span&gt;
        &lt;span class="n"&gt;rows&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;N&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;_&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;N&lt;/span&gt;&lt;span class="p"&gt;)]&lt;/span&gt;
        &lt;span class="n"&gt;cols&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;N&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;_&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;N&lt;/span&gt;&lt;span class="p"&gt;)]&lt;/span&gt;
        &lt;span class="n"&gt;boxes&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;N&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;_&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;N&lt;/span&gt;&lt;span class="p"&gt;)]&lt;/span&gt;
        &lt;span class="n"&gt;solved&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;False&lt;/span&gt;

        &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;couldPlace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;val&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;row&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;col&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
            &lt;span class="n"&gt;idx&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;row&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;col&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;rows&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;row&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="n"&gt;val&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;cols&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;col&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="n"&gt;val&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;boxes&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;idx&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="n"&gt;val&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;

        &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;placeNumber&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;val&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;row&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;col&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
            &lt;span class="n"&gt;idx&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;row&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;col&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;
            &lt;span class="n"&gt;rows&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;row&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="n"&gt;val&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
            &lt;span class="n"&gt;cols&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;col&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="n"&gt;val&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
            &lt;span class="n"&gt;boxes&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;idx&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="n"&gt;val&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
            &lt;span class="n"&gt;board&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;row&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="n"&gt;col&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;val&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

        &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;removeNumber&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;val&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;row&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;col&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
            &lt;span class="n"&gt;idx&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;row&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;col&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;
            &lt;span class="n"&gt;rows&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;row&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="n"&gt;val&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;-=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
            &lt;span class="n"&gt;cols&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;col&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="n"&gt;val&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;-=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
            &lt;span class="n"&gt;boxes&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;idx&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="n"&gt;val&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;-=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
            &lt;span class="n"&gt;board&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;row&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="n"&gt;col&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;.&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;

        &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;placeNext&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;row&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;col&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
            &lt;span class="k"&gt;nonlocal&lt;/span&gt; &lt;span class="n"&gt;solved&lt;/span&gt;
            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;row&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="n"&gt;N&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;col&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="n"&gt;N&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                &lt;span class="n"&gt;solved&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;
            &lt;span class="k"&gt;elif&lt;/span&gt; &lt;span class="n"&gt;col&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="n"&gt;N&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                &lt;span class="nf"&gt;backtrack&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;row&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                &lt;span class="nf"&gt;backtrack&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;row&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;col&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

        &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;backtrack&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;row&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;col&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
            &lt;span class="k"&gt;nonlocal&lt;/span&gt; &lt;span class="n"&gt;solved&lt;/span&gt;
            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;board&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;row&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="n"&gt;col&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;.&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;val&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
                    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nf"&gt;couldPlace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;val&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;row&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;col&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
                        &lt;span class="nf"&gt;placeNumber&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;val&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;row&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;col&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                        &lt;span class="nf"&gt;placeNext&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;row&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;col&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;solved&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                            &lt;span class="nf"&gt;removeNumber&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;val&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;row&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;col&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                &lt;span class="nf"&gt;placeNext&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;row&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;col&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

        &lt;span class="c1"&gt;# Initialize constraints from given board
&lt;/span&gt;        &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;N&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
            &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;j&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;N&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
                &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;board&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="n"&gt;j&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;.&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                    &lt;span class="nf"&gt;placeNumber&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;board&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="n"&gt;j&lt;/span&gt;&lt;span class="p"&gt;]),&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;j&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

        &lt;span class="nf"&gt;backtrack&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  ⏱️ Time &amp;amp; Space Complexity
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Time:&lt;/strong&gt; O(9^m) worst case, where &lt;code&gt;m&lt;/code&gt; is the number of empty cells. Pruning (checking validity with sets/arrays) makes it much faster in practice.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Space:&lt;/strong&gt; O(81) = O(1) (fixed-size board + tracking arrays).&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  🧩 Key Takeaways
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;✅ Backtracking is powerful for constraint satisfaction problems like Sudoku.&lt;/li&gt;
&lt;li&gt;💡 The &lt;strong&gt;row, col, box tracking arrays&lt;/strong&gt; significantly reduce redundant checks.&lt;/li&gt;
&lt;li&gt;💭 When faced with recursive filling problems, always think: “Can I prune invalid paths early with some data structure?”&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  🔁 Reflection (Self-Check)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;[x] Could I solve this without help? (with some practice)&lt;/li&gt;
&lt;li&gt;[x] Did I write code from scratch?&lt;/li&gt;
&lt;li&gt;[x] Did I understand why it works?&lt;/li&gt;
&lt;li&gt;[ ] Will I be able to recall this in a week? (I haven't memorized the exact code yet)&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  📚 Related Problems
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;[[notes/36 Valid Sudoku]]&lt;/li&gt;
&lt;li&gt;[[notes/980 Unique Paths III]]&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  🚀 Progress Tracker
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Day&lt;/td&gt;
&lt;td&gt;&lt;code&gt;72&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Total Problems Solved&lt;/td&gt;
&lt;td&gt;&lt;code&gt;433&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Confidence Today&lt;/td&gt;
&lt;td&gt;😃&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Leetcode Rating&lt;/td&gt;
&lt;td&gt;&lt;code&gt;1530&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

</description>
    </item>
    <item>
      <title>🧠 Solving LeetCode Until I Become Top 1% — Day `71`</title>
      <dc:creator>Md. Rishat Talukder</dc:creator>
      <pubDate>Sat, 30 Aug 2025 05:05:46 +0000</pubDate>
      <link>https://dev.to/therealrishat/solving-leetcode-until-i-become-top-1-day-71-2d29</link>
      <guid>https://dev.to/therealrishat/solving-leetcode-until-i-become-top-1-day-71-2d29</guid>
      <description>&lt;h3&gt;
  
  
  🔹 Problem: &lt;a href="https://leetcode.com/problems/valid-sudoku/" rel="noopener noreferrer"&gt;36 Valid Sudoku&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Difficulty:&lt;/strong&gt; #Medium&lt;br&gt;
&lt;strong&gt;Tags:&lt;/strong&gt; #Array, #HashTable, #Matrix&lt;/p&gt;




&lt;h3&gt;
  
  
  📝 Problem Summary
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;You are given a partially filled &lt;code&gt;9 x 9&lt;/code&gt; Sudoku board. Each row, column, and &lt;code&gt;3x3&lt;/code&gt; sub-box must not contain duplicate digits (from &lt;code&gt;1&lt;/code&gt; to &lt;code&gt;9&lt;/code&gt;).&lt;br&gt;
Return &lt;strong&gt;true&lt;/strong&gt; if the board is valid according to Sudoku rules, otherwise return &lt;strong&gt;false&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Note: The board does &lt;strong&gt;not&lt;/strong&gt; need to be solved, only validated.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  🧠 My Thought Process
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Brute Force Idea:&lt;/strong&gt;&lt;br&gt;
For every cell, scan the entire row, column, and subgrid to check for duplicates. This would be inefficient since it repeatedly checks the same values.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Optimized Strategy:&lt;/strong&gt;&lt;br&gt;
Use &lt;strong&gt;3 hash sets per row, per column, and per subgrid&lt;/strong&gt; to track existing values:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;One set for each row&lt;/li&gt;
&lt;li&gt;One set for each column&lt;/li&gt;
&lt;li&gt;One set for each 3x3 box&lt;/li&gt;
&lt;li&gt;While iterating, if a number already exists in the corresponding row, column, or box → invalid Sudoku.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;




&lt;h3&gt;
  
  
  ⚙️ Code Implementation (Python)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;typing&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;List&lt;/span&gt;

&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Solution&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;isValidSudoku&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;board&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;]])&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;bool&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;rows&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nf"&gt;set&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;_&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;9&lt;/span&gt;&lt;span class="p"&gt;)]&lt;/span&gt;
        &lt;span class="n"&gt;cols&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nf"&gt;set&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;_&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;9&lt;/span&gt;&lt;span class="p"&gt;)]&lt;/span&gt;
        &lt;span class="n"&gt;boxes&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nf"&gt;set&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;_&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;9&lt;/span&gt;&lt;span class="p"&gt;)]&lt;/span&gt;

        &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;9&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
            &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;j&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;9&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
                &lt;span class="n"&gt;val&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;board&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="n"&gt;j&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

                &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;val&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;.&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                    &lt;span class="k"&gt;continue&lt;/span&gt;

                &lt;span class="n"&gt;box_ind&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;j&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

                &lt;span class="nf"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
                    &lt;span class="n"&gt;val&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;rows&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt;
                    &lt;span class="n"&gt;val&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;cols&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;j&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt;
                    &lt;span class="n"&gt;val&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;boxes&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;box_ind&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
                &lt;span class="p"&gt;):&lt;/span&gt;
                    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="bp"&gt;False&lt;/span&gt;

                &lt;span class="n"&gt;rows&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;val&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                &lt;span class="n"&gt;cols&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;j&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;val&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                &lt;span class="n"&gt;boxes&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;box_ind&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;val&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  ⏱️ Time &amp;amp; Space Complexity
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Time:&lt;/strong&gt; O(81) → O(1) (since the board size is fixed 9x9).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Space:&lt;/strong&gt; O(81) → O(1) (at most 9×3 sets storing digits 1–9).&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  🧩 Key Takeaways
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;✅ Learned how to validate Sudoku using &lt;strong&gt;3 parallel data structures (row, col, box)&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;💡 The trick was mapping &lt;code&gt;(i, j)&lt;/code&gt; to a &lt;code&gt;3x3&lt;/code&gt; box index using &lt;code&gt;(i//3)*3 + (j//3)&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;💭 Any problem involving checking constraints in multiple dimensions can often be solved with &lt;strong&gt;parallel hash sets&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  🔁 Reflection (Self-Check)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;[x] Could I solve this without help?&lt;/li&gt;
&lt;li&gt;[x] Did I write code from scratch?&lt;/li&gt;
&lt;li&gt;[x] Did I understand why it works?&lt;/li&gt;
&lt;li&gt;[x] Will I be able to recall this in a week? (Need to reinforce the box index formula).&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  📚 Related Problems
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;[[37 Sudoku Solver]]&lt;/li&gt;
&lt;li&gt;[[2133 Check if Every Row and Column Contains All Numbers]]&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  🚀 Progress Tracker
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Day&lt;/td&gt;
&lt;td&gt;&lt;code&gt;71&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Total Problems Solved&lt;/td&gt;
&lt;td&gt;&lt;code&gt;432&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Confidence Today&lt;/td&gt;
&lt;td&gt;😃&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Leetcode Rating&lt;/td&gt;
&lt;td&gt;&lt;code&gt;1530&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

</description>
    </item>
    <item>
      <title>🧠 Solving LeetCode Until I Become Top 1% — Day `70`</title>
      <dc:creator>Md. Rishat Talukder</dc:creator>
      <pubDate>Fri, 29 Aug 2025 10:52:39 +0000</pubDate>
      <link>https://dev.to/therealrishat/solving-leetcode-until-i-become-top-1-day-70-3o1m</link>
      <guid>https://dev.to/therealrishat/solving-leetcode-until-i-become-top-1-day-70-3o1m</guid>
      <description>&lt;h3&gt;
  
  
  🔹 Problem: &lt;a href="https://leetcode.com/problems/alice-and-bob-playing-flower-game/description/?envType=daily-question&amp;amp;envId=2025-08-29" rel="noopener noreferrer"&gt;3021. Alice and Bob Playing Flower Game&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Difficulty:&lt;/strong&gt; #Medium&lt;br&gt;
&lt;strong&gt;Tags:&lt;/strong&gt; #Math, #Combinatorics&lt;/p&gt;




&lt;h3&gt;
  
  
  📝 Problem Summary
&lt;/h3&gt;

&lt;p&gt;Alice and Bob play a game with &lt;code&gt;n&lt;/code&gt; flowers and &lt;code&gt;m&lt;/code&gt; flowers. Each chooses one flower. Alice wins &lt;strong&gt;if the total number of petals is odd&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;You need to count the number of winning pairs &lt;code&gt;(x, y)&lt;/code&gt; where &lt;code&gt;1 ≤ x ≤ n&lt;/code&gt; and &lt;code&gt;1 ≤ y ≤ m&lt;/code&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  🧠 My Thought Process
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Brute Force Idea:&lt;/strong&gt;&lt;br&gt;
Loop through all pairs &lt;code&gt;(x, y)&lt;/code&gt; and check if &lt;code&gt;x + y&lt;/code&gt; is odd. That would be &lt;code&gt;O(n * m)&lt;/code&gt;, which is too slow for large inputs.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Optimized Strategy:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The solution was unexpectedly simple once I realized the parity logic:&lt;/li&gt;
&lt;li&gt;Alice wins only when one number is &lt;strong&gt;even&lt;/strong&gt; and the other is &lt;strong&gt;odd&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Count how many odds and evens are in &lt;code&gt;1..n&lt;/code&gt; and &lt;code&gt;1..m&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;odds_in_n = (n + 1) // 2&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;evens_in_n = n // 2&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;odds_in_m = (m + 1) // 2&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;evens_in_m = m // 2&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Winning pairs = &lt;code&gt;(odds_in_n * evens_in_m) + (evens_in_n * odds_in_m)&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Simplifies to &lt;code&gt;(n * m) // 2&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;




&lt;h3&gt;
  
  
  ⚙️ Code Implementation (Python)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Solution&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;flowerGame&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;m&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="nf"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;m&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  ⏱️ Time &amp;amp; Space Complexity
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Time:&lt;/strong&gt; &lt;code&gt;O(1)&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Space:&lt;/strong&gt; &lt;code&gt;O(1)&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  🧩 Key Takeaways
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;✅ Learned how to reduce brute-force counting to simple parity logic.&lt;/li&gt;
&lt;li&gt;💡 The trick is noticing that &lt;strong&gt;half of all pairs will have odd sums&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;💭 In future, whenever I see problems about sums being odd/even, I’ll try &lt;strong&gt;counting odds and evens separately&lt;/strong&gt; instead of brute force.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  🔁 Reflection (Self-Check)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;[x] Could I solve this without help?&lt;/li&gt;
&lt;li&gt;[x] Did I write code from scratch?&lt;/li&gt;
&lt;li&gt;[x] Did I understand why it works?&lt;/li&gt;
&lt;li&gt;[x] Will I be able to recall this in a week? → Let’s see 😅&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  🚀 Progress Tracker
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Day&lt;/td&gt;
&lt;td&gt;&lt;code&gt;70&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Total Problems Solved&lt;/td&gt;
&lt;td&gt;&lt;code&gt;431&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Confidence Today&lt;/td&gt;
&lt;td&gt;😃&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Leetcode Rating&lt;/td&gt;
&lt;td&gt;&lt;code&gt;1530&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

</description>
    </item>
    <item>
      <title>🧠 Solving LeetCode Until I Become Top 1% — Day `69`</title>
      <dc:creator>Md. Rishat Talukder</dc:creator>
      <pubDate>Thu, 28 Aug 2025 06:32:11 +0000</pubDate>
      <link>https://dev.to/therealrishat/solving-leetcode-until-i-become-top-1-day-69-2cb3</link>
      <guid>https://dev.to/therealrishat/solving-leetcode-until-i-become-top-1-day-69-2cb3</guid>
      <description>&lt;h3&gt;
  
  
  🔹 Problem: &lt;a href="https://leetcode.com/problems/sort-matrix-by-diagonals/description/?envType=daily-question&amp;amp;envId=2025-08-28" rel="noopener noreferrer"&gt;3446 Sort Matrix by Diagonals&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Difficulty:&lt;/strong&gt; #Medium&lt;br&gt;
&lt;strong&gt;Tags:&lt;/strong&gt; #Matrix, #HashMap, #Sorting&lt;/p&gt;




&lt;h3&gt;
  
  
  📝 Problem Summary
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;You are given a 2D grid. Each diagonal of the matrix (identified by the difference &lt;code&gt;row - col&lt;/code&gt;) must be sorted independently.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Diagonals starting from the top-right should be sorted in &lt;strong&gt;descending order&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Diagonals starting from the top-left should be sorted in &lt;strong&gt;ascending order&lt;/strong&gt;.
Return the modified matrix after sorting each diagonal.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  🧠 My Thought Process
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Brute Force Idea:&lt;/strong&gt;&lt;br&gt;
Extract each diagonal separately into a list, sort it, and then put the sorted values back. But this requires a lot of manual tracking of diagonals.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Optimized Strategy:&lt;/strong&gt;&lt;br&gt;
Instead of treating diagonals manually, use the property that each diagonal is uniquely identified by &lt;code&gt;row - col&lt;/code&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Store elements of each diagonal in a &lt;code&gt;hashmap&lt;/code&gt; where &lt;code&gt;key = row - col&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Sort diagonals:&lt;/li&gt;
&lt;li&gt;If &lt;code&gt;key &amp;lt; 0&lt;/code&gt; (upper diagonals), sort &lt;strong&gt;descending&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;If &lt;code&gt;key &amp;gt;= 0&lt;/code&gt; (lower diagonals), sort &lt;strong&gt;ascending&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Refill the matrix by popping elements back in the correct order.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;strong&gt;Algorithm Used:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;code&gt;HashMap for grouping + Sorting each diagonal independently&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;

&lt;/ul&gt;




&lt;h3&gt;
  
  
  ⚙️ Code Implementation (Python)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;collections&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;defaultdict&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;typing&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;List&lt;/span&gt;

&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Solution&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;sortMatrix&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;grid&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;]])&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;]]:&lt;/span&gt;
        &lt;span class="n"&gt;hashmap&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;defaultdict&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;list&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;rows&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;grid&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;cols&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;grid&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;

        &lt;span class="c1"&gt;# Group elements by diagonal (key = row - col)
&lt;/span&gt;        &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;row&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;rows&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
            &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;col&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cols&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
                &lt;span class="n"&gt;key&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;row&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;col&lt;/span&gt;
                &lt;span class="n"&gt;hashmap&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;grid&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;row&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="n"&gt;col&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;

        &lt;span class="c1"&gt;# Sort each diagonal
&lt;/span&gt;        &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;key&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;hashmap&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;key&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                &lt;span class="n"&gt;hashmap&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;sort&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;reverse&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                &lt;span class="n"&gt;hashmap&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;sort&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

        &lt;span class="c1"&gt;# Refill the matrix with sorted diagonals
&lt;/span&gt;        &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;row&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;rows&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
            &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;col&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cols&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
                &lt;span class="n"&gt;key&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;row&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;col&lt;/span&gt;
                &lt;span class="n"&gt;grid&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;row&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="n"&gt;col&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;hashmap&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;pop&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;grid&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  ⏱️ Time &amp;amp; Space Complexity
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Time:&lt;/strong&gt; O(m × n × log(min(m, n))) — each diagonal is sorted individually.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Space:&lt;/strong&gt; O(m × n) — hashmap storage for all diagonals.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  🧩 Key Takeaways
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;✅ Learned the trick that diagonals in a matrix can be grouped using &lt;code&gt;row - col&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;💡 The twist was handling different sort orders (ascending vs descending) depending on diagonal position.&lt;/li&gt;
&lt;li&gt;💭 For future diagonal problems, always check if &lt;code&gt;row - col&lt;/code&gt; or &lt;code&gt;row + col&lt;/code&gt; can uniquely represent them.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  🔁 Reflection (Self-Check)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;[x] Could I solve this without help?&lt;/li&gt;
&lt;li&gt;[x] Did I write code from scratch?&lt;/li&gt;
&lt;li&gt;[x] Did I understand why it works?&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  * [x] Will I be able to recall this in a week? 
&lt;/h2&gt;

&lt;h3&gt;
  
  
  📚 Related Problems
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;[[1329 Sort the Matrix Diagonally]]&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  🚀 Progress Tracker
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Day&lt;/td&gt;
&lt;td&gt;&lt;code&gt;69&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Total Problems Solved&lt;/td&gt;
&lt;td&gt;&lt;code&gt;430&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Confidence Today&lt;/td&gt;
&lt;td&gt;😃&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Leetcode Rating&lt;/td&gt;
&lt;td&gt;&lt;code&gt;1530&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

</description>
    </item>
    <item>
      <title>🧠 Solving LeetCode Until I Become Top 1% — Day `68`</title>
      <dc:creator>Md. Rishat Talukder</dc:creator>
      <pubDate>Wed, 27 Aug 2025 05:35:39 +0000</pubDate>
      <link>https://dev.to/therealrishat/solving-leetcode-until-i-become-top-1-day-68-2mog</link>
      <guid>https://dev.to/therealrishat/solving-leetcode-until-i-become-top-1-day-68-2mog</guid>
      <description>&lt;h3&gt;
  
  
  🔹 Problem: &lt;a href="https://leetcode.com/problems/length-of-longest-v-shaped-diagonal-segment/description/?envType=daily-question&amp;amp;envId=2025-08-27" rel="noopener noreferrer"&gt;3459. Length of Longest V-Shaped Diagonal Segment&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Difficulty:&lt;/strong&gt; Hard&lt;br&gt;
&lt;strong&gt;Tags:&lt;/strong&gt; #DynamicProgramming #Grid #DFS&lt;/p&gt;




&lt;h3&gt;
  
  
  📝 Problem Summary
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;You are given a binary grid (&lt;code&gt;0&lt;/code&gt;s and &lt;code&gt;1&lt;/code&gt;s).&lt;br&gt;
A &lt;em&gt;V-shaped diagonal segment&lt;/em&gt; is defined as a path that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Starts at a cell with value &lt;code&gt;1&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Moves diagonally in one of the four directions (↘, ↙, ↖, ↗).&lt;/li&gt;
&lt;li&gt;At some point, &lt;strong&gt;turns exactly once&lt;/strong&gt; clockwise (90°).&lt;/li&gt;
&lt;li&gt;Alternates values along the path (&lt;code&gt;1 → 2 → 1 → 2 …&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The task is to find the &lt;strong&gt;maximum length&lt;/strong&gt; of such a segment.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  🧠 My Thought Process
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Brute Force Idea:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;From every &lt;code&gt;1&lt;/code&gt; cell, try walking diagonally in all directions.&lt;/li&gt;
&lt;li&gt;Keep track of visited cells and attempt to form a V-shape.&lt;/li&gt;
&lt;li&gt;This would be exponential because at each step, you can choose to continue straight or turn → &lt;strong&gt;too slow&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Optimized Strategy:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Notice that the segment is &lt;strong&gt;strictly alternating&lt;/strong&gt; (&lt;code&gt;1-2-1-2…&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;We only need to know:&lt;/li&gt;
&lt;li&gt;Current position &lt;code&gt;(x, y)&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Current direction (which diagonal we’re going).&lt;/li&gt;
&lt;li&gt;Whether we’ve already turned (boolean).&lt;/li&gt;
&lt;li&gt;What value we expect next (&lt;code&gt;1&lt;/code&gt; or &lt;code&gt;2&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;This screams &lt;strong&gt;DFS + Memoization (cache)&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Key Insight:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If we move straight → continue the same direction.&lt;/li&gt;
&lt;li&gt;If we haven’t turned yet → try turning clockwise and continue.&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;@cache&lt;/code&gt; so we don’t recompute states.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;




&lt;h3&gt;
  
  
  ⚙️ Algorithm (Step-by-Step)
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Define 4 diagonal directions:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;↘ (1,1)&lt;/code&gt;, &lt;code&gt;↙ (1,-1)&lt;/code&gt;, &lt;code&gt;↖ (-1,-1)&lt;/code&gt;, &lt;code&gt;↗ (-1,1)&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Write a recursive DFS function with memoization:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Input: &lt;code&gt;(x, y, direction, can_turn, expected_value)&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Compute next &lt;code&gt;(nx, ny)&lt;/code&gt; in the same direction.&lt;/li&gt;
&lt;li&gt;If out of bounds or value ≠ expected → stop.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Otherwise:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Continue straight in same direction.&lt;/li&gt;
&lt;li&gt;If &lt;code&gt;can_turn = True&lt;/code&gt;, try turning clockwise and recurse.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Add &lt;code&gt;+1&lt;/code&gt; at each successful step.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;From every &lt;code&gt;1&lt;/code&gt; in the grid, try all 4 directions with initial &lt;code&gt;can_turn=True&lt;/code&gt;, expecting &lt;code&gt;2&lt;/code&gt; next.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Keep global maximum.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;




&lt;h3&gt;
  
  
  ⚙️ Code Implementation (Python)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;functools&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;cache&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;typing&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;List&lt;/span&gt;

&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Solution&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;lenOfVDiagonal&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;grid&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;]])&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;DIRS&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)]&lt;/span&gt;  &lt;span class="c1"&gt;# diagonals
&lt;/span&gt;        &lt;span class="n"&gt;m&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;grid&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;grid&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;

        &lt;span class="nd"&gt;@cache&lt;/span&gt;
        &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;dfs&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;can_turn&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;target&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
            &lt;span class="n"&gt;nx&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ny&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;DIRS&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;DIRS&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;nx&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="n"&gt;ny&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="n"&gt;nx&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="n"&gt;m&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="n"&gt;ny&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="n"&gt;grid&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;nx&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="n"&gt;ny&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="n"&gt;target&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
            &lt;span class="n"&gt;best&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;dfs&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;nx&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ny&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;can_turn&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;target&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="c1"&gt;# continue straight
&lt;/span&gt;            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;can_turn&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                &lt;span class="n"&gt;best&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;max&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;best&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nf"&gt;dfs&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;nx&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ny&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;d&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="bp"&gt;False&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;target&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;  &lt;span class="c1"&gt;# turn
&lt;/span&gt;            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;best&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;

        &lt;span class="n"&gt;res&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
        &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;m&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
            &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;j&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
                &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;grid&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="n"&gt;j&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;  &lt;span class="c1"&gt;# must start from 1
&lt;/span&gt;                    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
                        &lt;span class="n"&gt;res&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;max&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;res&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nf"&gt;dfs&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;j&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;res&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  ⏱️ Time &amp;amp; Space Complexity
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Time:&lt;/strong&gt;&lt;br&gt;
Each state &lt;code&gt;(x, y, direction, can_turn, target)&lt;/code&gt; is computed once →&lt;br&gt;
&lt;strong&gt;O(m × n × 4 × 2 × 2) ≈ O(mn)&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Space:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Memoization cache → &lt;code&gt;O(mn)&lt;/code&gt; states.&lt;/li&gt;
&lt;li&gt;DFS recursion stack depth at most &lt;code&gt;O(m+n)&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;




&lt;h3&gt;
  
  
  🧩 Key Takeaways
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;✅ Converted brute force into &lt;strong&gt;stateful DFS + memoization&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;💡 Trick: No need to calculate actual diagonals → just use &lt;code&gt;(dx,dy)&lt;/code&gt; pairs.&lt;/li&gt;
&lt;li&gt;💭 Similar problems will involve &lt;strong&gt;grid + path + direction + turn state&lt;/strong&gt; → DP over state space.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  🔁 Reflection (Self-Check)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;[ ] Could I solve this without help? -&amp;gt; This problem had a lot of moving parts for me to handle alone. &lt;/li&gt;
&lt;li&gt;[x] Did I understand why memoization was necessary?&lt;/li&gt;
&lt;li&gt;[x] Did I capture the turning logic correctly?&lt;/li&gt;
&lt;li&gt;[ ] Can I implement this again tomorrow without notes?&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  🚀 Progress Tracker
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Day&lt;/td&gt;
&lt;td&gt;&lt;code&gt;68&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Total Problems Solved&lt;/td&gt;
&lt;td&gt;&lt;code&gt;430&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Confidence Today&lt;/td&gt;
&lt;td&gt;😃&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Leetcode Rating&lt;/td&gt;
&lt;td&gt;&lt;code&gt;1530&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

</description>
    </item>
    <item>
      <title>🧠 Solving LeetCode Until I Become Top 1% — Day `67`</title>
      <dc:creator>Md. Rishat Talukder</dc:creator>
      <pubDate>Tue, 26 Aug 2025 05:03:08 +0000</pubDate>
      <link>https://dev.to/therealrishat/solving-leetcode-until-i-become-top-1-day-66-4ddp</link>
      <guid>https://dev.to/therealrishat/solving-leetcode-until-i-become-top-1-day-66-4ddp</guid>
      <description>&lt;h3&gt;
  
  
  🔹 Problem: &lt;a href="http://leetcode.com/problems/maximum-area-of-longest-diagonal-rectangle/description/?envType=daily-question&amp;amp;envId=2025-08-26" rel="noopener noreferrer"&gt;3000. Maximum Area of Longest Diagonal Rectangle&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Difficulty:&lt;/strong&gt; #Easy&lt;br&gt;
&lt;strong&gt;Tags:&lt;/strong&gt; #Array #Math&lt;/p&gt;




&lt;h3&gt;
  
  
  📝 Problem Summary
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;You are given a 2D integer array &lt;code&gt;dimensions&lt;/code&gt; where &lt;code&gt;dimensions[i] = [li, wi]&lt;/code&gt; indicates that the &lt;code&gt;iᵗʰ&lt;/code&gt; rectangle has a length of &lt;code&gt;li&lt;/code&gt; and a width of &lt;code&gt;wi&lt;/code&gt;.&lt;/p&gt;
&lt;h2&gt;
  
  
  Return the area of the rectangle with the largest area among all rectangles that have the longest diagonal. If there are multiple rectangles with the longest diagonal, return the largest area among them.
&lt;/h2&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  🧠 My Thought Process
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Optimized Strategy:&lt;/strong&gt;
&lt;em&gt;It's just a simple conditional maximization problem. We need to calculate the diagonal and area for each rectangle and keep track of the maximum diagonal and corresponding maximum area.&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  ⚙️ Code Implementation (Python)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Brief comment about the approach
&lt;/span&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Solution&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;areaOfMaxDiagonal&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;dimensions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;]])&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;mdiag&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
        &lt;span class="n"&gt;marea&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;

        &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;l&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;w&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;dimensions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="n"&gt;diag&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;l&lt;/span&gt;&lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;w&lt;/span&gt;&lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;
            &lt;span class="n"&gt;area&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;l&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;w&lt;/span&gt;

            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;diag&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;mdiag&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;mdiag&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="n"&gt;diag&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;area&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;marea&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
                &lt;span class="n"&gt;mdiag&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;diag&lt;/span&gt;
                &lt;span class="n"&gt;marea&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;area&lt;/span&gt;

        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;marea&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  ⏱️ Time &amp;amp; Space Complexity
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Time:&lt;/strong&gt; O(n) where n is the number of rectangles in dimensions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Space:&lt;/strong&gt; O(1) constant space&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  🧩 Key Takeaways
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;✅ What concept or trick did I learn?

&lt;ul&gt;
&lt;li&gt;Simple iteration with conditional checks to maintain maximum values.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;💡 What made this problem tricky?

&lt;ul&gt;
&lt;li&gt;Ensuring to check both diagonal length and area correctly.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;💭 How will I recognize a similar problem in the future?

&lt;ul&gt;
&lt;li&gt;Look for problems that require maximizing or minimizing values based on multiple criteria.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;




&lt;h3&gt;
  
  
  🔁 Reflection (Self-Check)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;[x] Could I solve this without help?&lt;/li&gt;
&lt;li&gt;[x] Did I write code from scratch?&lt;/li&gt;
&lt;li&gt;[x] Did I understand why it works?&lt;/li&gt;
&lt;li&gt;[x] Will I be able to recall this in a week?&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  🚀 Progress Tracker
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Day&lt;/td&gt;
&lt;td&gt;&lt;code&gt;67&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Total Problems Solved&lt;/td&gt;
&lt;td&gt;&lt;code&gt;429&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Confidence Today&lt;/td&gt;
&lt;td&gt;😃 / 😐 / 😣&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Leetcode Rating&lt;/td&gt;
&lt;td&gt;&lt;code&gt;1530&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

</description>
    </item>
    <item>
      <title>🧠 Solving LeetCode Until I Become Top 1% — Day `66`</title>
      <dc:creator>Md. Rishat Talukder</dc:creator>
      <pubDate>Mon, 25 Aug 2025 06:06:16 +0000</pubDate>
      <link>https://dev.to/therealrishat/solving-leetcode-until-i-become-top-1-day-66-2pn5</link>
      <guid>https://dev.to/therealrishat/solving-leetcode-until-i-become-top-1-day-66-2pn5</guid>
      <description>&lt;h3&gt;
  
  
  🔹 Problem: &lt;a href="https://leetcode.com/problems/diagonal-traverse/description/?envType=daily-question&amp;amp;envId=2025-08-25" rel="noopener noreferrer"&gt;498. Diagonal Traverse&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Difficulty:&lt;/strong&gt; #Medium&lt;br&gt;
&lt;strong&gt;Tags:&lt;/strong&gt; #Matrix&lt;/p&gt;




&lt;h3&gt;
  
  
  📝 Problem Summary
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;Given an &lt;code&gt;m x n&lt;/code&gt; matrix, return all elements of the matrix in a diagonal order as shown in the below image.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/image.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/image.png" alt="alt text" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  🧠 My Thought Process
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Brute Force Idea:&lt;/strong&gt;
&lt;em&gt;This Problem is actually totally based on observation. And it's solution is also brute force. We just need to observe the pattern and implement it.&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Algorithm (Step-by-Step with Explanations):
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Initialize matrix dimensions&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Let &lt;code&gt;row = number of rows in matrix&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Let &lt;code&gt;col = number of columns in matrix&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;This tells us the boundaries so we don’t step outside the matrix.&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Prepare storage for the result&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Create an empty list &lt;code&gt;res&lt;/code&gt; to store elements in the required diagonal order.&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Track traversal direction (zig-zag)&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Use a flag &lt;code&gt;parity = True&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;This means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;True&lt;/code&gt; → traverse &lt;strong&gt;up-right&lt;/strong&gt; (↗️).&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;False&lt;/code&gt; → traverse &lt;strong&gt;down-left&lt;/strong&gt; (↙️).&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;&lt;p&gt;We flip this after finishing each diagonal.&lt;/p&gt;&lt;/li&gt;

&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Loop through diagonals&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;There are exactly &lt;code&gt;row + col - 1&lt;/code&gt; diagonals in total.&lt;/li&gt;
&lt;li&gt;Each diagonal corresponds to elements where &lt;code&gt;r + c = s&lt;/code&gt; (a fixed sum).&lt;/li&gt;
&lt;li&gt;So we iterate &lt;code&gt;s&lt;/code&gt; from &lt;code&gt;0&lt;/code&gt; to &lt;code&gt;row + col - 2&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Case 1: Traverse upward-right (↗️) when parity is True&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Starting point:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Row index &lt;code&gt;r = min(s, row - 1)&lt;/code&gt; (either bottom-most or current diagonal’s row).&lt;/li&gt;
&lt;li&gt;Column index &lt;code&gt;c = s - r&lt;/code&gt; (the complement so that &lt;code&gt;r + c = s&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Keep moving:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;While &lt;code&gt;r &amp;gt;= 0&lt;/code&gt; and &lt;code&gt;c &amp;lt; col&lt;/code&gt;:

&lt;ul&gt;
&lt;li&gt;Append &lt;code&gt;mat[r][c]&lt;/code&gt; to result.&lt;/li&gt;
&lt;li&gt;Move one step up-right: &lt;code&gt;r -= 1, c += 1&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;/li&gt;

&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Case 2: Traverse downward-left (↙️) when parity is False&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Starting point:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Column index &lt;code&gt;c = min(s, col - 1)&lt;/code&gt; (either right-most or diagonal’s column).&lt;/li&gt;
&lt;li&gt;Row index &lt;code&gt;r = s - c&lt;/code&gt; (so that &lt;code&gt;r + c = s&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Keep moving:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;While &lt;code&gt;c &amp;gt;= 0&lt;/code&gt; and &lt;code&gt;r &amp;lt; row&lt;/code&gt;:

&lt;ul&gt;
&lt;li&gt;Append &lt;code&gt;mat[r][c]&lt;/code&gt; to result.&lt;/li&gt;
&lt;li&gt;Move one step down-left: &lt;code&gt;r += 1, c -= 1&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;/li&gt;

&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Flip direction&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;After finishing one diagonal, set &lt;code&gt;parity = not parity&lt;/code&gt; to switch between up-right and down-left.&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Return result&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;After traversing all diagonals, return &lt;code&gt;res&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  ⚙️ Code Implementation (Python)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Brief comment about the approach
&lt;/span&gt;
&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Solution&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;findDiagonalOrder&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;mat&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;]])&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
        &lt;span class="n"&gt;row&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;mat&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;col&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;mat&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
        &lt;span class="n"&gt;parity&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;

        &lt;span class="n"&gt;res&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;

        &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;row&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;col&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;parity&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                &lt;span class="n"&gt;r&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;min&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;row&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                &lt;span class="n"&gt;c&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt;
                &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;col&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                    &lt;span class="n"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;mat&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
                    &lt;span class="n"&gt;r&lt;/span&gt; &lt;span class="o"&gt;-=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
                    &lt;span class="n"&gt;c&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
            &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                &lt;span class="n"&gt;c&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;min&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;col&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                &lt;span class="n"&gt;r&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;
                &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;row&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                    &lt;span class="n"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;mat&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
                    &lt;span class="n"&gt;r&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
                    &lt;span class="n"&gt;c&lt;/span&gt; &lt;span class="o"&gt;-=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
            &lt;span class="n"&gt;parity&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;parity&lt;/span&gt;

        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;res&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  ⏱️ Time &amp;amp; Space Complexity
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Time:&lt;/strong&gt; O(m * n) where m is number of rows and n is number of columns.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Space:&lt;/strong&gt; O(m * n) for the result list storing all elements.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  🧩 Key Takeaways
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;✅ What concept or trick did I learn?

&lt;ul&gt;
&lt;li&gt;Observing patterns in matrix traversal and using a parity flag to alternate directions.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;💡 What made this problem tricky?

&lt;ul&gt;
&lt;li&gt;Understanding how to calculate starting points for each diagonal based on the sum of indices.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;💭 How will I recognize a similar problem in the future?

&lt;ul&gt;
&lt;li&gt;Look for problems involving matrix traversal with specific patterns or orders.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;




&lt;h3&gt;
  
  
  🔁 Reflection (Self-Check)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;[x] Could I solve this without help?&lt;/li&gt;
&lt;li&gt;[x] Did I write code from scratch?&lt;/li&gt;
&lt;li&gt;[x] Did I understand why it works?&lt;/li&gt;
&lt;li&gt;[x] Will I be able to recall this in a week?&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  📚 Related Problems
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;[[2075 Decode the Slanted Ciphertext]]&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  🚀 Progress Tracker
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Day&lt;/td&gt;
&lt;td&gt;&lt;code&gt;66&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Total Problems Solved&lt;/td&gt;
&lt;td&gt;&lt;code&gt;428&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Confidence Today&lt;/td&gt;
&lt;td&gt;😃&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Leetcode Rating&lt;/td&gt;
&lt;td&gt;&lt;code&gt;1530&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

</description>
    </item>
  </channel>
</rss>
