<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>Coder OP</title>
        <link>https://paragraph.com/@coder-op</link>
        <description>undefined</description>
        <lastBuildDate>Wed, 06 May 2026 21:06:28 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <image>
            <title>Coder OP</title>
            <url>https://storage.googleapis.com/papyrus_images/b34628faddc84adb4d57fdea68d19e36c8aae8b7d7bf4bcee63a5812525f179a.jpg</url>
            <link>https://paragraph.com/@coder-op</link>
        </image>
        <copyright>All rights reserved</copyright>
        <item>
            <title><![CDATA[LeetCode #523: Continuos Subarray Sum]]></title>
            <link>https://paragraph.com/@coder-op/leetcode-523-continuos-subarray-sum</link>
            <guid>sXJBN4nur80p7YiRBEwD</guid>
            <pubDate>Sun, 06 Nov 2022 12:06:20 GMT</pubDate>
            <description><![CDATA[Intution :We need a subarray say from i to j such that sum of all elements is divisible by k.sum_j means prefix sum from 0 to jsum_i means prefix sum from 0 to i => (sum_j - sum_i) % k = 0 => sum_j % k - sum % k = 0 => sum_j % k = sum_i % k &#x3C;Relation derived !!!> Thus for some prefix_sum(0,j) , we need to check if there exist some prefix_sum(0,i) such that both are equal.If yes then return true.Otherwise check for some other jLets do a dry run on first example:Given, nums : 23 2 4 6 7 , ...]]></description>
            <content:encoded><![CDATA[<p><strong>Intution :</strong></p><ul><li><p>We need a subarray say from i to j such that sum of all elements is divisible by k.</p><ul><li><p>sum_j means prefix sum from 0 to j</p></li><li><p>sum_i means prefix sum from 0 to i</p><pre data-type="codeBlock" text=" =&gt; (sum_j - sum_i) % k = 0
 =&gt; sum_j % k - sum % k = 0
 =&gt; sum_j % k = sum_i % k    &lt;Relation derived !!!&gt;
"><code> <span class="hljs-operator">=</span><span class="hljs-operator">></span> (sum_j <span class="hljs-operator">-</span> sum_i) <span class="hljs-operator">%</span> k <span class="hljs-operator">=</span> <span class="hljs-number">0</span>
 <span class="hljs-operator">=</span><span class="hljs-operator">></span> sum_j <span class="hljs-operator">%</span> k <span class="hljs-operator">-</span> sum <span class="hljs-operator">%</span> k <span class="hljs-operator">=</span> <span class="hljs-number">0</span>
 <span class="hljs-operator">=</span><span class="hljs-operator">></span> sum_j <span class="hljs-operator">%</span> k <span class="hljs-operator">=</span> sum_i <span class="hljs-operator">%</span> k    <span class="hljs-operator">&#x3C;</span>Relation derived <span class="hljs-operator">!</span><span class="hljs-operator">!</span><span class="hljs-operator">!</span><span class="hljs-operator">></span>
</code></pre></li></ul></li><li><p>Thus for some prefix_sum(0,j) , we need to check if there exist some prefix_sum(0,i) such that both are equal.</p><ul><li><p>If yes then return true.</p></li><li><p>Otherwise check for some other j</p></li></ul></li><li><p>Lets do a dry run on first example:</p><ul><li><p>Given, nums : 23 2 4 6 7 , k = 6</p></li><li><p>Prefix_Sum at every iteration from 0-&gt;i :</p><pre data-type="codeBlock" text="  i = 0  , prefixSum = 23%6 = 5       | map[5] = 0 (new entry)
  i = 1 , prefixSum = (5+2)%6 = 1     | map[1] = 1 (new entry)
  i = 2 , prefixSum = (1+4)%6 = 5     | map[5] (already exist) !! -&gt; Possible answer
"><code>  i <span class="hljs-operator">=</span> <span class="hljs-number">0</span>  , prefixSum <span class="hljs-operator">=</span> <span class="hljs-number">23</span><span class="hljs-operator">%</span><span class="hljs-number">6</span> <span class="hljs-operator">=</span> <span class="hljs-number">5</span>       <span class="hljs-operator">|</span> map[<span class="hljs-number">5</span>] <span class="hljs-operator">=</span> <span class="hljs-number">0</span> (<span class="hljs-keyword">new</span> entry)
  i <span class="hljs-operator">=</span> <span class="hljs-number">1</span> , prefixSum <span class="hljs-operator">=</span> (<span class="hljs-number">5</span><span class="hljs-operator">+</span><span class="hljs-number">2</span>)<span class="hljs-operator">%</span><span class="hljs-number">6</span> <span class="hljs-operator">=</span> <span class="hljs-number">1</span>     <span class="hljs-operator">|</span> map[<span class="hljs-number">1</span>] <span class="hljs-operator">=</span> <span class="hljs-number">1</span> (<span class="hljs-keyword">new</span> entry)
  i <span class="hljs-operator">=</span> <span class="hljs-number">2</span> , prefixSum <span class="hljs-operator">=</span> (<span class="hljs-number">1</span><span class="hljs-operator">+</span><span class="hljs-number">4</span>)<span class="hljs-operator">%</span><span class="hljs-number">6</span> <span class="hljs-operator">=</span> <span class="hljs-number">5</span>     <span class="hljs-operator">|</span> map[<span class="hljs-number">5</span>] (already exist) <span class="hljs-operator">!</span><span class="hljs-operator">!</span> <span class="hljs-operator">-</span><span class="hljs-operator">></span> Possible answer
</code></pre></li><li><p><em>Also, i - map[5] = 2 &gt; 1 ... therefore at least 2 elements condition is also satisfied</em></p></li></ul></li></ul><h3 id="h-code" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Code:</h3><pre data-type="codeBlock" text="bool checkSubarraySum(vector&lt;int&gt;&amp; nums, int k) {
     
    int prefSum = 0;
    unordered_map&lt;int, int&gt; mp;
    for(int i=0; i&lt;nums.size(); i++)
    {
        prefSum += nums[i];
        prefSum %= k;

        if(prefSum == 0 &amp;&amp; i) return true;

        // cout &lt;&lt; prefSum &lt;&lt; &quot; &quot;;
        if(mp.find(prefSum) != mp.end())  // Found the required prefix sum 
        {
            if(i - mp[prefSum] &gt; 1) return true; // check if atleast 2 elements are there or not
        }
        else mp[prefSum] = i;
    }

    return false;
}
"><code><span class="hljs-keyword">bool</span> checkSubarraySum(vector<span class="hljs-operator">&#x3C;</span><span class="hljs-keyword">int</span><span class="hljs-operator">></span><span class="hljs-operator">&#x26;</span> nums, <span class="hljs-keyword">int</span> k) {
     
    <span class="hljs-keyword">int</span> prefSum <span class="hljs-operator">=</span> <span class="hljs-number">0</span>;
    unordered_map<span class="hljs-operator">&#x3C;</span><span class="hljs-keyword">int</span>, <span class="hljs-keyword">int</span><span class="hljs-operator">></span> mp;
    <span class="hljs-keyword">for</span>(<span class="hljs-keyword">int</span> i<span class="hljs-operator">=</span><span class="hljs-number">0</span>; i<span class="hljs-operator">&#x3C;</span>nums.size(); i<span class="hljs-operator">+</span><span class="hljs-operator">+</span>)
    {
        prefSum <span class="hljs-operator">+</span><span class="hljs-operator">=</span> nums[i];
        prefSum <span class="hljs-operator">%</span><span class="hljs-operator">=</span> k;

        <span class="hljs-keyword">if</span>(prefSum <span class="hljs-operator">=</span><span class="hljs-operator">=</span> <span class="hljs-number">0</span> <span class="hljs-operator">&#x26;</span><span class="hljs-operator">&#x26;</span> i) <span class="hljs-keyword">return</span> <span class="hljs-literal">true</span>;

        <span class="hljs-comment">// cout &#x3C;&#x3C; prefSum &#x3C;&#x3C; " ";</span>
        <span class="hljs-keyword">if</span>(mp.find(prefSum) <span class="hljs-operator">!</span><span class="hljs-operator">=</span> mp.end())  <span class="hljs-comment">// Found the required prefix sum </span>
        {
            <span class="hljs-keyword">if</span>(i <span class="hljs-operator">-</span> mp[prefSum] <span class="hljs-operator">></span> <span class="hljs-number">1</span>) <span class="hljs-keyword">return</span> <span class="hljs-literal">true</span>; <span class="hljs-comment">// check if atleast 2 elements are there or not</span>
        }
        <span class="hljs-keyword">else</span> mp[prefSum] <span class="hljs-operator">=</span> i;
    }

    <span class="hljs-keyword">return</span> <span class="hljs-literal">false</span>;
}
</code></pre>]]></content:encoded>
            <author>coder-op@newsletter.paragraph.com (Coder OP)</author>
        </item>
        <item>
            <title><![CDATA[LeetCode #835: Image Overlap]]></title>
            <link>https://paragraph.com/@coder-op/leetcode-835-image-overlap</link>
            <guid>fHR51zRkltFYE6Vuh4ik</guid>
            <pubDate>Sun, 06 Nov 2022 12:02:01 GMT</pubDate>
            <description><![CDATA[Ok So, Lets start There are many solutions here but none of them have talked about the intuition. I will take you step by step with the complete Logic. LOGIC :- Initially take all the 1&apos;s in both of the matrices into two different vectors. Or vector of pairs for our convinience as we are going to store the coordinates both x and y. Now, The main logic here is to simply map ! each of the 1&apos;s from first matrix to every 1 that is present in the other matrix.Just do the same for all the...]]></description>
            <content:encoded><![CDATA[<p>Ok So, Lets start There are many solutions here but none of them have talked about the intuition. I will take you step by step with the complete Logic.</p><p>LOGIC :- Initially take all the 1&apos;s in both of the matrices into two different vectors. Or vector of pairs for our convinience as we are going to store the coordinates both x and y.</p><p>Now,</p><p>The main logic here is to simply map ! each of the 1&apos;s from first matrix to every 1 that is present in the other matrix.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/7f7c42649952c2128e85a693deed03877242fe514a36b569cd352779e4d7eb31.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>Just do the same for all the other 1&apos;s in matrix1. And we keep track of overlapping that we get in all of these cases. The one with maximum overlapping is our answer.</p><pre data-type="codeBlock" text="int largestOverlap(vector&lt;vector&lt;int&gt;&gt;&amp; img1, vector&lt;vector&lt;int&gt;&gt;&amp; img2) {
        int n=img1.size();
        vector&lt;pair&lt;int,int&gt;&gt;vp1,vp2;
        for(int i=0;i&lt;n;i++){
            for(int j=0;j&lt;n;j++){
                if(img1[i][j]==1){
                    vp1.push_back({i,j});
                }
                if(img2[i][j]==1){
                    vp2.push_back({i,j});
                }
            }
        }
        int ans=0;
        map&lt;pair&lt;int,int&gt;,int&gt;mp;
        for(auto it1:vp1){
            for(auto it2:vp2){
                int a=it1.first-it2.first;
                int b=it1.second-it2.second;
                mp[{a,b}]++;
                ans=max(ans,mp[{a,b}]);
            }
        }
        return ans;
"><code><span class="hljs-keyword">int</span> largestOverlap(vector<span class="hljs-operator">&#x3C;</span>vector<span class="hljs-operator">&#x3C;</span><span class="hljs-keyword">int</span><span class="hljs-operator">></span><span class="hljs-operator">></span><span class="hljs-operator">&#x26;</span> img1, vector<span class="hljs-operator">&#x3C;</span>vector<span class="hljs-operator">&#x3C;</span><span class="hljs-keyword">int</span><span class="hljs-operator">></span><span class="hljs-operator">></span><span class="hljs-operator">&#x26;</span> img2) {
        <span class="hljs-keyword">int</span> n<span class="hljs-operator">=</span>img1.size();
        vector<span class="hljs-operator">&#x3C;</span>pair<span class="hljs-operator">&#x3C;</span><span class="hljs-keyword">int</span>,<span class="hljs-keyword">int</span><span class="hljs-operator">></span><span class="hljs-operator">></span>vp1,vp2;
        <span class="hljs-keyword">for</span>(<span class="hljs-keyword">int</span> i<span class="hljs-operator">=</span><span class="hljs-number">0</span>;i<span class="hljs-operator">&#x3C;</span>n;i<span class="hljs-operator">+</span><span class="hljs-operator">+</span>){
            <span class="hljs-keyword">for</span>(<span class="hljs-keyword">int</span> j<span class="hljs-operator">=</span><span class="hljs-number">0</span>;j<span class="hljs-operator">&#x3C;</span>n;j<span class="hljs-operator">+</span><span class="hljs-operator">+</span>){
                <span class="hljs-keyword">if</span>(img1[i][j]<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-number">1</span>){
                    vp1.push_back({i,j});
                }
                <span class="hljs-keyword">if</span>(img2[i][j]<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-number">1</span>){
                    vp2.push_back({i,j});
                }
            }
        }
        <span class="hljs-keyword">int</span> ans<span class="hljs-operator">=</span><span class="hljs-number">0</span>;
        map<span class="hljs-operator">&#x3C;</span>pair<span class="hljs-operator">&#x3C;</span><span class="hljs-keyword">int</span>,<span class="hljs-keyword">int</span><span class="hljs-operator">></span>,<span class="hljs-keyword">int</span><span class="hljs-operator">></span>mp;
        <span class="hljs-keyword">for</span>(auto it1:vp1){
            <span class="hljs-keyword">for</span>(auto it2:vp2){
                <span class="hljs-keyword">int</span> a<span class="hljs-operator">=</span>it1.first-it2.first;
                <span class="hljs-keyword">int</span> b<span class="hljs-operator">=</span>it1.second-it2.second;
                mp[{a,b}]<span class="hljs-operator">+</span><span class="hljs-operator">+</span>;
                ans<span class="hljs-operator">=</span>max(ans,mp[{a,b}]);
            }
        }
        <span class="hljs-keyword">return</span> ans;
</code></pre>]]></content:encoded>
            <author>coder-op@newsletter.paragraph.com (Coder OP)</author>
        </item>
        <item>
            <title><![CDATA[LeetCode #49: Group Anagrams]]></title>
            <link>https://paragraph.com/@coder-op/leetcode-49-group-anagrams</link>
            <guid>Vg3oxS9DSe9WettcntuR</guid>
            <pubDate>Sun, 06 Nov 2022 11:57:21 GMT</pubDate>
            <description><![CDATA[Use an unordered_map to group the strings by their sorted counterparts. Use the sorted string as the key and all anagram strings as the value.class Solution { public: vector&#x3C;vector&#x3C;string>> groupAnagrams(vector&#x3C;string>&#x26; strs) { unordered_map&#x3C;string, vector&#x3C;string>> mp; for (string s : strs) { string t = s; sort(t.begin(), t.end()); mp[t].push_back(s); } vector&#x3C;vector&#x3C;string>> anagrams; for (auto p : mp) { anagrams.push_back(p.second); } return anagrams;...]]></description>
            <content:encoded><![CDATA[<p>Use an <code>unordered_map</code> to group the strings by their sorted counterparts. Use the sorted string as the key and all anagram strings as the value.</p><pre data-type="codeBlock" text="class Solution {
public:
    vector&lt;vector&lt;string&gt;&gt; groupAnagrams(vector&lt;string&gt;&amp; strs) {
        unordered_map&lt;string, vector&lt;string&gt;&gt; mp;
        for (string s : strs) {
            string t = s; 
            sort(t.begin(), t.end());
            mp[t].push_back(s);
        }
        vector&lt;vector&lt;string&gt;&gt; anagrams;
        for (auto p : mp) { 
            anagrams.push_back(p.second);
        }
        return anagrams;
    }
};
"><code>class Solution {
<span class="hljs-keyword">public</span>:
    vector<span class="hljs-operator">&#x3C;</span>vector<span class="hljs-operator">&#x3C;</span><span class="hljs-keyword">string</span><span class="hljs-operator">></span><span class="hljs-operator">></span> groupAnagrams(vector<span class="hljs-operator">&#x3C;</span><span class="hljs-keyword">string</span><span class="hljs-operator">></span><span class="hljs-operator">&#x26;</span> strs) {
        unordered_map<span class="hljs-operator">&#x3C;</span><span class="hljs-keyword">string</span>, vector<span class="hljs-operator">&#x3C;</span><span class="hljs-keyword">string</span><span class="hljs-operator">></span><span class="hljs-operator">></span> mp;
        <span class="hljs-keyword">for</span> (<span class="hljs-keyword">string</span> s : strs) {
            <span class="hljs-keyword">string</span> t <span class="hljs-operator">=</span> s; 
            sort(t.begin(), t.end());
            mp[t].push_back(s);
        }
        vector<span class="hljs-operator">&#x3C;</span>vector<span class="hljs-operator">&#x3C;</span><span class="hljs-keyword">string</span><span class="hljs-operator">></span><span class="hljs-operator">></span> anagrams;
        <span class="hljs-keyword">for</span> (auto p : mp) { 
            anagrams.push_back(p.second);
        }
        <span class="hljs-keyword">return</span> anagrams;
    }
};
</code></pre><div data-type="subscribeButton" class="center-contents"><a class="email-subscribe-button" href="null">Subscribe</a></div>]]></content:encoded>
            <author>coder-op@newsletter.paragraph.com (Coder OP)</author>
        </item>
    </channel>
</rss>