<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>nathan naveen</title><link>https://nathannaveen.dev/</link><description>Recent content on nathan naveen</description><generator>Hugo</generator><language>en</language><copyright>&lt;a href="https://creativecommons.org/licenses/by-nc/4.0/" target="_blank" rel="noopener"&gt;CC BY-NC 4.0&lt;/a&gt;</copyright><lastBuildDate>Thu, 03 Mar 2022 15:29:34 -0600</lastBuildDate><atom:link href="https://nathannaveen.dev/index.xml" rel="self" type="application/rss+xml"/><item><title>Leetcode 2189</title><link>https://nathannaveen.dev/posts/leetcode-2189/</link><pubDate>Thu, 03 Mar 2022 15:29:34 -0600</pubDate><guid>https://nathannaveen.dev/posts/leetcode-2189/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/number-of-ways-to-build-house-of-cards/"&gt;2189. Number of Ways to Build House of Cards&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I recommend looking at the non-memoized solution instead of the solution with dp to understand the main idea because it is a lot cleaner.&lt;/p&gt;
&lt;p&gt;In the image below, we can see three different colored triangles and two lines on the side colored yellow. This is to depict how I can place my triangles. I find the number of triangles I can make, and then I use two of my cards to make the yellow lines.&lt;/p&gt;</description></item><item><title>Leetcode 2178</title><link>https://nathannaveen.dev/posts/leetcode-2178/</link><pubDate>Thu, 03 Mar 2022 15:29:26 -0600</pubDate><guid>https://nathannaveen.dev/posts/leetcode-2178/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/maximum-split-of-positive-even-integers/"&gt;2178. Maximum Split of Positive Even Integers&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="the-idea-of-this-solution"&gt;The Idea of this Solution:&lt;/h2&gt;
&lt;p&gt;We can subtract multiples of &lt;code&gt;2&lt;/code&gt; from the number until it is smaller than or equal to &lt;code&gt;0&lt;/code&gt;. Then if it is smaller we can remove the absolute value of the number from the result.&lt;/p&gt;
&lt;p&gt;For example:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;input: finalSum = 28&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;finalSum = 26, res = [2]&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;finalSum = 22, res = [2, 4]&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;finalSum = 16, res = [2, 4, 6]&lt;/code&gt;&lt;/p&gt;</description></item><item><title>Leetcode 2177</title><link>https://nathannaveen.dev/posts/leetcode-2177/</link><pubDate>Thu, 03 Mar 2022 15:29:20 -0600</pubDate><guid>https://nathannaveen.dev/posts/leetcode-2177/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/find-three-consecutive-integers-that-sum-to-a-given-number/"&gt;2177. Find Three Consecutive Integers That Sum to a Given Number&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This solution is small but not the easiest to understand.&lt;/p&gt;
&lt;p&gt;In Algebra 1, you might have learned how to sum up multiple consecutive numbers to make a result.&lt;/p&gt;
&lt;p&gt;I came up with this solution because when writing this, I am 15, and I learned about summing up consecutive numbers 2 to 3 years ago.&lt;/p&gt;
&lt;h2 id="the-explanation-of-the-solution"&gt;The Explanation of the Solution:&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;x + (x + 1) + (x + 2) = num&lt;/code&gt; → We know that we need 3 consecutive numbers, so if &lt;code&gt;x&lt;/code&gt; is the first number, &lt;code&gt;x + 1&lt;/code&gt; is the second number, and &lt;code&gt;x + 2&lt;/code&gt; is the third number.&lt;/p&gt;</description></item><item><title>Leetcode 1861</title><link>https://nathannaveen.dev/posts/leetcode-1861/</link><pubDate>Thu, 03 Mar 2022 15:29:12 -0600</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1861/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/rotating-the-box/"&gt;1861. Rotating the Box&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="the-base-idea-of-this-solution"&gt;The Base Idea of This Solution:&lt;/h2&gt;
&lt;p&gt;I would say that this solution is like a line sweep solution.&lt;/p&gt;
&lt;p&gt;This solution uses the fact that if an empty place separates two stones, they will be next to each other when the box is rotated. This is just like in the example input:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://i.imgur.com/HGdCvu3.png" alt=""&gt;&lt;/p&gt;
&lt;p&gt;So this solution just moves all the stones together until we hit the end of the box or an obstacle.&lt;/p&gt;</description></item><item><title>Leetcode 784</title><link>https://nathannaveen.dev/posts/leetcode-784/</link><pubDate>Thu, 03 Mar 2022 15:29:05 -0600</pubDate><guid>https://nathannaveen.dev/posts/leetcode-784/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/letter-case-permutation/"&gt;784. Letter Case Permutation&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is pretty simple, we can basically construct a tree.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://i.imgur.com/T1cx58n.gif" alt=""&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;letterCasePermutation&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;s&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;string&lt;/span&gt;) []&lt;span style="color:#66d9ef"&gt;string&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;helper&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;s&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;helper&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;s&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;string&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;a&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;string&lt;/span&gt;) []&lt;span style="color:#66d9ef"&gt;string&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; len(&lt;span style="color:#a6e22e"&gt;s&lt;/span&gt;) &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; []&lt;span style="color:#66d9ef"&gt;string&lt;/span&gt;{ &lt;span style="color:#a6e22e"&gt;a&lt;/span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; []&lt;span style="color:#66d9ef"&gt;string&lt;/span&gt;{}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;letter&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;s&lt;/span&gt;[&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;] &lt;span style="color:#75715e"&gt;// first letter&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;s&lt;/span&gt; = &lt;span style="color:#a6e22e"&gt;s&lt;/span&gt;[&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;:]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;letter&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;a&amp;#39;&lt;/span&gt; { &lt;span style="color:#75715e"&gt;// lowercase&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt; = append(&lt;span style="color:#a6e22e"&gt;res&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;helper&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;s&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;a&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; string(&lt;span style="color:#a6e22e"&gt;letter&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;32&lt;/span&gt;))&lt;span style="color:#f92672"&gt;...&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; } &lt;span style="color:#66d9ef"&gt;else&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;letter&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;A&amp;#39;&lt;/span&gt; { &lt;span style="color:#75715e"&gt;// uppercase&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt; = append(&lt;span style="color:#a6e22e"&gt;res&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;helper&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;s&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;a&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; string(&lt;span style="color:#a6e22e"&gt;letter&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;32&lt;/span&gt;))&lt;span style="color:#f92672"&gt;...&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt; = append(&lt;span style="color:#a6e22e"&gt;res&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;helper&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;s&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;a&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; string(&lt;span style="color:#a6e22e"&gt;letter&lt;/span&gt;))&lt;span style="color:#f92672"&gt;...&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Leetcode 417</title><link>https://nathannaveen.dev/posts/leetcode-417/</link><pubDate>Thu, 03 Mar 2022 15:28:59 -0600</pubDate><guid>https://nathannaveen.dev/posts/leetcode-417/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/pacific-atlantic-water-flow/"&gt;417. Pacific Atlantic Water Flow&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is to do DFS from the ocean to the land, not from the land to the ocean. Basically we can do DFS from the water to each point, and we only move from one point to another if the next point has a height greater than the current height.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;type&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;point&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;struct&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;pacificAtlantic&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;heights&lt;/span&gt; [][]&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;) [][]&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;n&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;m&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; len(&lt;span style="color:#a6e22e"&gt;heights&lt;/span&gt;), len(&lt;span style="color:#a6e22e"&gt;heights&lt;/span&gt;[&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;])
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;pacificVisited&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; make(&lt;span style="color:#66d9ef"&gt;map&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;point&lt;/span&gt;] &lt;span style="color:#66d9ef"&gt;bool&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;atlanticVisited&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; make(&lt;span style="color:#66d9ef"&gt;map&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;point&lt;/span&gt;] &lt;span style="color:#66d9ef"&gt;bool&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; [][]&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;{}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;pacific&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;atlantic&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;findNextToWater&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;n&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;m&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;add&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;func&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;prevHeight&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;pOrA&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;string&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;pOrA&lt;/span&gt; &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;pacific&amp;#34;&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &amp;lt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; &lt;span style="color:#f92672"&gt;||&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt; &amp;lt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; &lt;span style="color:#f92672"&gt;||&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;n&lt;/span&gt; &lt;span style="color:#f92672"&gt;||&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;m&lt;/span&gt; &lt;span style="color:#f92672"&gt;||&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;pacificVisited&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;point&lt;/span&gt;{&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;}] {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;heights&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;][&lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;] &lt;span style="color:#f92672"&gt;&amp;gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;prevHeight&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;pacific&lt;/span&gt; = append(&lt;span style="color:#a6e22e"&gt;pacific&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;point&lt;/span&gt;{&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;})
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; } &lt;span style="color:#66d9ef"&gt;else&lt;/span&gt; { &lt;span style="color:#75715e"&gt;// Otherwise it is &amp;#34;atlantic&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &amp;lt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; &lt;span style="color:#f92672"&gt;||&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt; &amp;lt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; &lt;span style="color:#f92672"&gt;||&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;n&lt;/span&gt; &lt;span style="color:#f92672"&gt;||&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;m&lt;/span&gt; &lt;span style="color:#f92672"&gt;||&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;atlanticVisited&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;point&lt;/span&gt;{&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;}] {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;heights&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;][&lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;] &lt;span style="color:#f92672"&gt;&amp;gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;prevHeight&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;atlantic&lt;/span&gt; = append(&lt;span style="color:#a6e22e"&gt;atlantic&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;point&lt;/span&gt;{&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;})
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; len(&lt;span style="color:#a6e22e"&gt;pacific&lt;/span&gt;) &lt;span style="color:#f92672"&gt;!=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;pacific&lt;/span&gt;[&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;pacific&lt;/span&gt; = &lt;span style="color:#a6e22e"&gt;pacific&lt;/span&gt;[&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;:]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;pacificVisited&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;] {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;continue&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;pacificVisited&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;] = &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;h&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;heights&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;][&lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;add&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;&lt;span style="color:#f92672"&gt;+&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;h&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;pacific&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;add&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;h&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;pacific&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;add&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;&lt;span style="color:#f92672"&gt;+&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;h&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;pacific&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;add&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;h&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;pacific&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; len(&lt;span style="color:#a6e22e"&gt;atlantic&lt;/span&gt;) &lt;span style="color:#f92672"&gt;!=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;atlantic&lt;/span&gt;[&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;atlantic&lt;/span&gt; = &lt;span style="color:#a6e22e"&gt;atlantic&lt;/span&gt;[&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;:]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;atlanticVisited&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;] {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;continue&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;pacificVisited&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;] {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt; = append(&lt;span style="color:#a6e22e"&gt;res&lt;/span&gt;, []&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;{&lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;})
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;atlanticVisited&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;] = &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;h&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;heights&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;][&lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;add&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;&lt;span style="color:#f92672"&gt;+&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;h&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;atlantic&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;add&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;h&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;atlantic&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;add&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;&lt;span style="color:#f92672"&gt;+&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;h&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;atlantic&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;add&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;h&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;atlantic&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;findNextToWater&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;n&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;m&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;) ([]&lt;span style="color:#a6e22e"&gt;point&lt;/span&gt;, []&lt;span style="color:#a6e22e"&gt;point&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;pacific&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; []&lt;span style="color:#a6e22e"&gt;point&lt;/span&gt;{}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;atlantic&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; []&lt;span style="color:#a6e22e"&gt;point&lt;/span&gt;{}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &amp;lt; &lt;span style="color:#a6e22e"&gt;n&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt; { &lt;span style="color:#75715e"&gt;// Find all values on the edge next to the ocean&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;pacific&lt;/span&gt; = append(&lt;span style="color:#a6e22e"&gt;pacific&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;point&lt;/span&gt;{&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;})
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;atlantic&lt;/span&gt; = append(&lt;span style="color:#a6e22e"&gt;atlantic&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;point&lt;/span&gt;{&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;m&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;})
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt; &amp;lt; &lt;span style="color:#a6e22e"&gt;m&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt; { &lt;span style="color:#75715e"&gt;// Find all values on the edge next to the ocean&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;pacific&lt;/span&gt; = append(&lt;span style="color:#a6e22e"&gt;pacific&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;point&lt;/span&gt;{&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;})
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;atlantic&lt;/span&gt; = append(&lt;span style="color:#a6e22e"&gt;atlantic&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;point&lt;/span&gt;{&lt;span style="color:#a6e22e"&gt;n&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;})
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;pacific&lt;/span&gt; = append(&lt;span style="color:#a6e22e"&gt;pacific&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;point&lt;/span&gt;{&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;m&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;})
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;atlantic&lt;/span&gt; = append(&lt;span style="color:#a6e22e"&gt;atlantic&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;point&lt;/span&gt;{&lt;span style="color:#a6e22e"&gt;n&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;})
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;pacific&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;atlantic&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Leetcode 42</title><link>https://nathannaveen.dev/posts/leetcode-42/</link><pubDate>Tue, 08 Feb 2022 20:06:54 -0600</pubDate><guid>https://nathannaveen.dev/posts/leetcode-42/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/trapping-rain-water/"&gt;42. Trapping Rain Water&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I got the idea of this solution from &lt;a href="https://leetcode.com/problems/trapping-rain-water/discuss/17395/A-different-O%28n%29-approach-easy-to-understand-and-simple-code"&gt;qddpx&amp;rsquo;s solution&lt;/a&gt;. I thought that it was an ingenious solution, so I decided to explain it.&lt;/p&gt;
&lt;p&gt;I think that this solution will be easier to understand if you first understand what the code is doing, so I decided to make a GIF about this.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://i.imgur.com/aMo2GxQ.gif" alt=""&gt;&lt;/p&gt;
&lt;p&gt;We loop through &lt;code&gt;height&lt;/code&gt; 3 different times:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The first time we loop through &lt;code&gt;height&lt;/code&gt;, we loop from &lt;code&gt;0&lt;/code&gt; to &lt;code&gt;len(height)&lt;/code&gt; and make each value in a new array called &lt;code&gt;lToR&lt;/code&gt; (left to right) the maximum value that we have reached so far in &lt;code&gt;height&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Then we can loop through &lt;code&gt;height&lt;/code&gt; backwards from &lt;code&gt;len(height) - 1&lt;/code&gt; to &lt;code&gt;0&lt;/code&gt;. We can do the same thing except with a different array called &lt;code&gt;rToL&lt;/code&gt; (right to left).&lt;/li&gt;
&lt;li&gt;Then, we can find the minimum of &lt;code&gt;lToR[i]&lt;/code&gt; and &lt;code&gt;rToL[i]&lt;/code&gt; to see the maximum level that our water will fill. Then we can subtract &lt;code&gt;height[i]&lt;/code&gt; from the minimum to remove any extra water that would be in the place of &lt;code&gt;height[i]&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You might want to take another look at the GIF. It might make some more sense since you know what is happening.&lt;/p&gt;</description></item><item><title>Leetcode 2160</title><link>https://nathannaveen.dev/posts/leetcode-2160/</link><pubDate>Mon, 07 Feb 2022 10:21:59 -0600</pubDate><guid>https://nathannaveen.dev/posts/leetcode-2160/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/minimum-sum-of-four-digit-number-after-splitting-digits/"&gt;2160. Minimum Sum of Four Digit Number After Splitting Digits&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="how-this-solution-works"&gt;How This Solution Works:&lt;/h2&gt;
&lt;p&gt;The idea of this solution is pretty simple and relies on the fact that the minimum number is made by making the biggest number the last digit and the smallest number the first. For example: If we use the digits &lt;code&gt;[4, 6, 1, 3, 0, 9]&lt;/code&gt;, the minimum number we can make is &lt;code&gt;013469&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;If we want the minimum sum, we just have to add the two minimum numbers together and get the minimum sum.&lt;/p&gt;</description></item><item><title>Leetcode 23</title><link>https://nathannaveen.dev/posts/leetcode-23/</link><pubDate>Mon, 07 Feb 2022 10:21:53 -0600</pubDate><guid>https://nathannaveen.dev/posts/leetcode-23/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/merge-k-sorted-lists/"&gt;23. Merge k Sorted Lists&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I think that the idea of this solution can be shown bellow:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://i.imgur.com/NEf5Pv9.gif" alt=""&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;mergeKLists&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;lists&lt;/span&gt; []&lt;span style="color:#f92672"&gt;*&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;ListNode&lt;/span&gt;) &lt;span style="color:#f92672"&gt;*&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;ListNode&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;amp;&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;ListNode&lt;/span&gt;{}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;cur&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;done&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; !&lt;span style="color:#a6e22e"&gt;done&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;done&lt;/span&gt; = &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;min&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;10000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;_&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;list&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;range&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;lists&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;list&lt;/span&gt; &lt;span style="color:#f92672"&gt;!=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;nil&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;list&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Val&lt;/span&gt; &amp;lt; &lt;span style="color:#a6e22e"&gt;min&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;min&lt;/span&gt; = &lt;span style="color:#a6e22e"&gt;list&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Val&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;done&lt;/span&gt; = &lt;span style="color:#66d9ef"&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;range&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;lists&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;lists&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;] &lt;span style="color:#f92672"&gt;!=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;nil&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;lists&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;].&lt;span style="color:#a6e22e"&gt;Val&lt;/span&gt; &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;min&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;cur&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Next&lt;/span&gt; = &lt;span style="color:#f92672"&gt;&amp;amp;&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;ListNode&lt;/span&gt;{ &lt;span style="color:#a6e22e"&gt;Val&lt;/span&gt;: &lt;span style="color:#a6e22e"&gt;min&lt;/span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;cur&lt;/span&gt; = &lt;span style="color:#a6e22e"&gt;cur&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Next&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;lists&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;] = &lt;span style="color:#a6e22e"&gt;lists&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;].&lt;span style="color:#a6e22e"&gt;Next&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Next&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Leetcode 490</title><link>https://nathannaveen.dev/posts/leetcode-490/</link><pubDate>Fri, 04 Feb 2022 12:12:59 -0600</pubDate><guid>https://nathannaveen.dev/posts/leetcode-490/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/the-maze/"&gt;490. The Maze&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is to use BFS to find every path. And then if we find a path that leads to the destination we can return &lt;code&gt;true&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;I made a gif that basicly gives an example of all paths from start. Note that this is the same example as the problem statment.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://i.imgur.com/Dq6Pei6.gif" alt=""&gt;&lt;/p&gt;
&lt;p&gt;While in the gif we just see the paths, in the code we have to make the path, meaning that we have to make a path one move at a time.&lt;/p&gt;</description></item><item><title>Leetcode 1102</title><link>https://nathannaveen.dev/posts/leetcode-1102/</link><pubDate>Fri, 04 Feb 2022 12:12:46 -0600</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1102/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/path-with-maximum-minimum-value/"&gt;1102. Path With Maximum Minimum Value&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This solution uses a max heap to keep track of all the paths, and which path we can go on to get the maximum minimum value.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://i.imgur.com/3Osyk1S.gif" alt=""&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;type&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;key&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;struct&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;p&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;pos&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;min&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;type&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;pos&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;struct&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;type&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;KeyHeap&lt;/span&gt; []&lt;span style="color:#a6e22e"&gt;key&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; (&lt;span style="color:#a6e22e"&gt;h&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;KeyHeap&lt;/span&gt;) &lt;span style="color:#a6e22e"&gt;Len&lt;/span&gt;() &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; { &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; len(&lt;span style="color:#a6e22e"&gt;h&lt;/span&gt;) }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; (&lt;span style="color:#a6e22e"&gt;h&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;KeyHeap&lt;/span&gt;) &lt;span style="color:#a6e22e"&gt;Less&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;bool&lt;/span&gt; { &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;h&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;].&lt;span style="color:#a6e22e"&gt;min&lt;/span&gt; &amp;gt; &lt;span style="color:#a6e22e"&gt;h&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;].&lt;span style="color:#a6e22e"&gt;min&lt;/span&gt; } &lt;span style="color:#75715e"&gt;// max of minimum&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; (&lt;span style="color:#a6e22e"&gt;h&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;KeyHeap&lt;/span&gt;) &lt;span style="color:#a6e22e"&gt;Swap&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;) { &lt;span style="color:#a6e22e"&gt;h&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;], &lt;span style="color:#a6e22e"&gt;h&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;] = &lt;span style="color:#a6e22e"&gt;h&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;], &lt;span style="color:#a6e22e"&gt;h&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;] }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; (&lt;span style="color:#a6e22e"&gt;h&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;KeyHeap&lt;/span&gt;) &lt;span style="color:#a6e22e"&gt;Push&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;x&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;interface&lt;/span&gt;{}) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;h&lt;/span&gt; = append(&lt;span style="color:#f92672"&gt;*&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;h&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;x&lt;/span&gt;.(&lt;span style="color:#a6e22e"&gt;key&lt;/span&gt;))
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; (&lt;span style="color:#a6e22e"&gt;h&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;KeyHeap&lt;/span&gt;) &lt;span style="color:#a6e22e"&gt;Pop&lt;/span&gt;() &lt;span style="color:#66d9ef"&gt;interface&lt;/span&gt;{} {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#a6e22e"&gt;old&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;h&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#a6e22e"&gt;n&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; len(&lt;span style="color:#a6e22e"&gt;old&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#a6e22e"&gt;x&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;old&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;n&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#f92672"&gt;*&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;h&lt;/span&gt; = &lt;span style="color:#a6e22e"&gt;old&lt;/span&gt;[&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; : &lt;span style="color:#a6e22e"&gt;n&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;x&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;maximumMinimumPath&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;grid&lt;/span&gt; [][]&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;h&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;amp;&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;KeyHeap&lt;/span&gt;{ &lt;span style="color:#a6e22e"&gt;key&lt;/span&gt;{ &lt;span style="color:#a6e22e"&gt;pos&lt;/span&gt;{ &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; }, &lt;span style="color:#a6e22e"&gt;grid&lt;/span&gt;[&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;][&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;] } }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;heap&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Init&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;h&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;n&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; len(&lt;span style="color:#a6e22e"&gt;grid&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;m&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; len(&lt;span style="color:#a6e22e"&gt;grid&lt;/span&gt;[&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;])
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;visited&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; make(&lt;span style="color:#66d9ef"&gt;map&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;pos&lt;/span&gt;] &lt;span style="color:#66d9ef"&gt;bool&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;helper&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;func&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;min&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;p&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;pos&lt;/span&gt;{ &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &amp;lt; &lt;span style="color:#a6e22e"&gt;n&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt; &amp;lt; &lt;span style="color:#a6e22e"&gt;m&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; !&lt;span style="color:#a6e22e"&gt;visited&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;p&lt;/span&gt;] {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;grid&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;][&lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;] &amp;lt; &lt;span style="color:#a6e22e"&gt;min&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;min&lt;/span&gt; = &lt;span style="color:#a6e22e"&gt;grid&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;][&lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;heap&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Push&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;h&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;key&lt;/span&gt;{ &lt;span style="color:#a6e22e"&gt;p&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;min&lt;/span&gt; })
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;visited&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;p&lt;/span&gt;] = &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;h&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Len&lt;/span&gt;() &lt;span style="color:#f92672"&gt;!=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;heap&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Pop&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;h&lt;/span&gt;).(&lt;span style="color:#a6e22e"&gt;key&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;p&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;n&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;p&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;j&lt;/span&gt; &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;m&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;min&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;helper&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;p&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;p&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;min&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;helper&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;p&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;p&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;min&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;helper&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;p&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;p&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;j&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;min&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;helper&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;p&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;p&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;j&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;min&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; &lt;span style="color:#75715e"&gt;// we should never get here&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Leetcode 2155</title><link>https://nathannaveen.dev/posts/leetcode-2155/</link><pubDate>Fri, 04 Feb 2022 12:12:40 -0600</pubDate><guid>https://nathannaveen.dev/posts/leetcode-2155/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/all-divisions-with-the-highest-score-of-a-binary-array/"&gt;2155. All Divisions With the Highest Score of a Binary Array&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is to loop through &lt;code&gt;nums&lt;/code&gt; and add one to a zero count if we have a zero, and subtract one from a one counter if it is a one. This can be shown using an illustration:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://i.imgur.com/ymBAmcM.gif" alt=""&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;maxScoreIndices&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;nums&lt;/span&gt; []&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;) []&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;numZeros&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;numOnes&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;_&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;n&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;range&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;nums&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;numOnes&lt;/span&gt; &lt;span style="color:#f92672"&gt;+=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;n&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;max&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;numOnes&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; []&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;{&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;n&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;range&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;nums&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;n&lt;/span&gt; &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;numZeros&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; } &lt;span style="color:#66d9ef"&gt;else&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;numOnes&lt;/span&gt;&lt;span style="color:#f92672"&gt;--&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;numZeros&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;numOnes&lt;/span&gt; &amp;gt; &lt;span style="color:#a6e22e"&gt;max&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;max&lt;/span&gt; = &lt;span style="color:#a6e22e"&gt;numZeros&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;numOnes&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt; = []&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;{ &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; } &lt;span style="color:#66d9ef"&gt;else&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;numZeros&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;numOnes&lt;/span&gt; &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;max&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt; = append(&lt;span style="color:#a6e22e"&gt;res&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;p&gt;We can put:&lt;/p&gt;</description></item><item><title>Leetcode 2154</title><link>https://nathannaveen.dev/posts/leetcode-2154/</link><pubDate>Fri, 04 Feb 2022 12:12:34 -0600</pubDate><guid>https://nathannaveen.dev/posts/leetcode-2154/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/keep-multiplying-found-values-by-two/"&gt;2154. Keep Multiplying Found Values by Two&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of both of these solutions is to add &lt;code&gt;nums&lt;/code&gt; elements to a map, and then just keep checking whether &lt;code&gt;original *= 2&lt;/code&gt; is in the map.&lt;/p&gt;
&lt;p&gt;Instead of &lt;code&gt;original *= 2&lt;/code&gt; I am doing &lt;code&gt;original &amp;lt;&amp;lt;= 1&lt;/code&gt; for better time.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;In the first solution I am only adding elements that are multiples of &lt;code&gt;original&lt;/code&gt; to the map.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;findFinalValue&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;nums&lt;/span&gt; []&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;original&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;m&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; make(&lt;span style="color:#66d9ef"&gt;map&lt;/span&gt;[&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;] &lt;span style="color:#66d9ef"&gt;bool&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;_&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;n&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;range&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;nums&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;n&lt;/span&gt; &lt;span style="color:#f92672"&gt;%&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;original&lt;/span&gt; &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;m&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;n&lt;/span&gt;] = &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;m&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;original&lt;/span&gt;] {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;original&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;&amp;lt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;original&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;p&gt;In the second solution I am adding all elements from &lt;code&gt;nums&lt;/code&gt; to the map. Note that this solution has a little worse average space complexity. In the worst case they will both have the same complexity.&lt;/p&gt;</description></item><item><title>Leetcode 149</title><link>https://nathannaveen.dev/posts/leetcode-149/</link><pubDate>Fri, 04 Feb 2022 12:12:27 -0600</pubDate><guid>https://nathannaveen.dev/posts/leetcode-149/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/max-points-on-a-line/"&gt;149. Max Points on a Line&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is that we start off with a point and then use all the other points to make a line from the start point to one of the other points. Then we can find the slope of the line. Then we can find which slope has the highest number of points.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;maxPoints&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;points&lt;/span&gt; [][]&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;max&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &amp;lt; len(&lt;span style="color:#a6e22e"&gt;points&lt;/span&gt;); &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;m&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; make(&lt;span style="color:#66d9ef"&gt;map&lt;/span&gt;[&lt;span style="color:#66d9ef"&gt;float64&lt;/span&gt;] &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;) &lt;span style="color:#75715e"&gt;// slope : number of points on the slope&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt; &amp;lt; len(&lt;span style="color:#a6e22e"&gt;points&lt;/span&gt;); &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;x1&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;x2&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;y1&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;y2&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;points&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;][&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;], &lt;span style="color:#a6e22e"&gt;points&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;][&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;], &lt;span style="color:#a6e22e"&gt;points&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;][&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;], &lt;span style="color:#a6e22e"&gt;points&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;][&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;slope&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; float64(&lt;span style="color:#a6e22e"&gt;y2&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;y1&lt;/span&gt;) &lt;span style="color:#f92672"&gt;/&lt;/span&gt; float64(&lt;span style="color:#a6e22e"&gt;x2&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;x1&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;m&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;slope&lt;/span&gt;]&lt;span style="color:#f92672"&gt;++&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;_&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;b&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;range&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;m&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;newB&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; (&lt;span style="color:#a6e22e"&gt;b&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;newB&lt;/span&gt; &amp;gt; &lt;span style="color:#a6e22e"&gt;max&lt;/span&gt; { &lt;span style="color:#a6e22e"&gt;max&lt;/span&gt; = &lt;span style="color:#a6e22e"&gt;newB&lt;/span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; len(&lt;span style="color:#a6e22e"&gt;points&lt;/span&gt;) &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; { &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;max&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Leetcode 2144</title><link>https://nathannaveen.dev/posts/leetcode-2144/</link><pubDate>Fri, 04 Feb 2022 12:12:21 -0600</pubDate><guid>https://nathannaveen.dev/posts/leetcode-2144/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/minimum-cost-of-buying-candies-with-discount/"&gt;2144. Minimum Cost of Buying Candies With Discount&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;We have to get the items with a maximum discount to get the minimum cost we have to pay.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;For example if we have:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;input: cost = [3, 7, 1, 5, 9, 11, 15]&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;We know that the maximum discount we can get is &lt;code&gt;9&lt;/code&gt; because we can buy two candies with costs &lt;code&gt;11&lt;/code&gt; and &lt;code&gt;15&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Now let us sort &lt;code&gt;cost&lt;/code&gt; in non-increasing order. Using this, we can get the maximum discounts we can get throughout:&lt;/p&gt;</description></item><item><title>Leetcode 520</title><link>https://nathannaveen.dev/posts/leetcode-520/</link><pubDate>Fri, 04 Feb 2022 12:12:15 -0600</pubDate><guid>https://nathannaveen.dev/posts/leetcode-520/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/detect-capital/"&gt;520. Detect Capital&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="solution-1"&gt;Solution 1:&lt;/h3&gt;
&lt;p&gt;This solution is pretty simple, we can make three strings then compare them to &lt;code&gt;word&lt;/code&gt;, and see if any of them match, if they do we can return &lt;code&gt;true&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The three strings that we can make are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;allCap&lt;/code&gt;, this is for the whole word to be upper case (ie. &lt;code&gt;&amp;quot;LEETCODE&amp;quot;&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;allLower&lt;/code&gt;, this is for the whole word to be lower case (ie. &lt;code&gt;&amp;quot;leetcode&amp;quot;&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;firstCap&lt;/code&gt;, this is for the whole word to be lower case except for the first letter which is uppercase (ie. &lt;code&gt;&amp;quot;Leetcode&amp;quot;&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;detectCapitalUse&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;word&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;string&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;bool&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;allCap&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;strings&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;ToUpper&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;word&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;allLower&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;strings&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;ToLower&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;word&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;firstCap&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;strings&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;ToUpper&lt;/span&gt;(string(&lt;span style="color:#a6e22e"&gt;word&lt;/span&gt;[&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;])) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;strings&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;ToLower&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;word&lt;/span&gt;)[&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;:]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;word&lt;/span&gt; &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;allCap&lt;/span&gt; &lt;span style="color:#f92672"&gt;||&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;word&lt;/span&gt; &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;allLower&lt;/span&gt; &lt;span style="color:#f92672"&gt;||&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;word&lt;/span&gt; &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;firstCap&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="solution-2"&gt;Solution 2:&lt;/h3&gt;
&lt;p&gt;The second solution uses the fact that in &lt;code&gt;&amp;quot;leetcode&amp;quot;&lt;/code&gt; and &lt;code&gt;&amp;quot;Leetcode&amp;quot;&lt;/code&gt; there is a common &lt;code&gt;&amp;quot;eetcode&amp;quot;&lt;/code&gt;. This means that whatever the first letter is, if the remaining part of the word is lowercase we know that all the letters in &lt;code&gt;word&lt;/code&gt; are lowercase, or the first letter is the only letter that is upper case.&lt;/p&gt;</description></item><item><title>Leetcode 2128</title><link>https://nathannaveen.dev/posts/leetcode-2128/</link><pubDate>Wed, 19 Jan 2022 13:01:56 -0600</pubDate><guid>https://nathannaveen.dev/posts/leetcode-2128/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/remove-all-ones-with-row-and-column-flips/"&gt;2128. Remove All Ones With Row and Column Flips&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution can be shown using the following image:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://i.imgur.com/eP4CU9w.jpg" alt=""&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;As we can see if a row is equal to the inverse of the first row we know that we can flip it to be equal to the first row. And if the row is equal to the first row we don&amp;rsquo;t need to flip it at all.&lt;/p&gt;</description></item><item><title>Leetcode 1926</title><link>https://nathannaveen.dev/posts/leetcode-1926/</link><pubDate>Wed, 19 Jan 2022 13:01:49 -0600</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1926/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/nearest-exit-from-entrance-in-maze/"&gt;1926. Nearest Exit from Entrance in Maze&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I decided to try a solution that is similar to Dijkstra&amp;rsquo;s. Even though the positions are not weighted, we can make the distance the weight, so the nodes farther away from the start have a higher weight than the closer ones. All in all, we have to find the node on the edge with the smallest weight.&lt;/p&gt;
&lt;p&gt;This can be shown using the following image:&lt;/p&gt;</description></item><item><title>Leetcode 2124</title><link>https://nathannaveen.dev/posts/leetcode-2124/</link><pubDate>Wed, 19 Jan 2022 13:01:42 -0600</pubDate><guid>https://nathannaveen.dev/posts/leetcode-2124/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/check-if-all-as-appears-before-all-bs/"&gt;2124. Check if All A&amp;rsquo;s Appears Before All B&amp;rsquo;s&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of my solution is pretty simple. If the sorted version of &lt;code&gt;s&lt;/code&gt; equals the non sorted version of &lt;code&gt;s&lt;/code&gt; we know that every &lt;code&gt;&amp;quot;a&amp;quot;&lt;/code&gt; comes before every &lt;code&gt;&amp;quot;b&amp;quot;&lt;/code&gt;. Some examples could be:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;s = &amp;quot;abab&amp;quot;&lt;/code&gt;, &lt;code&gt;sortedS = &amp;quot;aabb&amp;quot;&lt;/code&gt;, &lt;code&gt;&amp;quot;abab&amp;quot; != &amp;quot;aabb&amp;quot;&lt;/code&gt; so return &lt;code&gt;false&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;s = &amp;quot;aabbb&amp;quot;&lt;/code&gt;, &lt;code&gt;sortedS = &amp;quot;aabbb&amp;quot;&lt;/code&gt;, &lt;code&gt;&amp;quot;aabbb&amp;quot; == &amp;quot;aabbb&amp;quot;&lt;/code&gt; so return &lt;code&gt;true&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;s = &amp;quot;bba&amp;quot;&lt;/code&gt;, &lt;code&gt;sortedS = &amp;quot;abb&amp;quot;&lt;/code&gt;, &lt;code&gt;&amp;quot;bba&amp;quot; != &amp;quot;abb&amp;quot;&lt;/code&gt; so return &lt;code&gt;false&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;checkString&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;s&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;string&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;bool&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;splitS&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;strings&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Split&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;s&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;sort&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Strings&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;splitS&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;s&lt;/span&gt; &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;strings&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Join&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;splitS&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Leetcode 2095</title><link>https://nathannaveen.dev/posts/leetcode-2095/</link><pubDate>Wed, 19 Jan 2022 13:01:36 -0600</pubDate><guid>https://nathannaveen.dev/posts/leetcode-2095/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/delete-the-middle-node-of-a-linked-list/"&gt;2095. Delete the Middle Node of a Linked List&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is to use three-pointers, like in the following example:&lt;/p&gt;
&lt;p&gt;Remember that the &lt;code&gt;hare&lt;/code&gt; will always go up two values, while &lt;code&gt;prev&lt;/code&gt; and &lt;code&gt;turtle&lt;/code&gt; will only go up one.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://i.imgur.com/GCh5KZK.png" alt=""&gt;&lt;/p&gt;
&lt;p&gt;The hare has reached the end, so we can stop moving the &lt;code&gt;hare&lt;/code&gt;, &lt;code&gt;turtle&lt;/code&gt;, and &lt;code&gt;prev&lt;/code&gt;. Now, we have to remove the turtles position by doing &lt;code&gt;prev.Next = prev.Next.Next&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Leetcode 2119</title><link>https://nathannaveen.dev/posts/leetcode-2119/</link><pubDate>Wed, 19 Jan 2022 13:01:31 -0600</pubDate><guid>https://nathannaveen.dev/posts/leetcode-2119/</guid><description>&lt;p&gt;The idea of this solution is that any number that has a &lt;code&gt;0&lt;/code&gt; at the end will result in a different number after reversed twice.&lt;/p&gt;
&lt;p&gt;This is shown using the numbers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;3210&lt;/code&gt; reversed equals &lt;code&gt;123&lt;/code&gt; which reversed again equals &lt;code&gt;321&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;31000&lt;/code&gt; reversed equals &lt;code&gt;13&lt;/code&gt; which reversed again equals &lt;code&gt;31&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The only exception for this rule in the number &lt;code&gt;0&lt;/code&gt;. because &lt;code&gt;0&lt;/code&gt; zero reversed any amount of times equals &lt;code&gt;0&lt;/code&gt;.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;isSameAfterReversals&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;num&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;bool&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;num&lt;/span&gt; &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; &lt;span style="color:#f92672"&gt;||&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;num&lt;/span&gt; &lt;span style="color:#f92672"&gt;%&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;10&lt;/span&gt; &lt;span style="color:#f92672"&gt;!=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Leetcode 2089</title><link>https://nathannaveen.dev/posts/leetcode-2089/</link><pubDate>Wed, 19 Jan 2022 13:01:15 -0600</pubDate><guid>https://nathannaveen.dev/posts/leetcode-2089/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/find-target-indices-after-sorting-array/"&gt;2089. Find Target Indices After Sorting Array&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Let us take an example of &lt;code&gt;nums = [1, 2, 5, 2, 3, 1, 2]&lt;/code&gt; and &lt;code&gt;target = 2&lt;/code&gt;. If we sort &lt;code&gt;nums&lt;/code&gt; we get &lt;code&gt;nums = [1, 1, 2, 2, 2, 3, 5]&lt;/code&gt;. If we know, there are three twos in &lt;code&gt;nums&lt;/code&gt; and two items with values smaller than theirs. We know that the result will be &lt;code&gt;[2, 3, 4]&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;So basically, this solution makes an array of the number of values that equal &lt;code&gt;target&lt;/code&gt; where each value will be one more than the previous value. After that, the code then adds the number of values smaller than &lt;code&gt;target&lt;/code&gt; them.&lt;/p&gt;</description></item><item><title>Leetcode 2083</title><link>https://nathannaveen.dev/posts/leetcode-2083/</link><pubDate>Wed, 19 Jan 2022 13:01:07 -0600</pubDate><guid>https://nathannaveen.dev/posts/leetcode-2083/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/substrings-that-begin-and-end-with-the-same-letter/"&gt;2083. Substrings That Begin and End With the Same Letter&lt;/a&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;numberOfSubstrings&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;s&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;string&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;int64&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;m&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; make(&lt;span style="color:#66d9ef"&gt;map&lt;/span&gt;[&lt;span style="color:#66d9ef"&gt;rune&lt;/span&gt;] &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; int64(&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;_&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;letter&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;range&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;s&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;m&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;letter&lt;/span&gt;]&lt;span style="color:#f92672"&gt;++&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt; &lt;span style="color:#f92672"&gt;+=&lt;/span&gt; int64(&lt;span style="color:#a6e22e"&gt;m&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;letter&lt;/span&gt;])
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The second solution is the fun solution. We can find the number of substrings, the beginning, and the end in the same letter. To show how this is done, we can take an example of &lt;code&gt;&amp;quot;aaaaaa&amp;quot;&lt;/code&gt;:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://i.imgur.com/H5jFMVU.jpg" alt=""&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Note that in this image, I am only pointing to the start and end letter of the substring.&lt;/li&gt;
&lt;li&gt;As you can see in the image, we can get a certain number of substrings in a string of 6 letters:
&lt;ul&gt;
&lt;li&gt;We can get &lt;code&gt;1&lt;/code&gt; substring of length &lt;code&gt;6&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;We can get &lt;code&gt;2&lt;/code&gt; substrings of length &lt;code&gt;5&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;We can get &lt;code&gt;3&lt;/code&gt; substrings of length &lt;code&gt;4&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;We can get &lt;code&gt;4&lt;/code&gt; substrings of length &lt;code&gt;3&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;We can get &lt;code&gt;5&lt;/code&gt; substrings of length &lt;code&gt;2&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;We can get &lt;code&gt;6&lt;/code&gt; substrings of length &lt;code&gt;1&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Now if we add all the substrings together we get &lt;code&gt;1 + 2 + 3 + 4 + 5 + 6 = 21&lt;/code&gt;. This is equal to the sum of the first &lt;code&gt;6&lt;/code&gt; numbers. The equation for the sum of the first &lt;code&gt;n&lt;/code&gt; numbers is &lt;code&gt;(n * (n + 1)) / 2&lt;/code&gt;, so if we make &lt;code&gt;n = 6&lt;/code&gt; then &lt;code&gt;(6 * (6 + 1)) / 2 = (6 * 7) / 2 = 42 / 2 = 21&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;numberOfSubstrings&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;s&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;string&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;int64&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;m&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; make(&lt;span style="color:#66d9ef"&gt;map&lt;/span&gt;[&lt;span style="color:#66d9ef"&gt;rune&lt;/span&gt;] &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; int64(&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;_&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;letter&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;range&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;s&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;m&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;letter&lt;/span&gt;]&lt;span style="color:#f92672"&gt;++&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;_&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;val&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;range&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;m&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt; &lt;span style="color:#f92672"&gt;+=&lt;/span&gt; int64((&lt;span style="color:#a6e22e"&gt;val&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt; (&lt;span style="color:#a6e22e"&gt;val&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;)) &lt;span style="color:#f92672"&gt;/&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Leetcode 778</title><link>https://nathannaveen.dev/posts/leetcode-778/</link><pubDate>Wed, 19 Jan 2022 13:00:51 -0600</pubDate><guid>https://nathannaveen.dev/posts/leetcode-778/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/swim-in-rising-water/"&gt;778. Swim in Rising Water&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Time complexity = O(n&lt;!-- raw HTML omitted --&gt;2&lt;!-- raw HTML omitted --&gt;log(n))&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;n&lt;!-- raw HTML omitted --&gt;2&lt;!-- raw HTML omitted --&gt; is for looping through all the elements in &lt;code&gt;grid&lt;/code&gt; where &lt;code&gt;n == len(grid)&lt;/code&gt;. Note that it is n&lt;!-- raw HTML omitted --&gt;2&lt;!-- raw HTML omitted --&gt; instead of &lt;code&gt;n * m&lt;/code&gt; because &lt;code&gt;len(grid) == len(grid[0])&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;log(n) is for the priority queue. Note that this is a computer science log(n) when log(n) == log&lt;!-- raw HTML omitted --&gt;2&lt;!-- raw HTML omitted --&gt;(n) instead of math where log(n) == log&lt;!-- raw HTML omitted --&gt;10&lt;!-- raw HTML omitted --&gt;(n).&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;type&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;key&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;struct&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;max&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;r&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;c&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;type&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;RowAndCol&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;struct&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;r&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;c&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;type&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;KeyHeap&lt;/span&gt; []&lt;span style="color:#a6e22e"&gt;key&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; (&lt;span style="color:#a6e22e"&gt;h&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;KeyHeap&lt;/span&gt;) &lt;span style="color:#a6e22e"&gt;Len&lt;/span&gt;() &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; { &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; len(&lt;span style="color:#a6e22e"&gt;h&lt;/span&gt;) }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; (&lt;span style="color:#a6e22e"&gt;h&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;KeyHeap&lt;/span&gt;) &lt;span style="color:#a6e22e"&gt;Less&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;bool&lt;/span&gt; { &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;h&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;].&lt;span style="color:#a6e22e"&gt;max&lt;/span&gt; &amp;lt; &lt;span style="color:#a6e22e"&gt;h&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;].&lt;span style="color:#a6e22e"&gt;max&lt;/span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; (&lt;span style="color:#a6e22e"&gt;h&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;KeyHeap&lt;/span&gt;) &lt;span style="color:#a6e22e"&gt;Swap&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;) { &lt;span style="color:#a6e22e"&gt;h&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;], &lt;span style="color:#a6e22e"&gt;h&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;] = &lt;span style="color:#a6e22e"&gt;h&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;], &lt;span style="color:#a6e22e"&gt;h&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;] }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; (&lt;span style="color:#a6e22e"&gt;h&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;KeyHeap&lt;/span&gt;) &lt;span style="color:#a6e22e"&gt;Push&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;x&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;interface&lt;/span&gt;{}) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#f92672"&gt;*&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;h&lt;/span&gt; = append(&lt;span style="color:#f92672"&gt;*&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;h&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;x&lt;/span&gt;.(&lt;span style="color:#a6e22e"&gt;key&lt;/span&gt;))
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; (&lt;span style="color:#a6e22e"&gt;h&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;KeyHeap&lt;/span&gt;) &lt;span style="color:#a6e22e"&gt;Pop&lt;/span&gt;() &lt;span style="color:#66d9ef"&gt;interface&lt;/span&gt;{} {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#a6e22e"&gt;old&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;h&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#a6e22e"&gt;n&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; len(&lt;span style="color:#a6e22e"&gt;old&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#a6e22e"&gt;x&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;old&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;n&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#f92672"&gt;*&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;h&lt;/span&gt; = &lt;span style="color:#a6e22e"&gt;old&lt;/span&gt;[&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; : &lt;span style="color:#a6e22e"&gt;n&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;x&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;swimInWater&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;grid&lt;/span&gt; [][]&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;h&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;amp;&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;KeyHeap&lt;/span&gt;{}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#a6e22e"&gt;heap&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Init&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;h&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;heap&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Push&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;h&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;key&lt;/span&gt;{ &lt;span style="color:#a6e22e"&gt;grid&lt;/span&gt;[&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;][&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;], &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; })
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;visited&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; make(&lt;span style="color:#66d9ef"&gt;map&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;RowAndCol&lt;/span&gt;] &lt;span style="color:#66d9ef"&gt;bool&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;n&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; len(&lt;span style="color:#a6e22e"&gt;grid&lt;/span&gt;) &lt;span style="color:#75715e"&gt;// The grid is a square, so len(grid) == len(grid[0])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;addToHeap&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;func&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;r&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;c&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;max&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;r&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;r&lt;/span&gt; &amp;lt; &lt;span style="color:#a6e22e"&gt;n&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;c&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;c&lt;/span&gt; &amp;lt; &lt;span style="color:#a6e22e"&gt;n&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; !&lt;span style="color:#a6e22e"&gt;visited&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;RowAndCol&lt;/span&gt;{ &lt;span style="color:#a6e22e"&gt;r&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;c&lt;/span&gt; }] {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;heap&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Push&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;h&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;key&lt;/span&gt;{ int(&lt;span style="color:#a6e22e"&gt;math&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Max&lt;/span&gt;(float64(&lt;span style="color:#a6e22e"&gt;grid&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;r&lt;/span&gt;][&lt;span style="color:#a6e22e"&gt;c&lt;/span&gt;]), float64(&lt;span style="color:#a6e22e"&gt;max&lt;/span&gt;))), &lt;span style="color:#a6e22e"&gt;r&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;c&lt;/span&gt; })
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;h&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Len&lt;/span&gt;() &lt;span style="color:#f92672"&gt;!=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;heap&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Pop&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;h&lt;/span&gt;).(&lt;span style="color:#a6e22e"&gt;key&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;r&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;c&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;r&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;c&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;r&lt;/span&gt; &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;n&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;c&lt;/span&gt; &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;n&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; { &lt;span style="color:#75715e"&gt;// if the bottom right most square&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;max&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;visited&lt;/span&gt;[ &lt;span style="color:#a6e22e"&gt;RowAndCol&lt;/span&gt;{ &lt;span style="color:#a6e22e"&gt;r&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;c&lt;/span&gt; } ] = &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;addToHeap&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;r&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;c&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;max&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;addToHeap&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;r&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;c&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;max&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;addToHeap&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;r&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;c&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;max&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;addToHeap&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;r&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;c&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;max&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Leetcode 2068</title><link>https://nathannaveen.dev/posts/leetcode-2068/</link><pubDate>Wed, 19 Jan 2022 13:00:44 -0600</pubDate><guid>https://nathannaveen.dev/posts/leetcode-2068/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/check-whether-two-strings-are-almost-equivalent/"&gt;2068. Check Whether Two Strings are Almost Equivalent&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The time complexity of the first solution is &lt;code&gt;O(2n + 26)&lt;/code&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The &lt;code&gt;2n&lt;/code&gt; is for looping through both &lt;code&gt;word1&lt;/code&gt; and &lt;code&gt;word2&lt;/code&gt;. They both are the same length, so we get &lt;code&gt;2n&lt;/code&gt; instead of &lt;code&gt;n * m&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;26&lt;/code&gt; is for looping through &lt;code&gt;len(letters)&lt;/code&gt;, because there are &lt;code&gt;26&lt;/code&gt; letters in the alphabet.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;checkAlmostEquivalent&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;word1&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;string&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;word2&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;string&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;bool&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;letters&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; make([]&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;26&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &amp;lt; len(&lt;span style="color:#a6e22e"&gt;word1&lt;/span&gt;); &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;letters&lt;/span&gt;[int(&lt;span style="color:#a6e22e"&gt;word1&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;] &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;a&amp;#39;&lt;/span&gt;)]&lt;span style="color:#f92672"&gt;++&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;letters&lt;/span&gt;[int(&lt;span style="color:#a6e22e"&gt;word2&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;] &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;a&amp;#39;&lt;/span&gt;)]&lt;span style="color:#f92672"&gt;--&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;_&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;a&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;range&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;letters&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;a&lt;/span&gt; &amp;lt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;3&lt;/span&gt; &lt;span style="color:#f92672"&gt;||&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;a&lt;/span&gt; &amp;gt; &lt;span style="color:#ae81ff"&gt;3&lt;/span&gt; { &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;false&lt;/span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The worst time complexity of the following solution is &lt;code&gt;O(2n + 26)&lt;/code&gt;, but since we are using a map instead of an array the time complexity can range from &lt;code&gt;O(2n + 1)&lt;/code&gt; to &lt;code&gt;O(2n + 26)&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Leetcode 2075</title><link>https://nathannaveen.dev/posts/leetcode-2075/</link><pubDate>Wed, 19 Jan 2022 13:00:38 -0600</pubDate><guid>https://nathannaveen.dev/posts/leetcode-2075/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/decode-the-slanted-ciphertext/"&gt;2075. Decode the Slanted Ciphertext&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The main idea of this solution is to find the number of columns. The solution comes together pretty quickly after that.&lt;/p&gt;
&lt;p&gt;To explain my thinking to how I found the number of columns we have to take a matrix. We should know the number rows and columns in that matrix. For example:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;[a][d][g][ ]&lt;/code&gt;
&lt;code&gt;[ ][b][e][h]&lt;/code&gt;
&lt;code&gt;[ ][ ][c][f]&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;We have a matrix with 3 rows and 4 columns, and 12 items. &lt;code&gt;3 * 4 = 12&lt;/code&gt;, so if we are given a matrix of size 12 and 3 rows, we can do &lt;code&gt;12 / 3 = 4&lt;/code&gt; to get the number of columns. Since we know that the number of values in the matrix can be shown using &lt;code&gt;len(encodedText)&lt;/code&gt; and the problem gives us the number of rows, we can do &lt;code&gt;len(encodedText) / rows = cols&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Leetcode 353</title><link>https://nathannaveen.dev/posts/leetcode-353/</link><pubDate>Wed, 19 Jan 2022 13:00:19 -0600</pubDate><guid>https://nathannaveen.dev/posts/leetcode-353/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/design-snake-game/"&gt;353. Design Snake Game&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;For &lt;code&gt;SnakeGame&lt;/code&gt; I have a lot of pramaters, and it might be hard to understand this solution is you don&amp;rsquo;t understand them. So:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;counter int&lt;/code&gt; → The amount of food that the snake has eaten.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;height int&lt;/code&gt; → The height of the matrix.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;width int&lt;/code&gt; → The width of the matrix.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;food [][]int&lt;/code&gt; → The positions of the food.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;foodCounter int&lt;/code&gt; → What food we are on (i.e. &lt;code&gt;food[foodCounter] = [1, 2]&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;m map[point] bool&lt;/code&gt; → What positions the snake is on. We have this so we can check whether the snake is occuping a space where its body should be in &lt;code&gt;O(1)&lt;/code&gt; time.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;previous []point&lt;/code&gt; → This is all the positions of the snake.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;type&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;SnakeGame&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;struct&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;counter&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;height&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;width&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;food&lt;/span&gt; [][]&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;foodCounter&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;m&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;map&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;point&lt;/span&gt;] &lt;span style="color:#66d9ef"&gt;bool&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;previous&lt;/span&gt; []&lt;span style="color:#a6e22e"&gt;point&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;type&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;point&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;struct&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;Constructor&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;width&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;height&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;food&lt;/span&gt; [][]&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;) &lt;span style="color:#a6e22e"&gt;SnakeGame&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;m&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; make(&lt;span style="color:#66d9ef"&gt;map&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;point&lt;/span&gt;] &lt;span style="color:#66d9ef"&gt;bool&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;m&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;point&lt;/span&gt;{ &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; }] = &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;SnakeGame&lt;/span&gt;{ &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;height&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;width&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;food&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;m&lt;/span&gt;, []&lt;span style="color:#a6e22e"&gt;point&lt;/span&gt;{ &lt;span style="color:#a6e22e"&gt;point&lt;/span&gt;{&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;} } }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; (&lt;span style="color:#a6e22e"&gt;this&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;SnakeGame&lt;/span&gt;) &lt;span style="color:#a6e22e"&gt;Move&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;direction&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;string&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;newPoint&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;this&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;previous&lt;/span&gt;[len(&lt;span style="color:#a6e22e"&gt;this&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;previous&lt;/span&gt;) &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;switch&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;direction&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;case&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;R&amp;#34;&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;newPoint&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;case&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;L&amp;#34;&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;newPoint&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;&lt;span style="color:#f92672"&gt;--&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;case&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;U&amp;#34;&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;newPoint&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;&lt;span style="color:#f92672"&gt;--&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;case&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;D&amp;#34;&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;newPoint&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;newPoint&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &amp;lt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; &lt;span style="color:#f92672"&gt;||&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;newPoint&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;j&lt;/span&gt; &amp;lt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; &lt;span style="color:#f92672"&gt;||&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;newPoint&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;this&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;height&lt;/span&gt; &lt;span style="color:#f92672"&gt;||&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;newPoint&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;j&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;this&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;width&lt;/span&gt; { 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;// If we run into walls&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;this&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;foodCounter&lt;/span&gt; &amp;lt; len(&lt;span style="color:#a6e22e"&gt;this&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;food&lt;/span&gt;) &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;this&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;food&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;this&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;foodCounter&lt;/span&gt;][&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;] &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;newPoint&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;this&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;food&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;this&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;foodCounter&lt;/span&gt;][&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;] &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;newPoint&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;j&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;// If on a piece of food&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;this&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;foodCounter&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;this&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;counter&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; } &lt;span style="color:#66d9ef"&gt;else&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;// If not on food we can remove the end of the tail&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;this&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;previous&lt;/span&gt;[&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;this&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;previous&lt;/span&gt; = &lt;span style="color:#a6e22e"&gt;this&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;previous&lt;/span&gt;[&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;:]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; delete(&lt;span style="color:#a6e22e"&gt;this&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;m&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;this&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;m&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;newPoint&lt;/span&gt;] { 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;// Running into itself&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;this&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;previous&lt;/span&gt; = append(&lt;span style="color:#a6e22e"&gt;this&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;previous&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;newPoint&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;this&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;m&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;newPoint&lt;/span&gt;] = &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;this&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;counter&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Leetcode 2103</title><link>https://nathannaveen.dev/posts/leetcode-2103/</link><pubDate>Wed, 19 Jan 2022 13:00:08 -0600</pubDate><guid>https://nathannaveen.dev/posts/leetcode-2103/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/rings-and-rods/"&gt;2103. Rings and Rods&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is to use the fact that prime numbers can not be divided by any number other than one and itself. So if we relatively multiply &lt;code&gt;2&lt;/code&gt; , &lt;code&gt;3&lt;/code&gt;, or &lt;code&gt;5&lt;/code&gt; to each rods value accordingly to &lt;code&gt;'R'&lt;/code&gt;, &lt;code&gt;'G'&lt;/code&gt;, &lt;code&gt;'B'&lt;/code&gt; we can check whether it is divisible by &lt;code&gt;2, 3&lt;/code&gt;, and &lt;code&gt;5&lt;/code&gt; to check whether we have all three colored rings on a rod.&lt;/p&gt;</description></item><item><title>Leetcode 8</title><link>https://nathannaveen.dev/posts/leetcode-8/</link><pubDate>Wed, 19 Jan 2022 13:00:00 -0600</pubDate><guid>https://nathannaveen.dev/posts/leetcode-8/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/string-to-integer-atoi/"&gt;8. String to Integer (atoi)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I am going to explain this solution while walking through the code:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;We can first remove the starting spaces because the problem says to &amp;ldquo;Read in and ignore any leading whitespace&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;Then, my code checks whether the length of &lt;code&gt;s&lt;/code&gt; equals &lt;code&gt;0&lt;/code&gt;. If it is, we can return &lt;code&gt;0&lt;/code&gt;, because some of the following code is hardcoded to &lt;code&gt;s&lt;/code&gt; having a minimum length of &lt;code&gt;1&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Then, if the first character is negative or positive, we can account for the sign:
&lt;ul&gt;
&lt;li&gt;We can check for a positive or negative sign once throughout this whole code right before the digits because a positive/negative sign should only be there.&lt;/li&gt;
&lt;li&gt;If it is a negative sign, we can make a variable called &lt;code&gt;neg&lt;/code&gt; equal to negative 1, so we can multiply the result by &lt;code&gt;neg&lt;/code&gt; to get the result negative. We can&amp;rsquo;t multiply &lt;code&gt;res&lt;/code&gt; (&lt;code&gt;res&lt;/code&gt; is the result) by &lt;code&gt;-1&lt;/code&gt; right when we find the negative sign because &lt;code&gt;res&lt;/code&gt; starts at &lt;code&gt;0&lt;/code&gt;, and &lt;code&gt;0 * -1 = 0&lt;/code&gt; (No difference).&lt;/li&gt;
&lt;li&gt;Then, if it is a positive or negative sign, we can move the start position up by one because we don&amp;rsquo;t want to count a &lt;code&gt;'+'&lt;/code&gt;, or &lt;code&gt;'-'&lt;/code&gt; as a digit.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;After that, we have to loop throught the remains at the string, starting at our start position.&lt;/li&gt;
&lt;li&gt;Let us call the character we are on &lt;code&gt;char&lt;/code&gt; to be consistent.&lt;/li&gt;
&lt;li&gt;We also check whether &lt;code&gt;res &amp;gt; 2147483647&lt;/code&gt;, I will come back to the reason for this later.&lt;/li&gt;
&lt;li&gt;Next, we can check whether &lt;code&gt;char&lt;/code&gt; is a digit using ASCII, and if it is a digit, we can do:&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;res = res * 10 + int(char - &amp;#39;0&amp;#39;)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This can be expanded into:&lt;/p&gt;</description></item><item><title>Year 2021</title><link>https://nathannaveen.dev/posts/year-2021/</link><pubDate>Sat, 08 Jan 2022 16:32:55 -0600</pubDate><guid>https://nathannaveen.dev/posts/year-2021/</guid><description>&lt;p&gt;I am a 15-year-old who has solved over 700 Leetcode problems, and finished up to day 17 in advent of code!&lt;/p&gt;
&lt;h2 id="leetcode"&gt;Leetcode:&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://leetcode.com/nathannaveen/"&gt;https://leetcode.com/nathannaveen/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://i.imgur.com/uc73HZd.png" alt=""&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I write up Leetcode solutions and post them on Leetcode.&lt;/li&gt;
&lt;li&gt;So far, I have done about a year of Leetcode and have got the &lt;strong&gt;Annual Badge&lt;/strong&gt;. I started doing Leetcode in November 2020 and have kept doing it since.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="advent-of-code"&gt;Advent of Code:&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://adventofcode.com"&gt;https://adventofcode.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://i.imgur.com/67cu5NE.png" alt=""&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I have finished almost all of the first 17 days of Advent of Code, with the only exception of day 16 part 2.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="github"&gt;Github:&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://github.com/nathannaveen"&gt;https://github.com/nathannaveen&lt;/a&gt;&lt;/p&gt;</description></item><item><title>2021 Advent of code day 11</title><link>https://nathannaveen.dev/posts/advent-of-code-day-11/</link><pubDate>Sun, 12 Dec 2021 21:10:50 -0600</pubDate><guid>https://nathannaveen.dev/posts/advent-of-code-day-11/</guid><description>&lt;p&gt;&lt;a href="https://adventofcode.com/2021/day/11"&gt;Day 11 puzzle&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;For day 11, part 1 was pretty easy. For part two I tried all types of different solutions, but all I could get working is the brute force approach.&lt;/p&gt;
&lt;p&gt;I by mistake wrote my part 2 code over my part one code, so here it is:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;type&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;p&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;struct&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;var&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt; = [][]&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;{}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;twoDay11&lt;/span&gt;() &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;input&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;_&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;ioutil&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;ReadFile&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#34;input11.txt&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;var&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;arr2&lt;/span&gt; = &lt;span style="color:#a6e22e"&gt;strings&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Split&lt;/span&gt;(string(&lt;span style="color:#a6e22e"&gt;input&lt;/span&gt;), &lt;span style="color:#e6db74"&gt;&amp;#34;\n&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt; = make([][]&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;, len(&lt;span style="color:#a6e22e"&gt;arr2&lt;/span&gt;))
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;line&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;range&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;arr2&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;] = make([]&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;, len(&lt;span style="color:#a6e22e"&gt;line&lt;/span&gt;))
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;letter&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;range&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;line&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;n&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;_&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;strconv&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Atoi&lt;/span&gt;(string(&lt;span style="color:#a6e22e"&gt;letter&lt;/span&gt;))
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;][&lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;] = &lt;span style="color:#a6e22e"&gt;n&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;flashes&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;totalFlashes&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;steps&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;flashes&lt;/span&gt; &amp;lt; &lt;span style="color:#ae81ff"&gt;100&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;flashes&lt;/span&gt; = &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;steps&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;steps&lt;/span&gt; &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;99&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;fmt&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Println&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;totalFlashes&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &amp;lt; len(&lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt;); &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt; &amp;lt; len(&lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt;[&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;]); &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;stack&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; []&lt;span style="color:#a6e22e"&gt;p&lt;/span&gt;{{&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; len(&lt;span style="color:#a6e22e"&gt;stack&lt;/span&gt;) &amp;gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;stack&lt;/span&gt;[len(&lt;span style="color:#a6e22e"&gt;stack&lt;/span&gt;)&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;stack&lt;/span&gt; = &lt;span style="color:#a6e22e"&gt;stack&lt;/span&gt;[:len(&lt;span style="color:#a6e22e"&gt;stack&lt;/span&gt;)&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;j&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &amp;lt; len(&lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt;) &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;j&lt;/span&gt; &amp;lt; len(&lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt;[&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;]) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;][&lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;]&lt;span style="color:#f92672"&gt;++&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;][&lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;] &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;10&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;flashes&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;stack&lt;/span&gt; = append(&lt;span style="color:#a6e22e"&gt;stack&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;p&lt;/span&gt;{&lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;}, &lt;span style="color:#a6e22e"&gt;p&lt;/span&gt;{&lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;}, &lt;span style="color:#a6e22e"&gt;p&lt;/span&gt;{&lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;j&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;}, &lt;span style="color:#a6e22e"&gt;p&lt;/span&gt;{&lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;j&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;},
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;p&lt;/span&gt;{&lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;j&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;}, &lt;span style="color:#a6e22e"&gt;p&lt;/span&gt;{&lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;j&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;}, &lt;span style="color:#a6e22e"&gt;p&lt;/span&gt;{&lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;j&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;}, &lt;span style="color:#a6e22e"&gt;p&lt;/span&gt;{&lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;j&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;})
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &amp;lt; len(&lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt;); &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt; &amp;lt; len(&lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt;[&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;]); &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;][&lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;] &amp;gt; &lt;span style="color:#ae81ff"&gt;9&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;][&lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;] = &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;totalFlashes&lt;/span&gt; &lt;span style="color:#f92672"&gt;+=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;flashes&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;steps&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>2021 Advent of code day 12</title><link>https://nathannaveen.dev/posts/advent-of-code-day-12/</link><pubDate>Sun, 12 Dec 2021 21:10:50 -0600</pubDate><guid>https://nathannaveen.dev/posts/advent-of-code-day-12/</guid><description>&lt;p&gt;&lt;a href="https://adventofcode.com/2021/day/12"&gt;Day 12 puzzle&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I got to both of my solutions by thing of them as a tree.&lt;/p&gt;
&lt;p&gt;For part one we can use a DFS approach. Basically find every path from &lt;code&gt;&amp;quot;start&amp;quot;&lt;/code&gt; to &lt;code&gt;&amp;quot;end&amp;quot;&lt;/code&gt;. And if we find a lowercase word we can add it to a map, so we know we have visited that position.&lt;/p&gt;
&lt;p&gt;Part two is pretty similar, we can pretty much the same thing, but we have to check if only one of the lowercase letters has been looped over twice, so I made a variable called &lt;code&gt;hasDoneTwice&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>2021 Advent of code day 10</title><link>https://nathannaveen.dev/posts/advent-of-code-day-10/</link><pubDate>Fri, 10 Dec 2021 10:37:22 -0600</pubDate><guid>https://nathannaveen.dev/posts/advent-of-code-day-10/</guid><description>&lt;p&gt;&lt;a href="https://adventofcode.com/2021/day/10"&gt;Day 10 puzzle&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of both solutions is to just use a stack.&lt;/p&gt;
&lt;p&gt;For the first part we just have to detect whether we have an incorrect line.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;oneDay10&lt;/span&gt;() &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;input&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;_&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;ioutil&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;ReadFile&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#34;input10.txt&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;var&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt; = &lt;span style="color:#a6e22e"&gt;strings&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Split&lt;/span&gt;(string(&lt;span style="color:#a6e22e"&gt;input&lt;/span&gt;), &lt;span style="color:#e6db74"&gt;&amp;#34;\n&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;_&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;line&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;range&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;stack&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; []&lt;span style="color:#66d9ef"&gt;string&lt;/span&gt;{}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &amp;lt; len(&lt;span style="color:#a6e22e"&gt;line&lt;/span&gt;); &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;char&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; string(&lt;span style="color:#a6e22e"&gt;line&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;])
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;char&lt;/span&gt; &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;(&amp;#34;&lt;/span&gt; &lt;span style="color:#f92672"&gt;||&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;char&lt;/span&gt; &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;[&amp;#34;&lt;/span&gt; &lt;span style="color:#f92672"&gt;||&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;char&lt;/span&gt; &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;{&amp;#34;&lt;/span&gt; &lt;span style="color:#f92672"&gt;||&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;char&lt;/span&gt; &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;&amp;lt;&amp;#34;&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;stack&lt;/span&gt; = append(&lt;span style="color:#a6e22e"&gt;stack&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;char&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; } &lt;span style="color:#66d9ef"&gt;else&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;stack&lt;/span&gt;[len(&lt;span style="color:#a6e22e"&gt;stack&lt;/span&gt;)&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;stack&lt;/span&gt; = &lt;span style="color:#a6e22e"&gt;stack&lt;/span&gt;[:len(&lt;span style="color:#a6e22e"&gt;stack&lt;/span&gt;)&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;char&lt;/span&gt; &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;)&amp;#34;&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt; &lt;span style="color:#f92672"&gt;!=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;(&amp;#34;&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt; &lt;span style="color:#f92672"&gt;+=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;break&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; } &lt;span style="color:#66d9ef"&gt;else&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;char&lt;/span&gt; &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;]&amp;#34;&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt; &lt;span style="color:#f92672"&gt;!=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;[&amp;#34;&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt; &lt;span style="color:#f92672"&gt;+=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;57&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;break&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; } &lt;span style="color:#66d9ef"&gt;else&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;char&lt;/span&gt; &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;}&amp;#34;&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt; &lt;span style="color:#f92672"&gt;!=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;{&amp;#34;&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt; &lt;span style="color:#f92672"&gt;+=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1197&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;break&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; } &lt;span style="color:#66d9ef"&gt;else&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;char&lt;/span&gt; &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;&amp;gt;&amp;#34;&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt; &lt;span style="color:#f92672"&gt;!=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;&amp;lt;&amp;#34;&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt; &lt;span style="color:#f92672"&gt;+=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;25137&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;break&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;For the second solution we use a stack to find what lines are wrong and what values we should add to complete the line.&lt;/p&gt;</description></item><item><title>2021 Advent of code day 9</title><link>https://nathannaveen.dev/posts/advent-of-code-day-9/</link><pubDate>Fri, 10 Dec 2021 08:11:36 -0600</pubDate><guid>https://nathannaveen.dev/posts/advent-of-code-day-9/</guid><description>&lt;p&gt;&lt;a href="https://adventofcode.com/2021/day/9"&gt;Day 9 puzzle&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="part-one"&gt;Part One&lt;/h2&gt;
&lt;p&gt;I think that the first part of day 9 was pretty easy, just check every values and whether it is smaller than all the adjacent values. If so add that value plus &lt;code&gt;1&lt;/code&gt; to &lt;code&gt;res&lt;/code&gt;.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;oneDay9&lt;/span&gt;() {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;input&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;_&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;ioutil&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;ReadFile&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#34;input9.txt&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;var&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt; = &lt;span style="color:#a6e22e"&gt;strings&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Split&lt;/span&gt;(string(&lt;span style="color:#a6e22e"&gt;input&lt;/span&gt;), &lt;span style="color:#e6db74"&gt;&amp;#34;\n&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;isLow&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;func&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;y&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;x&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;bool&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;// I put this function inside twoDay9()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;// because then I wouldn&amp;#39;t have to parse i, j, and arr which would make it really messy.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;y&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;x&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;y&lt;/span&gt; &amp;lt; len(&lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt;) &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;x&lt;/span&gt; &amp;lt; len(&lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt;[&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;]) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;][&lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;] &amp;lt; &lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;y&lt;/span&gt;][&lt;span style="color:#a6e22e"&gt;x&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; = &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &amp;lt; len(&lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt;); &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt; = &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt; &amp;lt; len(&lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt;[&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;]); &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;isLow&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;&lt;span style="color:#f92672"&gt;+&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;) &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;isLow&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;) &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;isLow&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;&lt;span style="color:#f92672"&gt;+&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;) &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;isLow&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt; &lt;span style="color:#f92672"&gt;+=&lt;/span&gt; int(&lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;][&lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;]&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#39;0&amp;#39;&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;fmt&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Println&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;res&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="part-two"&gt;Part Two&lt;/h2&gt;
&lt;p&gt;The idea of this solution is to use DFS (depth first search) to solve this problem.&lt;/p&gt;</description></item><item><title>2021 Advent of code day 8</title><link>https://nathannaveen.dev/posts/advent-of-code-day-8/</link><pubDate>Wed, 08 Dec 2021 19:10:47 -0600</pubDate><guid>https://nathannaveen.dev/posts/advent-of-code-day-8/</guid><description>&lt;p&gt;&lt;a href="https://adventofcode.com/2021/day/8"&gt;Day 8 Puzzle&lt;/a&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;oneDay8&lt;/span&gt;() {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;file&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;err&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;os&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Open&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#34;input8.txt&amp;#34;&lt;/span&gt;) &lt;span style="color:#75715e"&gt;// opening the file&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;err&lt;/span&gt; &lt;span style="color:#f92672"&gt;!=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;nil&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; panic(&lt;span style="color:#a6e22e"&gt;err&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;defer&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;file&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Close&lt;/span&gt;()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;scanner&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;bufio&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;NewScanner&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;file&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;scanner&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Scan&lt;/span&gt;() {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;temp&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;scanner&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Text&lt;/span&gt;() &lt;span style="color:#75715e"&gt;// getting the line&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;strings&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Split&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;temp&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34; | &amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;words&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;strings&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Split&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt;[&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;], &lt;span style="color:#e6db74"&gt;&amp;#34; &amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;_&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;s&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;range&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;words&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; len(&lt;span style="color:#a6e22e"&gt;s&lt;/span&gt;) &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt; &lt;span style="color:#f92672"&gt;||&lt;/span&gt; len(&lt;span style="color:#a6e22e"&gt;s&lt;/span&gt;) &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;4&lt;/span&gt; &lt;span style="color:#f92672"&gt;||&lt;/span&gt; len(&lt;span style="color:#a6e22e"&gt;s&lt;/span&gt;) &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;3&lt;/span&gt; &lt;span style="color:#f92672"&gt;||&lt;/span&gt; len(&lt;span style="color:#a6e22e"&gt;s&lt;/span&gt;) &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;7&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;fmt&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Println&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;res&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The idea of the second solution is to use the numbers &lt;code&gt;1&lt;/code&gt;, &lt;code&gt;4&lt;/code&gt;, &lt;code&gt;7&lt;/code&gt;, and &lt;code&gt;8&lt;/code&gt; to find the other numbers.&lt;/p&gt;</description></item><item><title>2021 Advent of code day 3</title><link>https://nathannaveen.dev/posts/advent-of-code-day-3/</link><pubDate>Tue, 07 Dec 2021 14:36:57 -0600</pubDate><guid>https://nathannaveen.dev/posts/advent-of-code-day-3/</guid><description>&lt;p&gt;&lt;a href="https://adventofcode.com/2021/day/3"&gt;Advent Of Code Day 3 2021&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="part-one"&gt;Part One&lt;/h2&gt;
&lt;p&gt;The first solution is pretty simple, so I just brute forced it.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;oneDay3&lt;/span&gt;() {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#a6e22e"&gt;file&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;err&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;os&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Open&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#34;input3.txt&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;err&lt;/span&gt; &lt;span style="color:#f92672"&gt;!=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;nil&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		panic(&lt;span style="color:#a6e22e"&gt;err&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#66d9ef"&gt;defer&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;file&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Close&lt;/span&gt;()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#a6e22e"&gt;scanner&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;bufio&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;NewScanner&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;file&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; make([]&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;12&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#a6e22e"&gt;gamma&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#a6e22e"&gt;epsilon&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#a6e22e"&gt;pos&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;scanner&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Scan&lt;/span&gt;() {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		&lt;span style="color:#a6e22e"&gt;temp&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;scanner&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Text&lt;/span&gt;()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		&lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &amp;lt; len(&lt;span style="color:#a6e22e"&gt;temp&lt;/span&gt;); &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;			&lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;temp&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;] &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;1&amp;#39;&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;				&lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;]&lt;span style="color:#f92672"&gt;++&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;			} &lt;span style="color:#66d9ef"&gt;else&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;				&lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;]&lt;span style="color:#f92672"&gt;--&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;			}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; len(&lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt;) &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;&lt;span style="color:#f92672"&gt;--&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		&lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;] &amp;gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;			&lt;span style="color:#a6e22e"&gt;gamma&lt;/span&gt; &lt;span style="color:#f92672"&gt;+=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;pos&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		} &lt;span style="color:#66d9ef"&gt;else&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;			&lt;span style="color:#a6e22e"&gt;epsilon&lt;/span&gt; &lt;span style="color:#f92672"&gt;+=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;pos&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		&lt;span style="color:#a6e22e"&gt;pos&lt;/span&gt; &lt;span style="color:#f92672"&gt;*=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#a6e22e"&gt;fmt&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Println&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;gamma&lt;/span&gt;&lt;span style="color:#f92672"&gt;*&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;epsilon&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;gamma&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;epsilon&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;err&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;scanner&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Err&lt;/span&gt;(); &lt;span style="color:#a6e22e"&gt;err&lt;/span&gt; &lt;span style="color:#f92672"&gt;!=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;nil&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		&lt;span style="color:#a6e22e"&gt;fmt&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Println&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;err&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="part-two"&gt;Part Two&lt;/h2&gt;
&lt;p&gt;The idea of the second solution is to also brute force it. The problem statment wasn&amp;rsquo;t very clear, and required some re-reading on my part.&lt;/p&gt;</description></item><item><title>Leetcode 543</title><link>https://nathannaveen.dev/posts/leetcode-543/</link><pubDate>Wed, 10 Nov 2021 09:57:49 -0600</pubDate><guid>https://nathannaveen.dev/posts/leetcode-543/</guid><description>&lt;p&gt;I feel that enough people have explained the first type of solution, so I will not explain this.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Most People Do This:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;var&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;maximum&lt;/span&gt; = &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;diameterOfBinaryTree&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;root&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;TreeNode&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;maximum&lt;/span&gt; = &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;helper&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;root&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;maximum&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;helper&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;root&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;TreeNode&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;root&lt;/span&gt; &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;nil&lt;/span&gt; { &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;leftHeight&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;rightHeight&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;helper&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;root&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Left&lt;/span&gt;), &lt;span style="color:#a6e22e"&gt;helper&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;root&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Right&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;maximum&lt;/span&gt; = max(&lt;span style="color:#a6e22e"&gt;leftHeight&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;rightHeight&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;maximum&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; max(&lt;span style="color:#a6e22e"&gt;leftHeight&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;rightHeight&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; max(&lt;span style="color:#a6e22e"&gt;a&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;b&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;a&lt;/span&gt; &amp;gt; &lt;span style="color:#a6e22e"&gt;b&lt;/span&gt; { &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;a&lt;/span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;b&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;The Second Solution Explanation:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I would say that the hardest part to understand in the second solution is &lt;code&gt;maximum = max(leftHeight + rightHeight + 2, maximum)&lt;/code&gt;.
I think simplifying would help with the explanation, so:&lt;/p&gt;</description></item><item><title>Leetcode 1807</title><link>https://nathannaveen.dev/posts/leetcode-1807/</link><pubDate>Thu, 28 Oct 2021 15:59:20 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1807/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/evaluate-the-bracket-pairs-of-a-string/"&gt;1807. Evaluate the Bracket Pairs of a String&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is pretty simple:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;We can first add all the knowledge into a map which I called &lt;code&gt;storedKnowledge&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Then we can loop through &lt;code&gt;s&lt;/code&gt;
&lt;ul&gt;
&lt;li&gt;If &lt;code&gt;s[i] == '('&lt;/code&gt; we can make &lt;code&gt;start = i + 1&lt;/code&gt;, so we know where the bracket starts&lt;/li&gt;
&lt;li&gt;Else if &lt;code&gt;s[i] == ')'&lt;/code&gt; we can check whether &lt;code&gt;storedKnowledge&lt;/code&gt; contains &lt;code&gt;s[start : i]&lt;/code&gt; (For our non-Golang users &lt;code&gt;s[start : i]&lt;/code&gt; is basically getting the substring from position &lt;code&gt;start&lt;/code&gt; to the position &lt;code&gt;i&lt;/code&gt;, if we think mathematically it could be shown as the inequality &lt;code&gt;[start, i)&lt;/code&gt;), if it contains we can add the value to &lt;code&gt;res&lt;/code&gt;, else add &lt;code&gt;&amp;quot;?&amp;quot;&lt;/code&gt; to &lt;code&gt;res&lt;/code&gt;. Then I make &lt;code&gt;start = -1&lt;/code&gt;, I will explain this in the next bullet point.&lt;/li&gt;
&lt;li&gt;Else if &lt;code&gt;start != -1&lt;/code&gt;. The &lt;code&gt;start != -1&lt;/code&gt; checks whether we are inside a bracket, and if so, we don&amp;rsquo;t want to add the letter to &lt;code&gt;res&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;evaluate&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;s&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;string&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;knowledge&lt;/span&gt; [][]&lt;span style="color:#66d9ef"&gt;string&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;string&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;storedKnowledge&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; make(&lt;span style="color:#66d9ef"&gt;map&lt;/span&gt;[&lt;span style="color:#66d9ef"&gt;string&lt;/span&gt;] &lt;span style="color:#66d9ef"&gt;string&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;_&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;know&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;range&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;knowledge&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;storedKnowledge&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;know&lt;/span&gt;[&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;]] = &lt;span style="color:#a6e22e"&gt;know&lt;/span&gt;[&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;start&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;i2&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;range&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;s&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i2&lt;/span&gt; &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;(&amp;#39;&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;start&lt;/span&gt; = &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; } &lt;span style="color:#66d9ef"&gt;else&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i2&lt;/span&gt; &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;)&amp;#39;&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;_&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;ok&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;storedKnowledge&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;s&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;start&lt;/span&gt; : &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;]]; &lt;span style="color:#a6e22e"&gt;ok&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt; &lt;span style="color:#f92672"&gt;+=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;storedKnowledge&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;s&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;start&lt;/span&gt; : &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;]] 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; } &lt;span style="color:#66d9ef"&gt;else&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt; &lt;span style="color:#f92672"&gt;+=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;?&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;start&lt;/span&gt; = &lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; } &lt;span style="color:#66d9ef"&gt;else&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;start&lt;/span&gt; &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;// start == -1 is for if we are not inside a bracket&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt; &lt;span style="color:#f92672"&gt;+=&lt;/span&gt; string(&lt;span style="color:#a6e22e"&gt;i2&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;I liked the way that @DBabichev did his solution, so I tried something similar (@DBabichev has a pretty good explanation to this solution, so I will link the &lt;a href="https://leetcode.com/problems/evaluate-the-bracket-pairs-of-a-string/discuss/1130510/Python-Short-solution-using-split-explained"&gt;solution&lt;/a&gt;):&lt;/p&gt;</description></item><item><title>Leetcode 1991</title><link>https://nathannaveen.dev/posts/leetcode-1991/</link><pubDate>Thu, 28 Oct 2021 15:59:14 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1991/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/find-the-middle-index-in-array/"&gt;1991. Find the Middle Index in Array&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is pretty simple:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;We find the sum of all the numbers in &lt;code&gt;nums&lt;/code&gt; (In this solution, I am calling it &lt;code&gt;sum&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Then we check whether &lt;code&gt;sum - left - nums[i] == left&lt;/code&gt; (I will get back to what &lt;code&gt;left&lt;/code&gt; is and what this whole thing means in the following parts). If so, we can return &lt;code&gt;i&lt;/code&gt; (The index).&lt;/li&gt;
&lt;li&gt;The variable called &lt;code&gt;left&lt;/code&gt; keeps track of the left sum, so we do &lt;code&gt;left += nums[i]&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So, if you don&amp;rsquo;t understand what &lt;code&gt;sum - left - nums[i] == left&lt;/code&gt; is doing, read the following:&lt;/p&gt;</description></item><item><title>Leetcode 1984</title><link>https://nathannaveen.dev/posts/leetcode-1984/</link><pubDate>Thu, 28 Oct 2021 15:59:09 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1984/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/minimum-difference-between-highest-and-lowest-of-k-scores/"&gt;1984. Minimum Difference Between Highest and Lowest of K Scores&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is pretty simple:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;We just sort &lt;code&gt;nums&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;And then we can use a sliding window to check for the min of the last number in the sub-array minus the first number in the sub-array.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The reason we sort &lt;code&gt;nums&lt;/code&gt; is the minimum distance will always be between the two closest numbers. For example if we have the array &lt;code&gt;nums = [1, 2, 3, 4, 6, 10]&lt;/code&gt;, and we had &lt;code&gt;k = 3&lt;/code&gt;, we can see that the differences would be:&lt;/p&gt;</description></item><item><title>Leetcode 598</title><link>https://nathannaveen.dev/posts/leetcode-598/</link><pubDate>Thu, 28 Oct 2021 15:59:00 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-598/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/range-addition-ii/"&gt;598. Range Addition II&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is pretty simple, the positions with the max value will be in the sub-matrix of range &lt;code&gt;0 to minimum y pos&lt;/code&gt;, and &lt;code&gt;0 to minimum x pos&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;If you don&amp;rsquo;t understand look at the example bellow:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;input: m = 6, n = 5, ops = [[4, 3], [2, 6], [3, 5]]&lt;/code&gt; &lt;em&gt;(Note: They give the input &lt;code&gt;1-indexed&lt;/code&gt;, instead of &lt;code&gt;0-indexed&lt;/code&gt;)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://i.imgur.com/Nz4lmSJ.png" alt=""&gt;&lt;/p&gt;</description></item><item><title>Leetcode 2006</title><link>https://nathannaveen.dev/posts/leetcode-2006/</link><pubDate>Thu, 28 Oct 2021 15:58:53 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-2006/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/count-number-of-pairs-with-absolute-difference-k/"&gt;2006. Count Number of Pairs With Absolute Difference K&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The main idea of this solution is &lt;code&gt;nums[i] + k = nums[j]&lt;/code&gt; and &lt;code&gt;nums[i] - k = nums[j]&lt;/code&gt;, if you don&amp;rsquo;t understand:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;|nums[i] - nums[j| = k&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Now if we took off the absolute value sign we get 2 equations:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;-(nums[i] - nums[j]) = k and&lt;/code&gt;
&lt;code&gt;nums[i] - nums[j] = k&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Let us start with &lt;code&gt;-(nums[i] - nums[j]) = k&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;-(nums[i] - nums[j]) = k
Mulitply both sides by -1 so nums[i] - nums[j] = -k
add k to both sides, and add nums[j] to both sides
nums[i] + k = nums[j]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now we can do &lt;code&gt;nums[i] - nums[j] = k&lt;/code&gt;:&lt;/p&gt;</description></item><item><title>Leetcode 2016</title><link>https://nathannaveen.dev/posts/leetcode-2016/</link><pubDate>Thu, 28 Oct 2021 15:58:50 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-2016/</guid><description>&lt;p&gt;&lt;a href="https://https://leetcode.com/problems/maximum-difference-between-increasing-elements/"&gt;2016. Maximum Difference Between Increasing Elements&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is we loop through &lt;code&gt;nums&lt;/code&gt;, and if a number is greater than &lt;code&gt;min&lt;/code&gt; we can check whether to make it &lt;code&gt;max&lt;/code&gt;, otherwise if the number is smaller than &lt;code&gt;min&lt;/code&gt; we can re-make &lt;code&gt;min&lt;/code&gt;.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;maximumDifference&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;nums&lt;/span&gt; []&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;min&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;nums&lt;/span&gt;[&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;max&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &amp;lt; len(&lt;span style="color:#a6e22e"&gt;nums&lt;/span&gt;); &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;nums&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;] &amp;gt; &lt;span style="color:#a6e22e"&gt;min&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;nums&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;] &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;min&lt;/span&gt; &amp;gt; &lt;span style="color:#a6e22e"&gt;max&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;max&lt;/span&gt; = &lt;span style="color:#a6e22e"&gt;nums&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;] &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;min&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; } &lt;span style="color:#66d9ef"&gt;else&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;nums&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;] &amp;lt; &lt;span style="color:#a6e22e"&gt;min&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;min&lt;/span&gt; = &lt;span style="color:#a6e22e"&gt;nums&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;max&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Leetcode 1257</title><link>https://nathannaveen.dev/posts/leetcode-1257/</link><pubDate>Thu, 28 Oct 2021 15:58:40 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1257/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/smallest-common-region/"&gt;1257. Smallest Common Region&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A quick idea of this solution is &lt;em&gt;(Note: This solution is not very good if you want a solution that is easy to understand, look after this)&lt;/em&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;To use a map to store every region as the key and the value as the region in which the original region is contained.&lt;/li&gt;
&lt;li&gt;Then loop through all the regions in the food chain of &lt;code&gt;region1&lt;/code&gt; (I am calling a food chain whenever we start with &lt;code&gt;region1&lt;/code&gt;, and then find the region that contains it) and store all the values into another map.&lt;/li&gt;
&lt;li&gt;Then we loop through the food chain of &lt;code&gt;region2&lt;/code&gt;, and check whether the &lt;code&gt;region1&lt;/code&gt; food chain map contains any values. If so, return the value.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;I know that the whole explanation before is very vague and confusing, so I am going to explain this whole thing using an example:&lt;/p&gt;</description></item><item><title>Leetcode 2027</title><link>https://nathannaveen.dev/posts/leetcode-2027/</link><pubDate>Thu, 28 Oct 2021 15:58:28 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-2027/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/minimum-moves-to-convert-string/"&gt;2027. Minimum Moves to Convert String&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is if we are on a &lt;code&gt;'X'&lt;/code&gt; we can move the index up by three and add one to &lt;code&gt;res&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;An example could be:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;input: s = &amp;quot;XXOXXXOOOXOXOXX&amp;quot;&lt;/code&gt; &lt;em&gt;(I tried to capture as many edge cases as I could in this test case)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;We can start with our index &lt;code&gt;i = 0&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://i.imgur.com/veKMehQ.png" alt=""&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;s[i] == 'X'&lt;/code&gt;, so we can skip the next two values (Skip the values at indexes &lt;code&gt;1&lt;/code&gt; and &lt;code&gt;2&lt;/code&gt; because according to the problem we have made &lt;code&gt;s[0] = 'O', s[1] = 'O', s[2] = 'O'&lt;/code&gt;. We don&amp;rsquo;t actually change the values because there is no need) and add one to &lt;code&gt;res&lt;/code&gt;. So now &lt;code&gt;i = 3&lt;/code&gt;, &lt;code&gt;res = 1&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Leetcode 2028</title><link>https://nathannaveen.dev/posts/leetcode-2028/</link><pubDate>Thu, 28 Oct 2021 15:58:20 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-2028/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/find-missing-observations/"&gt;2028. Find Missing Observations&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This solution aims to find the missing sum and then distribute it among &lt;code&gt;n&lt;/code&gt; values.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;The idea of the first part (Finding the missing sum) is first to find the sum of the &lt;code&gt;m&lt;/code&gt; numbers given to us in &lt;code&gt;rolls&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Then since the mean will always be &lt;code&gt;mean = sum / (n + m)&lt;/code&gt; (the sum of elements divided by the number of elements), we know that the number of elements will always be &lt;code&gt;n + m&lt;/code&gt;. So the total number of elements will be &lt;code&gt;(n + m) * mean&lt;/code&gt;. And the sum of the missing elements will be &lt;code&gt;(n + m) * mean - sum&lt;/code&gt; (Works because of PEMDAS).&lt;/p&gt;</description></item><item><title>Leetcode 200</title><link>https://nathannaveen.dev/posts/leetcode-200/</link><pubDate>Thu, 28 Oct 2021 15:58:14 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-200/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/number-of-islands/"&gt;200. Number of Islands&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution can be portrayed in its &lt;em&gt;&lt;strong&gt;most basic&lt;/strong&gt;&lt;/em&gt; idea by the following image:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://i.imgur.com/jcYOE5j.png" alt=""&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;var&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;doneAlready&lt;/span&gt; = make(&lt;span style="color:#66d9ef"&gt;map&lt;/span&gt;[[&lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;]&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;] &lt;span style="color:#66d9ef"&gt;bool&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;numIslands&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;grid&lt;/span&gt; [][]&lt;span style="color:#66d9ef"&gt;byte&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;doneAlready&lt;/span&gt; = make(&lt;span style="color:#66d9ef"&gt;map&lt;/span&gt;[[&lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;]&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;] &lt;span style="color:#66d9ef"&gt;bool&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &amp;lt; len(&lt;span style="color:#a6e22e"&gt;grid&lt;/span&gt;); &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt; &amp;lt; len(&lt;span style="color:#a6e22e"&gt;grid&lt;/span&gt;[&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;]); &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;helper&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;grid&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;helper&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;grid&lt;/span&gt; [][]&lt;span style="color:#66d9ef"&gt;byte&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;bool&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;temp&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; [&lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;]&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;{&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &amp;lt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; &lt;span style="color:#f92672"&gt;||&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;gt;=&lt;/span&gt; len(&lt;span style="color:#a6e22e"&gt;grid&lt;/span&gt;) &lt;span style="color:#f92672"&gt;||&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt; &amp;lt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; &lt;span style="color:#f92672"&gt;||&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;gt;=&lt;/span&gt; len(&lt;span style="color:#a6e22e"&gt;grid&lt;/span&gt;[&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;]) &lt;span style="color:#f92672"&gt;||&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;doneAlready&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;temp&lt;/span&gt;] &lt;span style="color:#f92672"&gt;||&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;grid&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;][&lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;] &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;0&amp;#39;&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;doneAlready&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;temp&lt;/span&gt;] = &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;helper&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;grid&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;helper&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;grid&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;helper&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;grid&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;helper&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;grid&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;This is a variation of my Max Area of Island solution:&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Leetcode 1428</title><link>https://nathannaveen.dev/posts/leetcode-1428/</link><pubDate>Thu, 28 Oct 2021 15:58:02 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1428/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/leftmost-column-with-at-least-a-one/"&gt;1428. Leftmost Column with at Least a One&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This solution uses the fact that all rows are sorted. So, all the ones in every row will be at the end.&lt;/p&gt;
&lt;p&gt;Basically, to not call &lt;code&gt;binaryMatrix.Get(i, j)&lt;/code&gt; too many times. We can&amp;rsquo;t loop through all values of the matrix.&lt;/p&gt;
&lt;p&gt;Since &lt;code&gt;1 &amp;lt;= rows, cols &amp;lt;= 100&lt;/code&gt; the max number of elements in the matrix is &lt;code&gt;100 * 100, 10000&lt;/code&gt;. And the problem says that the max number of calls to &lt;code&gt;binaryMatrix.Get(i, j)&lt;/code&gt; is &lt;code&gt;1000&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Leetcode 684</title><link>https://nathannaveen.dev/posts/leetcode-684/</link><pubDate>Thu, 28 Oct 2021 15:57:56 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-684/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/redundant-connection/"&gt;684. Redundant Connection&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is to use union find to connect all the edges together, then in the &lt;code&gt;Union()&lt;/code&gt; function if &lt;code&gt;edge[0]&lt;/code&gt; parent equals &lt;code&gt;edge[1]&lt;/code&gt; parent we have a redundant connection.&lt;/p&gt;
&lt;p&gt;Note that I modified the average union find for this problem.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;type&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;unionFind&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;struct&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;parent&lt;/span&gt; []&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;n&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; (&lt;span style="color:#a6e22e"&gt;this&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;unionFind&lt;/span&gt;) &lt;span style="color:#a6e22e"&gt;Find&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;x&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;x&lt;/span&gt; &lt;span style="color:#f92672"&gt;!=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;this&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;parent&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;x&lt;/span&gt;] {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;this&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;parent&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;x&lt;/span&gt;] = &lt;span style="color:#a6e22e"&gt;this&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Find&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;this&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;parent&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;x&lt;/span&gt;])
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;this&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;parent&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;x&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;x&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; (&lt;span style="color:#a6e22e"&gt;this&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;unionFind&lt;/span&gt;) &lt;span style="color:#a6e22e"&gt;Union&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;x&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;y&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;bool&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;temp1&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;this&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Find&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;x&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;temp2&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;this&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Find&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;y&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;temp1&lt;/span&gt; &lt;span style="color:#f92672"&gt;!=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;temp2&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;this&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;n&lt;/span&gt;&lt;span style="color:#f92672"&gt;--&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;this&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;parent&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;temp1&lt;/span&gt;] = &lt;span style="color:#a6e22e"&gt;temp2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; } &lt;span style="color:#66d9ef"&gt;else&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;false&lt;/span&gt; &lt;span style="color:#75715e"&gt;// This signifies there is a redundant connection&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;findRedundantConnection&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;edges&lt;/span&gt; [][]&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;) []&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; []&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;{}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;u&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;unionFind&lt;/span&gt;{ make([]&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;, len(&lt;span style="color:#a6e22e"&gt;edges&lt;/span&gt;)), len(&lt;span style="color:#a6e22e"&gt;edges&lt;/span&gt;) }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &amp;lt; len(&lt;span style="color:#a6e22e"&gt;edges&lt;/span&gt;); &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;u&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;parent&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;] = &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;_&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;edge&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;range&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;edges&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; !&lt;span style="color:#a6e22e"&gt;u&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Union&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;edge&lt;/span&gt;[&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;] &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;edge&lt;/span&gt;[&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;] &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;) { &lt;span style="color:#75715e"&gt;// checking for connections&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt; = &lt;span style="color:#a6e22e"&gt;edge&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Leetcode 2046</title><link>https://nathannaveen.dev/posts/leetcode-2046/</link><pubDate>Thu, 28 Oct 2021 15:57:20 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-2046/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/sort-linked-list-already-sorted-using-absolute-values/"&gt;2046. Sort Linked List Already Sorted Using Absolute Values&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is to check whether the current value is smaller than &lt;code&gt;0&lt;/code&gt;. If so, we can remove it from its current position, add it to the beginning of the list, and make that the new beginning.&lt;/p&gt;
&lt;p&gt;This solution works because the absolute value of &lt;code&gt;-1&lt;/code&gt; will always be smaller than the absolute value of &lt;code&gt;-5&lt;/code&gt;, but &lt;code&gt;-1&lt;/code&gt; is greater than &lt;code&gt;-5&lt;/code&gt;. So if we have the linked list &lt;code&gt;[-1, -5]&lt;/code&gt;, we can go through the linked list from the &lt;code&gt;0&lt;/code&gt; index to the end, find the greatest valued negative numbers, and add them to the beginning before the smaller negative numbers.&lt;/p&gt;</description></item><item><title>Leetcode 319</title><link>https://nathannaveen.dev/posts/leetcode-319/</link><pubDate>Thu, 28 Oct 2021 15:56:46 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-319/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/bulb-switcher/"&gt;319. Bulb Switcher&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Note: If you don&amp;rsquo;t understand this problem, think of it as something similar to &lt;em&gt;Seive of Eratosthenes&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;At first I didn&amp;rsquo;t understand how to go about this problem, so I drew it out. I made a graph that might be easier to understand than my drawing:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://i.imgur.com/MZP1ibF.png" alt=""&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;In this graph the numbers represent what round we are on (Y-axis = what round we are on).&lt;/li&gt;
&lt;li&gt;And the bulbs represent each bulb (X-axis = what bulb we are on).&lt;/li&gt;
&lt;li&gt;The yellow highlights represent the bulb being on.&lt;/li&gt;
&lt;li&gt;While the empty boxes in the graph represent the bulb being off.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If we do this for many different &lt;code&gt;n&lt;/code&gt; we can see a pattern:&lt;/p&gt;</description></item><item><title>Leetcode 1804</title><link>https://nathannaveen.dev/posts/leetcode-1804/</link><pubDate>Tue, 17 Aug 2021 12:33:53 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1804/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/implement-trie-ii-prefix-tree/"&gt;1804. Implement Trie II (Prefix Tree)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution can be shown using the following image:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://i.imgur.com/HQr5JdP.png" alt=""&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;type&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;Node&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;struct&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;m&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;map&lt;/span&gt;[&lt;span style="color:#66d9ef"&gt;rune&lt;/span&gt;] &lt;span style="color:#f92672"&gt;*&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;Node&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;isEndCounter&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;starts&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;type&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;Trie&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;struct&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;node&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;Node&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;Constructor&lt;/span&gt;() &lt;span style="color:#a6e22e"&gt;Trie&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;Trie&lt;/span&gt;{&lt;span style="color:#a6e22e"&gt;node&lt;/span&gt;: &lt;span style="color:#f92672"&gt;&amp;amp;&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;Node&lt;/span&gt;{make(&lt;span style="color:#66d9ef"&gt;map&lt;/span&gt;[&lt;span style="color:#66d9ef"&gt;rune&lt;/span&gt;] &lt;span style="color:#f92672"&gt;*&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;Node&lt;/span&gt;), &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; (&lt;span style="color:#a6e22e"&gt;this&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;Trie&lt;/span&gt;) &lt;span style="color:#a6e22e"&gt;Insert&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;word&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;string&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;root&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;this&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;node&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;root&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;starts&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;_&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;s&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;range&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;word&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;root&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;m&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;s&lt;/span&gt;] &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;nil&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;root&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;m&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;s&lt;/span&gt;] = &lt;span style="color:#f92672"&gt;&amp;amp;&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;Node&lt;/span&gt;{ &lt;span style="color:#a6e22e"&gt;m&lt;/span&gt;: make(&lt;span style="color:#66d9ef"&gt;map&lt;/span&gt;[&lt;span style="color:#66d9ef"&gt;rune&lt;/span&gt;] &lt;span style="color:#f92672"&gt;*&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;Node&lt;/span&gt;), }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;root&lt;/span&gt; = &lt;span style="color:#a6e22e"&gt;root&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;m&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;s&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;root&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;starts&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;root&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;isEndCounter&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; (&lt;span style="color:#a6e22e"&gt;this&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;Trie&lt;/span&gt;) &lt;span style="color:#a6e22e"&gt;CountWordsEqualTo&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;word&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;string&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;root&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;this&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;node&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;_&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;s&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;range&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;word&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;root&lt;/span&gt; = &lt;span style="color:#a6e22e"&gt;root&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;m&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;s&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;root&lt;/span&gt; &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;nil&lt;/span&gt; &lt;span style="color:#f92672"&gt;||&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;root&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;starts&lt;/span&gt; &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;root&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;isEndCounter&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; (&lt;span style="color:#a6e22e"&gt;this&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;Trie&lt;/span&gt;) &lt;span style="color:#a6e22e"&gt;CountWordsStartingWith&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;prefix&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;string&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;root&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;this&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;node&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;_&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;s&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;range&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;prefix&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;root&lt;/span&gt; = &lt;span style="color:#a6e22e"&gt;root&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;m&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;s&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;root&lt;/span&gt; &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;nil&lt;/span&gt; &lt;span style="color:#f92672"&gt;||&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;root&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;starts&lt;/span&gt; &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;root&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;starts&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; (&lt;span style="color:#a6e22e"&gt;this&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;Trie&lt;/span&gt;) &lt;span style="color:#a6e22e"&gt;Erase&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;word&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;string&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;root&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;this&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;node&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;root&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;starts&lt;/span&gt;&lt;span style="color:#f92672"&gt;--&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;_&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;s&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;range&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;word&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;root&lt;/span&gt; = &lt;span style="color:#a6e22e"&gt;root&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;m&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;s&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;root&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;starts&lt;/span&gt;&lt;span style="color:#f92672"&gt;--&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;root&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;isEndCounter&lt;/span&gt;&lt;span style="color:#f92672"&gt;--&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Leetcode 1903</title><link>https://nathannaveen.dev/posts/leetcode-1903/</link><pubDate>Tue, 17 Aug 2021 12:31:35 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1903/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/largest-odd-number-in-string/"&gt;1903. Largest Odd Number in String&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is pretty simple, we find the last odd digit, and the number from the beginning of &lt;code&gt;num&lt;/code&gt; to that odd digit is the greatest odd number we can get.&lt;/p&gt;
&lt;p&gt;If you don&amp;rsquo;t understand, think &lt;em&gt;&amp;ldquo;what makes an odd number?&amp;rdquo;&lt;/em&gt; An odd number is a number with its last digit being odd (The last digit can be &lt;code&gt;1, 3, 5, 7&lt;/code&gt;, or &lt;code&gt;9&lt;/code&gt;).&lt;/p&gt;</description></item><item><title>Leetcode 1936</title><link>https://nathannaveen.dev/posts/leetcode-1936/</link><pubDate>Tue, 17 Aug 2021 12:31:28 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1936/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/add-minimum-number-of-rungs/"&gt;1936. Add Minimum Number of Rungs&lt;/a&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;addRungs&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;rungs&lt;/span&gt; []&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;dist&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;prev&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &amp;lt; len(&lt;span style="color:#a6e22e"&gt;rungs&lt;/span&gt;); &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;rung&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;rungs&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt; &lt;span style="color:#f92672"&gt;+=&lt;/span&gt; (&lt;span style="color:#a6e22e"&gt;rung&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;prev&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;) &lt;span style="color:#f92672"&gt;/&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;dist&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;prev&lt;/span&gt; = &lt;span style="color:#a6e22e"&gt;rung&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The idea of both of these solution are pretty much the same except for this solution we pre-pend &lt;code&gt;0&lt;/code&gt; to the rungs instead of having &lt;code&gt;prev&lt;/code&gt;.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;addRungs&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;rungs&lt;/span&gt; []&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;dist&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;rungs&lt;/span&gt; = append(&lt;span style="color:#a6e22e"&gt;rungs&lt;/span&gt;[:&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;], append([]&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;{&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;}, &lt;span style="color:#a6e22e"&gt;rungs&lt;/span&gt;[&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;:]&lt;span style="color:#f92672"&gt;...&lt;/span&gt;)&lt;span style="color:#f92672"&gt;...&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &amp;lt; len(&lt;span style="color:#a6e22e"&gt;rungs&lt;/span&gt;); &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt; &lt;span style="color:#f92672"&gt;+=&lt;/span&gt; (&lt;span style="color:#a6e22e"&gt;rungs&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;] &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;rungs&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;] &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;) &lt;span style="color:#f92672"&gt;/&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;dist&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Leetcode 1945</title><link>https://nathannaveen.dev/posts/leetcode-1945/</link><pubDate>Tue, 17 Aug 2021 12:31:21 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1945/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/sum-of-digits-of-string-after-convert/"&gt;1945. Sum of Digits of String After Convert&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The Mathematical Solution:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution uses the fact that &lt;code&gt;k&lt;/code&gt; will always be &lt;code&gt;1 &amp;lt;= k &amp;lt;= 10&lt;/code&gt;. Since &lt;code&gt;k&lt;/code&gt; will always be greater than &lt;code&gt;1&lt;/code&gt; we can add the first transformation and conversion together, so we don&amp;rsquo;t add numbers that are greater than &lt;code&gt;9&lt;/code&gt; to the result.&lt;/p&gt;
&lt;p&gt;For an example let us use:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;input: s = &amp;quot;hvmhoasabayzzzzzd&amp;quot;, k = 1&lt;/code&gt;&lt;/p&gt;</description></item><item><title>Leetcode 1954</title><link>https://nathannaveen.dev/posts/leetcode-1954/</link><pubDate>Tue, 17 Aug 2021 12:31:12 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1954/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/minimum-garden-perimeter-to-collect-enough-apples/"&gt;1954. Minimum Garden Perimeter to Collect Enough Apples&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;For this solution, I will try to explain it with an image.&lt;/p&gt;
&lt;p&gt;I have drawn a picture to explain how this solution works. I have drawn a &lt;code&gt;2 x 2&lt;/code&gt; and a &lt;code&gt;4 x 4&lt;/code&gt; square. I will explain the reason for this later. And I have given each position a letter instead of coordinate so I can give a map with each letter and coordinate.&lt;/p&gt;</description></item><item><title>Leetcode 1910</title><link>https://nathannaveen.dev/posts/leetcode-1910/</link><pubDate>Tue, 17 Aug 2021 12:31:06 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1910/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/remove-all-occurrences-of-a-substring/"&gt;1910. Remove All Occurrences of a Substring&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solution One:&lt;/strong&gt; (&lt;em&gt;Iterative&lt;/em&gt;)&lt;/p&gt;
&lt;p&gt;The idea of this solution is pretty simple:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;We can loop through &lt;code&gt;s&lt;/code&gt; using a counter &lt;code&gt;i&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Then we check whether &lt;code&gt;s[i : i + len(part)] == part&lt;/code&gt; (Is the part of &lt;code&gt;s&lt;/code&gt; from &lt;code&gt;i&lt;/code&gt; to &lt;code&gt;i + len(part)&lt;/code&gt; equal to &lt;code&gt;part&lt;/code&gt;).
&lt;ul&gt;
&lt;li&gt;If so, we can re-make &lt;code&gt;s&lt;/code&gt; without that part&lt;/li&gt;
&lt;li&gt;We can also move back the counter (&lt;code&gt;i&lt;/code&gt;) by the length of &lt;code&gt;part&lt;/code&gt;, so we can see whether removing the part from &lt;code&gt;s&lt;/code&gt; makes another &lt;code&gt;part&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;removeOccurrences&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;s&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;string&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;part&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;string&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;string&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &amp;lt; len(&lt;span style="color:#a6e22e"&gt;s&lt;/span&gt;); &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &amp;gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;=&lt;/span&gt; len(&lt;span style="color:#a6e22e"&gt;s&lt;/span&gt;) &lt;span style="color:#f92672"&gt;-&lt;/span&gt; len(&lt;span style="color:#a6e22e"&gt;part&lt;/span&gt;) &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;s&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; : &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; len(&lt;span style="color:#a6e22e"&gt;part&lt;/span&gt;)] &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;part&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;s&lt;/span&gt; = &lt;span style="color:#a6e22e"&gt;s&lt;/span&gt;[&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; : &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;] &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;s&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; len(&lt;span style="color:#a6e22e"&gt;part&lt;/span&gt;) : len(&lt;span style="color:#a6e22e"&gt;s&lt;/span&gt;)]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;-=&lt;/span&gt; len(&lt;span style="color:#a6e22e"&gt;part&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;s&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Solution Two:&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Leetcode 1893</title><link>https://nathannaveen.dev/posts/leetcode-1893/</link><pubDate>Tue, 17 Aug 2021 12:30:59 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1893/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/check-if-all-the-integers-in-a-range-are-covered/"&gt;1893. Check if All the Integers in a Range Are Covered&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;First, a walk-through of the code, and then an explanation.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;A Walk Through Of the Solution:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;We can sort &lt;code&gt;ranges&lt;/code&gt; by the ranges left value (I think of &lt;code&gt;ranges&lt;/code&gt; as &lt;code&gt;ranges = [][]int{ []int{left, right} }&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Then I loop through ranges and:
&lt;ul&gt;
&lt;li&gt;If the ranges left value is greater than &lt;code&gt;left&lt;/code&gt;, we can return false.&lt;/li&gt;
&lt;li&gt;If the ranges left value is smaller than or equal to &lt;code&gt;left&lt;/code&gt; and the ranges right is smaller than &lt;code&gt;right&lt;/code&gt;, we can re-make &lt;code&gt;left&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;If the ranges left value is smaller than or equal to &lt;code&gt;left&lt;/code&gt; and the ranges right is greater than or equal to &lt;code&gt;right&lt;/code&gt; we can return true.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Otherwise, return &lt;code&gt;false&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;How This Solution Works:&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Leetcode 1404</title><link>https://nathannaveen.dev/posts/leetcode-1404/</link><pubDate>Tue, 17 Aug 2021 12:30:51 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1404/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/number-of-steps-to-reduce-a-number-in-binary-representation-to-one/"&gt;1404. Number of Steps to Reduce a Number in Binary Representation to One&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;When we find a zero at the end of &lt;code&gt;s&lt;/code&gt;, we know that &lt;code&gt;s&lt;/code&gt; is divisible by &lt;code&gt;2&lt;/code&gt;, so we can remove the end of the string and add one to the result.&lt;/li&gt;
&lt;li&gt;When we find a &lt;code&gt;1&lt;/code&gt; at the end of &lt;code&gt;s&lt;/code&gt;, we know that &lt;code&gt;s&lt;/code&gt; is not divisible by &lt;code&gt;2&lt;/code&gt;, so we can add &lt;code&gt;1&lt;/code&gt; by keep making all values before the position equal to &lt;code&gt;0&lt;/code&gt; if they are &lt;code&gt;1&lt;/code&gt; and &lt;code&gt;1&lt;/code&gt; if they are &lt;code&gt;0&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you don&amp;rsquo;t understand the adding a &lt;code&gt;1&lt;/code&gt; part, don&amp;rsquo;t worry, I have drawn up an image for understanding:&lt;/p&gt;</description></item><item><title>Leetcode 302</title><link>https://nathannaveen.dev/posts/leetcode-302/</link><pubDate>Tue, 17 Aug 2021 12:30:46 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-302/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/smallest-rectangle-enclosing-black-pixels/"&gt;302. Smallest Rectangle Enclosing Black Pixels&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note: I think that the &lt;code&gt;x&lt;/code&gt; and &lt;code&gt;y&lt;/code&gt; coordinates are wrong in the problem because, in a graph, the axis are:&lt;/em&gt;&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;y ^
 |
 |
 |
 +--------&amp;gt;
 x
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The idea of the solution can be shown using the following image:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://i.imgur.com/xbVbiBX.png" alt=""&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The Code:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;type&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;key&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;struct&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;x&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;y&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;minArea&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;image&lt;/span&gt; [][]&lt;span style="color:#66d9ef"&gt;byte&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;x&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;y&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;stack&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; []&lt;span style="color:#a6e22e"&gt;key&lt;/span&gt;{ &lt;span style="color:#a6e22e"&gt;key&lt;/span&gt;{ &lt;span style="color:#a6e22e"&gt;y&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;x&lt;/span&gt; } }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;minX&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;maxX&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;101&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;minY&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;maxY&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;101&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; len(&lt;span style="color:#a6e22e"&gt;stack&lt;/span&gt;) &lt;span style="color:#f92672"&gt;!=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;stack&lt;/span&gt;[len(&lt;span style="color:#a6e22e"&gt;stack&lt;/span&gt;) &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;stack&lt;/span&gt; = &lt;span style="color:#a6e22e"&gt;stack&lt;/span&gt;[:len(&lt;span style="color:#a6e22e"&gt;stack&lt;/span&gt;) &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;minX&lt;/span&gt; = min(&lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;x&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;minX&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;maxX&lt;/span&gt; = max(&lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;x&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;maxX&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;minY&lt;/span&gt; = min(&lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;y&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;minY&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;maxY&lt;/span&gt; = max(&lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;y&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;maxY&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;x&lt;/span&gt; &amp;gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;image&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;y&lt;/span&gt;][&lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;x&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;] &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;1&amp;#39;&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;stack&lt;/span&gt; = append(&lt;span style="color:#a6e22e"&gt;stack&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;key&lt;/span&gt;{ &lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;x&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;y&lt;/span&gt; })
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;image&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;y&lt;/span&gt;][&lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;x&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;] = &lt;span style="color:#e6db74"&gt;&amp;#39;0&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;x&lt;/span&gt; &amp;lt; len(&lt;span style="color:#a6e22e"&gt;image&lt;/span&gt;[&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;]) &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;image&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;y&lt;/span&gt;][&lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;x&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;] &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;1&amp;#39;&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;stack&lt;/span&gt; = append(&lt;span style="color:#a6e22e"&gt;stack&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;key&lt;/span&gt;{ &lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;x&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;y&lt;/span&gt; })
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;image&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;y&lt;/span&gt;][&lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;x&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;] = &lt;span style="color:#e6db74"&gt;&amp;#39;0&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;y&lt;/span&gt; &amp;gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;image&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;y&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;][&lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;x&lt;/span&gt;] &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;1&amp;#39;&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;stack&lt;/span&gt; = append(&lt;span style="color:#a6e22e"&gt;stack&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;key&lt;/span&gt;{ &lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;x&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;y&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; })
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;image&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;y&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;][&lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;x&lt;/span&gt;] = &lt;span style="color:#e6db74"&gt;&amp;#39;0&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;y&lt;/span&gt; &amp;lt; len(&lt;span style="color:#a6e22e"&gt;image&lt;/span&gt;) &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;image&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;y&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;][&lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;x&lt;/span&gt;] &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;1&amp;#39;&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;stack&lt;/span&gt; = append(&lt;span style="color:#a6e22e"&gt;stack&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;key&lt;/span&gt;{ &lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;x&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;y&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; })
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;image&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;y&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;][&lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;x&lt;/span&gt;] = &lt;span style="color:#e6db74"&gt;&amp;#39;0&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; (&lt;span style="color:#a6e22e"&gt;maxX&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;minX&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;) &lt;span style="color:#f92672"&gt;*&lt;/span&gt; (&lt;span style="color:#a6e22e"&gt;maxY&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;minY&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; max(&lt;span style="color:#a6e22e"&gt;a&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;b&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;a&lt;/span&gt; &amp;gt; &lt;span style="color:#a6e22e"&gt;b&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;a&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;b&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; min(&lt;span style="color:#a6e22e"&gt;a&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;b&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;a&lt;/span&gt; &amp;gt; &lt;span style="color:#a6e22e"&gt;b&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;b&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;a&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Leetcode 582</title><link>https://nathannaveen.dev/posts/leetcode-582/</link><pubDate>Tue, 17 Aug 2021 12:30:39 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-582/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/kill-process/"&gt;582. Kill Process&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Both of these solutions operate on the same idea:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;We add all the parents and children to a map in the format of &lt;code&gt;map[parent] []children&lt;/code&gt; (map of a parent then an array of children)&lt;/li&gt;
&lt;li&gt;Then we add the &lt;code&gt;kill&lt;/code&gt; value to the result and the &lt;code&gt;kills&lt;/code&gt; children (From the map), and then the &lt;code&gt;kill&lt;/code&gt;&amp;rsquo;s children&amp;rsquo;s children, and so on (&lt;code&gt;kill&lt;/code&gt;, &lt;code&gt;kill children&lt;/code&gt;, &lt;code&gt;kills children's children&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Iterative&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;If you don&amp;rsquo;t understand &lt;code&gt;stack = append(stack, m[pop]...)&lt;/code&gt;, it is basically doing:&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Leetcode 888</title><link>https://nathannaveen.dev/posts/leetcode-888/</link><pubDate>Tue, 17 Aug 2021 12:30:29 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-888/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/fair-candy-swap/"&gt;888. Fair Candy Swap&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution can be shown using the following image:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://i.imgur.com/xhn1h9B.png" alt=""&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The Code:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;fairCandySwap&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;A&lt;/span&gt; []&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;B&lt;/span&gt; []&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;) []&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;alice&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;bob&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;m&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; make(&lt;span style="color:#66d9ef"&gt;map&lt;/span&gt;[&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;] &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;_&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;range&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;A&lt;/span&gt; { &lt;span style="color:#a6e22e"&gt;alice&lt;/span&gt; &lt;span style="color:#f92672"&gt;+=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;_&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;range&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;B&lt;/span&gt; { 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;bob&lt;/span&gt; &lt;span style="color:#f92672"&gt;+=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;m&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;]&lt;span style="color:#f92672"&gt;++&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;temp&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; (&lt;span style="color:#a6e22e"&gt;alice&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;bob&lt;/span&gt;) &lt;span style="color:#f92672"&gt;/&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;_&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;range&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;A&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;m&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;temp&lt;/span&gt;] &lt;span style="color:#f92672"&gt;&amp;gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; []&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;{&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;temp&lt;/span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; []&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;{}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Leetcode 1940</title><link>https://nathannaveen.dev/posts/leetcode-1940/</link><pubDate>Sun, 25 Jul 2021 18:33:29 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1940/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/longest-common-subsequence-between-sorted-arrays/"&gt;1940. Longest Common Subsequence Between Sorted Arrays&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;At first, I thought that this would need a nice algorithm, but then when I read the description, it said that&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;&lt;code&gt;arrays&lt;/code&gt; is sorted in &lt;strong&gt;strictly increasing&lt;/strong&gt; order&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;and&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;longest common &lt;strong&gt;subsequence&lt;/strong&gt;&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The first part, &amp;ldquo;&lt;code&gt;arrays&lt;/code&gt; is sorted in &lt;strong&gt;strictly increasing&lt;/strong&gt; order,&amp;rdquo; tells us that each array is sorted and each array has unique numbers.&lt;/p&gt;
&lt;p&gt;The second part, &amp;ldquo;longest common &lt;strong&gt;subsequence&lt;/strong&gt;&amp;rdquo; says that it is a &lt;strong&gt;subsequence&lt;/strong&gt; and not a &lt;strong&gt;subarray&lt;/strong&gt;. A &lt;strong&gt;subsequence&lt;/strong&gt; are any elements in an array with the same order, but a &lt;strong&gt;subarray&lt;/strong&gt; is contiguous elements in an array.&lt;/p&gt;</description></item><item><title>Leetcode 199</title><link>https://nathannaveen.dev/posts/leetcode-199/</link><pubDate>Sun, 25 Jul 2021 18:33:21 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-199/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/binary-tree-right-side-view/"&gt;199. Binary Tree Right Side View&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of both solutions is pretty simple, we just use BFS to iterate through all the rows and append the last element in the row (The right most element).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Iterative:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;rightSideView&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;root&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;TreeNode&lt;/span&gt;) []&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#a6e22e"&gt;res&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; []&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;{}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;root&lt;/span&gt; &lt;span style="color:#f92672"&gt;!=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;nil&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;queue&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; []&lt;span style="color:#f92672"&gt;*&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;TreeNode&lt;/span&gt;{ &lt;span style="color:#a6e22e"&gt;root&lt;/span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; len(&lt;span style="color:#a6e22e"&gt;queue&lt;/span&gt;) &lt;span style="color:#f92672"&gt;!=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;n&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; len(&lt;span style="color:#a6e22e"&gt;queue&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt; = append(&lt;span style="color:#a6e22e"&gt;res&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;queue&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;n&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;].&lt;span style="color:#a6e22e"&gt;Val&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &amp;lt; &lt;span style="color:#a6e22e"&gt;n&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;queue&lt;/span&gt;[&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;queue&lt;/span&gt; = &lt;span style="color:#a6e22e"&gt;queue&lt;/span&gt;[&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;:]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Left&lt;/span&gt; &lt;span style="color:#f92672"&gt;!=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;nil&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;queue&lt;/span&gt; = append(&lt;span style="color:#a6e22e"&gt;queue&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Left&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Right&lt;/span&gt; &lt;span style="color:#f92672"&gt;!=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;nil&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;queue&lt;/span&gt; = append(&lt;span style="color:#a6e22e"&gt;queue&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Right&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Recursive:&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Leetcode 495</title><link>https://nathannaveen.dev/posts/leetcode-495/</link><pubDate>Sun, 25 Jul 2021 18:33:13 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-495/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/teemo-attacking/"&gt;495. Teemo Attacking&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of these two solutions is pretty simple, but in the second solution, I didn&amp;rsquo;t want to use a variable to store the result, so I manipulated &lt;code&gt;timeSeries&lt;/code&gt; into storing the resulting values (Basically used DP).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The First Solution&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I first did this solution like this:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;findPoisonedDuration&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;timeSeries&lt;/span&gt; []&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;duration&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &amp;lt; len(&lt;span style="color:#a6e22e"&gt;timeSeries&lt;/span&gt;); &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;timeSeries&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;] &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;duration&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; &amp;lt; &lt;span style="color:#a6e22e"&gt;timeSeries&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;] {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt; &lt;span style="color:#f92672"&gt;+=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;duration&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; } &lt;span style="color:#66d9ef"&gt;else&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt; &lt;span style="color:#f92672"&gt;+=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;timeSeries&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;] &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;timeSeries&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; len(&lt;span style="color:#a6e22e"&gt;timeSeries&lt;/span&gt;) &lt;span style="color:#f92672"&gt;!=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt; &lt;span style="color:#f92672"&gt;+=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;duration&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;But then relised that I could make a nicer code by doing:&lt;/p&gt;</description></item><item><title>Leetcode 50</title><link>https://nathannaveen.dev/posts/leetcode-50/</link><pubDate>Sun, 25 Jul 2021 18:33:06 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-50/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/powx-n/"&gt;50. Pow(x, n)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This solution is if &lt;code&gt;n &amp;lt; 0&lt;/code&gt; (If &lt;code&gt;n&lt;/code&gt; is negative) we can return &lt;code&gt;1 / (x ^ (-n))&lt;/code&gt; (The &lt;code&gt;-n&lt;/code&gt; is for making &lt;code&gt;n&lt;/code&gt; positive). Otherwise we can just return &lt;code&gt;math.Pow(x, n)&lt;/code&gt;.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;myPow&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;x&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;float64&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;n&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;float64&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;n&lt;/span&gt; &amp;lt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; &lt;span style="color:#f92672"&gt;/&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;math&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Pow&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;x&lt;/span&gt;, float64(&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;n&lt;/span&gt;))
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;math&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Pow&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;x&lt;/span&gt;, float64(&lt;span style="color:#a6e22e"&gt;n&lt;/span&gt;))
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Technically we could do the following code and solve the problem, but that isn&amp;rsquo;t the idea of the problem because Golang takes care of test cases when &lt;code&gt;n&lt;/code&gt; is negative.&lt;/p&gt;</description></item><item><title>Leetcode 1886</title><link>https://nathannaveen.dev/posts/leetcode-1886/</link><pubDate>Sun, 25 Jul 2021 18:33:01 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1886/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/determine-whether-matrix-can-be-obtained-by-rotation/"&gt;1886. Determine Whether Matrix Can Be Obtained By Rotation&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is to loop through every point in &lt;code&gt;mat&lt;/code&gt; and check whether it has been rotated &lt;code&gt;0, 90, 180&lt;/code&gt;, or &lt;code&gt;270&lt;/code&gt; degrees.&lt;/p&gt;
&lt;p&gt;We don&amp;rsquo;t need to check whether &lt;code&gt;mat&lt;/code&gt; has been rotated by &lt;code&gt;0&lt;/code&gt; degrees the way we are doing the rest of the rotations. All we have to do is check whether &lt;code&gt;mat == target&lt;/code&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;I am going to explain how we do the rotations using some images. Usually, when using a grid in math, we will write a coordinate as &lt;code&gt;(x, y)&lt;/code&gt; but in this grid, we go &lt;code&gt;(row, col)&lt;/code&gt;, so it will be &lt;code&gt;(y, x)&lt;/code&gt;, or since we are using &lt;code&gt;j&lt;/code&gt; and &lt;code&gt;i&lt;/code&gt; &lt;code&gt;(i, j)&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Leetcode 590</title><link>https://nathannaveen.dev/posts/leetcode-590/</link><pubDate>Sun, 25 Jul 2021 18:32:55 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-590/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/n-ary-tree-postorder-traversal/"&gt;590. N-ary Tree Postorder Traversal&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The First Solution:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This solution seems pretty self-explanatory.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;postorder&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;root&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;Node&lt;/span&gt;) []&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;helper&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;root&lt;/span&gt;, []&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;{})
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;helper&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;r&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;Node&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;l&lt;/span&gt; []&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;)[]&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;r&lt;/span&gt; &lt;span style="color:#f92672"&gt;!=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;nil&lt;/span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;_&lt;/span&gt;,&lt;span style="color:#a6e22e"&gt;item&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;range&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;r&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Children&lt;/span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;l&lt;/span&gt; = &lt;span style="color:#a6e22e"&gt;helper&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;item&lt;/span&gt;,&lt;span style="color:#a6e22e"&gt;l&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;l&lt;/span&gt; = append(&lt;span style="color:#a6e22e"&gt;l&lt;/span&gt;,&lt;span style="color:#a6e22e"&gt;r&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Val&lt;/span&gt;) 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;l&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;The Second Solution:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If you look at the following code and don&amp;rsquo;t understand, it is probably because of: &lt;code&gt;r.Children[len(r.Children) - i - 1]&lt;/code&gt;, but if you look at it carefully, you will see that it is the same as reversing &lt;code&gt;r.Children&lt;/code&gt; except cleaner.&lt;/p&gt;</description></item><item><title>Leetcode 987</title><link>https://nathannaveen.dev/posts/leetcode-987/</link><pubDate>Sun, 25 Jul 2021 18:32:47 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-987/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/vertical-order-traversal-of-a-binary-tree/"&gt;987. Vertical Order Traversal of a Binary Tree&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I know that this solution is &lt;em&gt;&lt;strong&gt;very&lt;/strong&gt;&lt;/em&gt; cumbersome and annoying, so I am just going to explain what the main idea is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;We first use BFS to find every node with its row and column and store those values in an array.&lt;/li&gt;
&lt;li&gt;Then, we add all the values from the array to a matrix array which stores the nodes value and the row of the node in the position of the column.&lt;/li&gt;
&lt;li&gt;Then, we sort all the values in each array in the matrix array by either their value or row.&lt;/li&gt;
&lt;li&gt;Then we add all the values to the resulting array because we are only supposed to return a matrix array on &lt;code&gt;ints&lt;/code&gt; and not a random key which I made up (If you don&amp;rsquo;t understand about the random keys look at the solution, I have three random keys).&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;type&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;key&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;struct&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;val&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;row&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;col&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;type&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;key2&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;struct&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;node&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;TreeNode&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;row&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;col&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;type&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;key3&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;struct&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;val&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;row&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;verticalTraversal&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;root&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;TreeNode&lt;/span&gt;) [][]&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#a6e22e"&gt;res&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; [][]&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;{}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; []&lt;span style="color:#a6e22e"&gt;key&lt;/span&gt;{ &lt;span style="color:#a6e22e"&gt;key&lt;/span&gt;{ &lt;span style="color:#a6e22e"&gt;root&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Val&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; } }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;queue&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; []&lt;span style="color:#a6e22e"&gt;key2&lt;/span&gt;{ &lt;span style="color:#a6e22e"&gt;key2&lt;/span&gt;{ &lt;span style="color:#a6e22e"&gt;root&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; } }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;min&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;root&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Val&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;max&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;root&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Val&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; len(&lt;span style="color:#a6e22e"&gt;queue&lt;/span&gt;) &lt;span style="color:#f92672"&gt;!=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;n&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; len(&lt;span style="color:#a6e22e"&gt;queue&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &amp;lt; &lt;span style="color:#a6e22e"&gt;n&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;node&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;queue&lt;/span&gt;[&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;queue&lt;/span&gt; = &lt;span style="color:#a6e22e"&gt;queue&lt;/span&gt;[&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;:]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;node&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;node&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Left&lt;/span&gt; &lt;span style="color:#f92672"&gt;!=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;nil&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt; = append(&lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;key&lt;/span&gt;{ &lt;span style="color:#a6e22e"&gt;node&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;node&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Left&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Val&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;node&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;row&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;node&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;col&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; })
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;queue&lt;/span&gt; = append(&lt;span style="color:#a6e22e"&gt;queue&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;key2&lt;/span&gt;{ &lt;span style="color:#a6e22e"&gt;node&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;node&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Left&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;node&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;row&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;node&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;col&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; })
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;min&lt;/span&gt; = int(&lt;span style="color:#a6e22e"&gt;math&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Min&lt;/span&gt;(float64(&lt;span style="color:#a6e22e"&gt;node&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;col&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;), float64(&lt;span style="color:#a6e22e"&gt;min&lt;/span&gt;)))
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;node&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;node&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Right&lt;/span&gt; &lt;span style="color:#f92672"&gt;!=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;nil&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt; = append(&lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;key&lt;/span&gt;{ &lt;span style="color:#a6e22e"&gt;node&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;node&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Right&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Val&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;node&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;row&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;node&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;col&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; })
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;queue&lt;/span&gt; = append(&lt;span style="color:#a6e22e"&gt;queue&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;key2&lt;/span&gt;{ &lt;span style="color:#a6e22e"&gt;node&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;node&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Right&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;node&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;row&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;node&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;col&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; })
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;max&lt;/span&gt; = int(&lt;span style="color:#a6e22e"&gt;math&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Max&lt;/span&gt;(float64(&lt;span style="color:#a6e22e"&gt;node&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;col&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;), float64(&lt;span style="color:#a6e22e"&gt;max&lt;/span&gt;)))
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;arr2&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; make([][]&lt;span style="color:#a6e22e"&gt;key3&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;max&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;min&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;_&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;range&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;arr2&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;col&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;min&lt;/span&gt;] = append(&lt;span style="color:#a6e22e"&gt;arr2&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;col&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;min&lt;/span&gt;], &lt;span style="color:#a6e22e"&gt;key3&lt;/span&gt;{&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;val&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;row&lt;/span&gt;})
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;_&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;k&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;range&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;arr2&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;arr3&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; []&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;{}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;sort&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Slice&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;k&lt;/span&gt;, &lt;span style="color:#66d9ef"&gt;func&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;bool&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;k&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;].&lt;span style="color:#a6e22e"&gt;row&lt;/span&gt; &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;k&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;].&lt;span style="color:#a6e22e"&gt;row&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;k&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;].&lt;span style="color:#a6e22e"&gt;val&lt;/span&gt; &amp;lt; &lt;span style="color:#a6e22e"&gt;k&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;].&lt;span style="color:#a6e22e"&gt;val&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;k&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;].&lt;span style="color:#a6e22e"&gt;row&lt;/span&gt; &amp;lt; &lt;span style="color:#a6e22e"&gt;k&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;].&lt;span style="color:#a6e22e"&gt;row&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; })
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;_&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;range&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;k&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;arr3&lt;/span&gt; = append(&lt;span style="color:#a6e22e"&gt;arr3&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;val&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt; = append(&lt;span style="color:#a6e22e"&gt;res&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;arr3&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;counter&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; len(&lt;span style="color:#a6e22e"&gt;res&lt;/span&gt;[len(&lt;span style="color:#a6e22e"&gt;res&lt;/span&gt;) &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;counter&lt;/span&gt;]) &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; len(&lt;span style="color:#a6e22e"&gt;res&lt;/span&gt;[len(&lt;span style="color:#a6e22e"&gt;res&lt;/span&gt;) &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;counter&lt;/span&gt;]) &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;counter&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;continue&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;break&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt;[:len(&lt;span style="color:#a6e22e"&gt;res&lt;/span&gt;) &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;counter&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Leetcode 1559</title><link>https://nathannaveen.dev/posts/leetcode-1559/</link><pubDate>Tue, 06 Jul 2021 18:32:45 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1559/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/detect-cycles-in-2d-grid/"&gt;1559. Detect Cycles in 2D Grid&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea for this solution is to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Find a backward L shape in the matrix. (Don&amp;rsquo;t worry if you don&amp;rsquo;t understand I will come back to it later)&lt;/li&gt;
&lt;li&gt;Then check whether the cycle all starts from one position. (I will also come back to this later)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For this solution, I am going to explain how it works using an example:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://i.imgur.com/8rU2sDU.jpg" alt=""&gt;&lt;/p&gt;
&lt;p&gt;If you look at the problem, you might see this example already there, I picked this example because we know the answer:&lt;/p&gt;</description></item><item><title>Leetcode 759</title><link>https://nathannaveen.dev/posts/leetcode-759/</link><pubDate>Tue, 06 Jul 2021 18:25:36 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-759/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/employee-free-time/"&gt;759. Employee Free Time&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is pretty simple:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;We add everyone&amp;rsquo;s intervals into an array of intervals called &lt;code&gt;arr&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Then, we sort &lt;code&gt;arr&lt;/code&gt; by their start values.&lt;/li&gt;
&lt;li&gt;Then when we loop through &lt;code&gt;arr&lt;/code&gt;:
&lt;ul&gt;
&lt;li&gt;If the end of the current element is smaller than the following elements start, we know that we have no overlap.&lt;/li&gt;
&lt;li&gt;Else if, the current elements end value is greater than the following elements start and the next elements end value, we know that the current elements time frame surrounds the following elements time frame.&lt;/li&gt;
&lt;li&gt;And if the current element&amp;rsquo;s end value is greater than the next element&amp;rsquo;s start value, we can merge the two intervals.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;employeeFreeTime&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;schedule&lt;/span&gt; [][]&lt;span style="color:#f92672"&gt;*&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;Interval&lt;/span&gt;) []&lt;span style="color:#f92672"&gt;*&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;Interval&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; []&lt;span style="color:#f92672"&gt;*&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;Interval&lt;/span&gt;{}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; []&lt;span style="color:#f92672"&gt;*&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;Interval&lt;/span&gt;{}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;_&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;ints&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;range&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;schedule&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;_&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;range&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;ints&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt; = append(&lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;sort&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Slice&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt;, &lt;span style="color:#66d9ef"&gt;func&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;bool&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;].&lt;span style="color:#a6e22e"&gt;Start&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;].&lt;span style="color:#a6e22e"&gt;Start&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; })
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &amp;lt; len(&lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt;) &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;].&lt;span style="color:#a6e22e"&gt;End&lt;/span&gt; &amp;lt; &lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;].&lt;span style="color:#a6e22e"&gt;Start&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;continue&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;].&lt;span style="color:#a6e22e"&gt;End&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;].&lt;span style="color:#a6e22e"&gt;End&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt; = append(&lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt;[:&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;], &lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;:]&lt;span style="color:#f92672"&gt;...&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; } &lt;span style="color:#66d9ef"&gt;else&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;].&lt;span style="color:#a6e22e"&gt;End&lt;/span&gt; = &lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;].&lt;span style="color:#a6e22e"&gt;End&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt; = append(&lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt;[:&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;], &lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;212&lt;/span&gt;:]&lt;span style="color:#f92672"&gt;...&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;&lt;span style="color:#f92672"&gt;--&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &amp;lt; len(&lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt;) &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt; = append(&lt;span style="color:#a6e22e"&gt;res&lt;/span&gt;, &lt;span style="color:#f92672"&gt;&amp;amp;&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;Interval&lt;/span&gt;{ &lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;].&lt;span style="color:#a6e22e"&gt;End&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;].&lt;span style="color:#a6e22e"&gt;Start&lt;/span&gt; })
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Leetcode 1913</title><link>https://nathannaveen.dev/posts/leetcode-1913/</link><pubDate>Tue, 06 Jul 2021 18:25:29 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1913/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/maximum-product-difference-between-two-pairs/"&gt;1913. Maximum Product Difference Between Two Pairs&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;For this solution, we have to get the maximum &lt;em&gt;Product Difference&lt;/em&gt; and to do this, we have to subtract the smallest product from the largest product. So in this solution, I decided to sort &lt;code&gt;nums&lt;/code&gt; and return the max product minus the min product.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;maxProductDifference&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;nums&lt;/span&gt; []&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;sort&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Ints&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;nums&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;nums&lt;/span&gt;[len(&lt;span style="color:#a6e22e"&gt;nums&lt;/span&gt;) &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;] &lt;span style="color:#f92672"&gt;*&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;nums&lt;/span&gt;[len(&lt;span style="color:#a6e22e"&gt;nums&lt;/span&gt;) &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;] &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;nums&lt;/span&gt;[&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;] &lt;span style="color:#f92672"&gt;*&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;nums&lt;/span&gt;[&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Leetcode 817</title><link>https://nathannaveen.dev/posts/leetcode-817/</link><pubDate>Tue, 06 Jul 2021 18:25:21 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-817/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/linked-list-components/"&gt;817. Linked List Components&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;We make a map to store all the values in &lt;code&gt;nums&lt;/code&gt; because all the values in &lt;code&gt;nums&lt;/code&gt; are unordered subsets of our linked list, so finding whether &lt;code&gt;nums&lt;/code&gt; contains a value is now done in &lt;code&gt;O(1)&lt;/code&gt; time (Note that to get all the values into the map it takes &lt;code&gt;O(n)&lt;/code&gt; time).&lt;/li&gt;
&lt;li&gt;Then all we have to do is loop through our linked list and if &lt;code&gt;m&lt;/code&gt; (Our map is called &lt;code&gt;m&lt;/code&gt;) contains the current value and it doesn&amp;rsquo;t contain the previous value or the value is the head and &lt;code&gt;m&lt;/code&gt; contains the value we know that we have another component.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;numComponents&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;head&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;ListNode&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;nums&lt;/span&gt; []&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;m&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; make(&lt;span style="color:#66d9ef"&gt;map&lt;/span&gt;[&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;] &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;prev&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;head&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;cur&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;head&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;_&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;num&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;range&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;nums&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;m&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;num&lt;/span&gt;] = &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;cur&lt;/span&gt; &lt;span style="color:#f92672"&gt;!=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;nil&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;m&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;cur&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Val&lt;/span&gt;] &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; (&lt;span style="color:#a6e22e"&gt;cur&lt;/span&gt; &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;head&lt;/span&gt; &lt;span style="color:#f92672"&gt;||&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;m&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;prev&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Val&lt;/span&gt;] &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;prev&lt;/span&gt; = &lt;span style="color:#a6e22e"&gt;cur&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;cur&lt;/span&gt; = &lt;span style="color:#a6e22e"&gt;cur&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Next&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Leetcode 933</title><link>https://nathannaveen.dev/posts/leetcode-933/</link><pubDate>Tue, 06 Jul 2021 18:25:16 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-933/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/number-of-recent-calls/"&gt;933. Number of Recent Calls&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;For this solution, we have got to look at something that is said in the problem description:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;It is &lt;em&gt;&lt;strong&gt;guaranteed&lt;/strong&gt;&lt;/em&gt; that every call to ping uses a strictly larger value of &lt;code&gt;t&lt;/code&gt; than the previous call.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;So using that, we can make a variable (Which I called &lt;code&gt;k&lt;/code&gt;) and store the position of the last position of the value that is greater than or equal to &lt;code&gt;t - 3000&lt;/code&gt;. Then when we add a &lt;code&gt;t&lt;/code&gt; to an array, and we can keep adding to &lt;code&gt;k&lt;/code&gt; so we find the number of recent calls/&lt;/p&gt;</description></item><item><title>Leetcode 61</title><link>https://nathannaveen.dev/posts/leetcode-61/</link><pubDate>Tue, 06 Jul 2021 18:25:10 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-61/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/rotate-list/"&gt;61. Rotate List&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is pretty simple, and I will explain it using this image below:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://i.imgur.com/vbdeDXI.png" alt=""&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note: Before we get into what this picture represents, I want you to know that we already know the length of the linked list because the first loop in the code is for finding the length.&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The image above is from the problem description and is showing the input and output as:&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;Input: head = [1,2,3,4,5], k = 2&lt;/code&gt;
&lt;code&gt;Output: [4,5,1,2,3]&lt;/code&gt;&lt;/p&gt;</description></item><item><title>Leetcode 504</title><link>https://nathannaveen.dev/posts/leetcode-504/</link><pubDate>Tue, 06 Jul 2021 18:25:01 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-504/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/base-7/"&gt;504. Base 7&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The main idea of both solutions is to convert the number to base seven. To convert a number to base &lt;code&gt;7&lt;/code&gt; we can do something similar to converting to &lt;code&gt;base 2, 3, 4&lt;/code&gt; and so on. So if you know how to convert a number to another base you can just scroll down to the code and skip the example image.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://i.imgur.com/mEZHtJs.jpg" alt=""&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Using Math, and then returning &lt;code&gt;string(res)&lt;/code&gt;:&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Leetcode 1669</title><link>https://nathannaveen.dev/posts/leetcode-1669/</link><pubDate>Tue, 06 Jul 2021 18:24:53 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1669/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/merge-in-between-linked-lists/"&gt;1669. Merge In Between Linked Lists&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution can be explained with a simple image:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://i.imgur.com/vfhZz0X.jpg" alt=""&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;In image 1 we can see the input of &lt;code&gt;list1 = [0, 1, 2, 3, 4, 5]&lt;/code&gt;, &lt;code&gt;list2 = [10, 11, 12]&lt;/code&gt;, &lt;code&gt;a = 3&lt;/code&gt;, and &lt;code&gt;b = 4&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;We can iterate through &lt;code&gt;list2&lt;/code&gt; and store the beginning and end of the list.&lt;/li&gt;
&lt;li&gt;Then, we can iterate through &lt;code&gt;list1&lt;/code&gt; and find the pos of &lt;code&gt;a - 1&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Then, we can iterate through &lt;code&gt;list1&lt;/code&gt; and find the pos of &lt;code&gt;b + 1&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Then, the position of &lt;code&gt;a - 1&lt;/code&gt;&amp;rsquo;s next pointer should be the beginning of &lt;code&gt;list2&lt;/code&gt;, and the end of &lt;code&gt;list2&lt;/code&gt; should be pointing to the position of &lt;code&gt;b + 1&lt;/code&gt; in &lt;code&gt;list1&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;mergeInBetween&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;list1&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;ListNode&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;a&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;b&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;list2&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;ListNode&lt;/span&gt;) &lt;span style="color:#f92672"&gt;*&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;ListNode&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;counter&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;cur&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;list1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;start&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;list1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;end&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;list2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;end&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Next&lt;/span&gt; &lt;span style="color:#f92672"&gt;!=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;nil&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;end&lt;/span&gt; = &lt;span style="color:#a6e22e"&gt;end&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Next&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;cur&lt;/span&gt; &lt;span style="color:#f92672"&gt;!=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;nil&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;counter&lt;/span&gt; &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;a&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;start&lt;/span&gt; = &lt;span style="color:#a6e22e"&gt;cur&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; } &lt;span style="color:#66d9ef"&gt;else&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;counter&lt;/span&gt; &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;b&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;start&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Next&lt;/span&gt; = &lt;span style="color:#a6e22e"&gt;list2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;end&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Next&lt;/span&gt; = &lt;span style="color:#a6e22e"&gt;cur&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;break&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;counter&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;cur&lt;/span&gt; = &lt;span style="color:#a6e22e"&gt;cur&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Next&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;list1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Leetcode 55</title><link>https://nathannaveen.dev/posts/leetcode-55/</link><pubDate>Tue, 06 Jul 2021 18:24:47 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-55/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/jump-game/"&gt;55. Jump Game&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is pretty simple once you understand it.&lt;/p&gt;
&lt;p&gt;The idea of this solution is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;We get the maximum index we can go up to by getting the maximum of &lt;code&gt;i + nums[i]&lt;/code&gt; and &lt;code&gt;max&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Then, if &lt;code&gt;i&lt;/code&gt; has surpassed the maximum index, we can return &lt;code&gt;false&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Otherwise return &lt;code&gt;true&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you don&amp;rsquo;t understand why this works, look at the following example:&lt;/p&gt;
&lt;p&gt;input: &lt;code&gt;[3, 2, 1, 0, 4]&lt;/code&gt;
expected output: &lt;code&gt;false&lt;/code&gt;&lt;/p&gt;</description></item><item><title>Leetcode 280</title><link>https://nathannaveen.dev/posts/leetcode-280/</link><pubDate>Tue, 06 Jul 2021 18:24:43 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-280/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/wiggle-sort/"&gt;280. Wiggle Sort&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is pretty simple. We sort &lt;code&gt;nums&lt;/code&gt; and then keep switching the numbers, so we get the array wiggled.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;wiggleSort&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;nums&lt;/span&gt; []&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;sort&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Ints&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;nums&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &amp;lt; len(&lt;span style="color:#a6e22e"&gt;nums&lt;/span&gt;) &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;+=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;nums&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;], &lt;span style="color:#a6e22e"&gt;nums&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;] = &lt;span style="color:#a6e22e"&gt;nums&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;], &lt;span style="color:#a6e22e"&gt;nums&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Leetcode 170</title><link>https://nathannaveen.dev/posts/leetcode-170/</link><pubDate>Tue, 06 Jul 2021 18:24:38 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-170/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/two-sum-iii-data-structure-design/"&gt;170. Two Sum III - Data structure design&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I have to admit that this is not the best solution to solve this problem, but I think it is the easiest to understand. For all we do is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Append to &lt;code&gt;this.arr&lt;/code&gt; to &lt;code&gt;Add(number)&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;And use a two-pointer approach for &lt;code&gt;Find(value)&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;type&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;TwoSum&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;struct&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt; []&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;/** Initialize your data structure here. */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;Constructor&lt;/span&gt;() &lt;span style="color:#a6e22e"&gt;TwoSum&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;TwoSum&lt;/span&gt;{[]&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;{}}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;/** Add the number to an internal data structure.. */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; (&lt;span style="color:#a6e22e"&gt;this&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;TwoSum&lt;/span&gt;) &lt;span style="color:#a6e22e"&gt;Add&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;number&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;this&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt; = append(&lt;span style="color:#a6e22e"&gt;this&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;number&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;/** Find if there exists any pair of numbers which sum is equal to the value. */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; (&lt;span style="color:#a6e22e"&gt;this&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;TwoSum&lt;/span&gt;) &lt;span style="color:#a6e22e"&gt;Find&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;value&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;bool&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;sort&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Ints&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;this&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;left&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;right&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;, len(&lt;span style="color:#a6e22e"&gt;this&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt;) &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;left&lt;/span&gt; &amp;lt; &lt;span style="color:#a6e22e"&gt;right&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;this&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;left&lt;/span&gt;] &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;this&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;right&lt;/span&gt;] &amp;lt; &lt;span style="color:#a6e22e"&gt;value&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;left&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; } &lt;span style="color:#66d9ef"&gt;else&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;this&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;left&lt;/span&gt;] &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;this&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;right&lt;/span&gt;] &amp;gt; &lt;span style="color:#a6e22e"&gt;value&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;right&lt;/span&gt;&lt;span style="color:#f92672"&gt;--&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; } &lt;span style="color:#66d9ef"&gt;else&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Leetcode 1828</title><link>https://nathannaveen.dev/posts/leetcode-1828/</link><pubDate>Wed, 16 Jun 2021 11:22:53 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1828/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/queries-on-number-of-points-inside-a-circle/"&gt;1828. Queries on Number of Points Inside a Circle&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is to:&lt;/p&gt;
&lt;p&gt;loop through the &lt;code&gt;queries&lt;/code&gt; and then a nested loop to go through &lt;code&gt;points&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;After that we check whether &lt;code&gt;squared(point[0] - query[0]) + squared(point[1] - query[1]) &amp;lt;= squared(query[2])&lt;/code&gt;. This is bascily checking whether the distance between two points is smaller than or equal to the radius but edited. This image that I have drawn and wrote up explains this part: &lt;em&gt;(Note: &lt;code&gt;point[0] = x1, query[0] = x2, point[1] = y1, query[1] = y2, query[2] = radius&lt;/code&gt;)&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Leetcode 1837</title><link>https://nathannaveen.dev/posts/leetcode-1837/</link><pubDate>Wed, 16 Jun 2021 11:22:46 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1837/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/sum-of-digits-in-base-k/"&gt;1837. Sum of Digits in Base K&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Before I explain both solution I just want to say that &lt;em&gt;for me&lt;/em&gt; the first solution is not as readable as the second solution but easyer to understand (Note: I wrote the first solution before the second solution so that might be why).&lt;/p&gt;
&lt;p&gt;The first solution basicly uses the fact that &lt;code&gt;n&lt;/code&gt; only goes up to &lt;code&gt;100&lt;/code&gt; and that &lt;code&gt;k&lt;/code&gt; has a range of &lt;code&gt;2&lt;/code&gt; to &lt;code&gt;10&lt;/code&gt;&lt;/p&gt;</description></item><item><title>Leetcode 1854</title><link>https://nathannaveen.dev/posts/leetcode-1854/</link><pubDate>Wed, 16 Jun 2021 11:22:38 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1854/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/maximum-population-year/"&gt;1854. Maximum Population Year&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I first did this solution using an &lt;code&gt;O(n^2)&lt;/code&gt; approach but then tried to think about how to do it better. I couldn&amp;rsquo;t, so I looked at the discussion and saw &lt;a href="https://leetcode.com/problems/maximum-population-year/discuss/1198892/O%28n%29-Line-Sweep"&gt;votrubac solution&lt;/a&gt;. The code below is pretty similar, except I make an array of size &lt;code&gt;101&lt;/code&gt; instead of &lt;code&gt;2051&lt;/code&gt; because we only need the years from &lt;code&gt;2050&lt;/code&gt; to &lt;code&gt;1950&lt;/code&gt;.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;maximumPopulation&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;logs&lt;/span&gt; [][]&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#a6e22e"&gt;populationPerYear&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; make([]&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;101&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#a6e22e"&gt;res&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;_&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;log&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;range&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;logs&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		&lt;span style="color:#a6e22e"&gt;populationPerYear&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;log&lt;/span&gt;[&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;] &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1950&lt;/span&gt;]&lt;span style="color:#f92672"&gt;++&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		&lt;span style="color:#a6e22e"&gt;populationPerYear&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;log&lt;/span&gt;[&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;] &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1950&lt;/span&gt;]&lt;span style="color:#f92672"&gt;--&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &amp;lt; &lt;span style="color:#ae81ff"&gt;101&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		&lt;span style="color:#a6e22e"&gt;populationPerYear&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;] &lt;span style="color:#f92672"&gt;+=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;populationPerYear&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		&lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;populationPerYear&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;] &amp;gt; &lt;span style="color:#a6e22e"&gt;populationPerYear&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;res&lt;/span&gt;] {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;			&lt;span style="color:#a6e22e"&gt;res&lt;/span&gt; = &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1950&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Leetcode 1249</title><link>https://nathannaveen.dev/posts/leetcode-1249/</link><pubDate>Wed, 16 Jun 2021 11:22:30 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1249/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/minimum-remove-to-make-valid-parentheses/"&gt;1249. Minimum Remove to Make Valid Parentheses&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Loop through every character in &lt;code&gt;s&lt;/code&gt;, and:&lt;/li&gt;
&lt;li&gt;If the current character is a &lt;code&gt;'('&lt;/code&gt; add the index of the &lt;code&gt;'('&lt;/code&gt; to a stack&lt;/li&gt;
&lt;li&gt;If the current character is a &lt;code&gt;')'&lt;/code&gt;:
&lt;ul&gt;
&lt;li&gt;If the stack is not empty, we can pop off the stack&lt;/li&gt;
&lt;li&gt;If the stack is empty, remove the character from the string&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;After looping through every character, if the stack is not empty, we remove the characters at the values in the stack. We do this because the positions in the stack are there for the extra &lt;code&gt;'('&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Then we can return &lt;code&gt;s&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;minRemoveToMakeValid&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;s&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;string&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;string&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#a6e22e"&gt;stack&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; []&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;{}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &amp;lt; len(&lt;span style="color:#a6e22e"&gt;s&lt;/span&gt;); &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		&lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;s&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;] &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;(&amp;#39;&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;			&lt;span style="color:#a6e22e"&gt;stack&lt;/span&gt; = append(&lt;span style="color:#a6e22e"&gt;stack&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		} &lt;span style="color:#66d9ef"&gt;else&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;s&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;] &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;)&amp;#39;&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;			&lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; len(&lt;span style="color:#a6e22e"&gt;stack&lt;/span&gt;) &lt;span style="color:#f92672"&gt;!=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;				&lt;span style="color:#a6e22e"&gt;stack&lt;/span&gt; = &lt;span style="color:#a6e22e"&gt;stack&lt;/span&gt;[:len(&lt;span style="color:#a6e22e"&gt;stack&lt;/span&gt;)&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;			} &lt;span style="color:#66d9ef"&gt;else&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;				&lt;span style="color:#a6e22e"&gt;s&lt;/span&gt; = &lt;span style="color:#a6e22e"&gt;s&lt;/span&gt;[:&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;] &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;s&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;&lt;span style="color:#f92672"&gt;+&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;:]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;				&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;&lt;span style="color:#f92672"&gt;--&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;			}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; len(&lt;span style="color:#a6e22e"&gt;stack&lt;/span&gt;) &lt;span style="color:#f92672"&gt;!=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		&lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;stack&lt;/span&gt;[len(&lt;span style="color:#a6e22e"&gt;stack&lt;/span&gt;)&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		&lt;span style="color:#a6e22e"&gt;stack&lt;/span&gt; = &lt;span style="color:#a6e22e"&gt;stack&lt;/span&gt;[:len(&lt;span style="color:#a6e22e"&gt;stack&lt;/span&gt;)&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		&lt;span style="color:#a6e22e"&gt;s&lt;/span&gt; = &lt;span style="color:#a6e22e"&gt;s&lt;/span&gt;[:&lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;] &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;s&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;&lt;span style="color:#f92672"&gt;+&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;:]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;s&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Leetcode 48</title><link>https://nathannaveen.dev/posts/leetcode-48/</link><pubDate>Wed, 16 Jun 2021 11:22:22 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-48/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/rotate-image/"&gt;48. Rotate Image&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is first to flip the matrix, so it is upside down, and then transpose the matrix. If you don&amp;rsquo;t understand, look at the following images:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://i.imgur.com/9ZfliIg.jpg" alt=""&gt;&lt;/p&gt;
&lt;p&gt;We flip the matrix by fliping the top and bottom &lt;code&gt;len(matrix) / 2&lt;/code&gt; rows, like in this image:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://i.imgur.com/VWu6zok.jpg" alt=""&gt;&lt;/p&gt;
&lt;p&gt;And transposing the matrix is basically making &lt;code&gt;matrix[i][j] = matrix[j][i]&lt;/code&gt;, and the flips should only flip from yellow to the blue, or blue to yellow in the following image:&lt;/p&gt;</description></item><item><title>Leetcode 484</title><link>https://nathannaveen.dev/posts/leetcode-484/</link><pubDate>Wed, 16 Jun 2021 11:22:18 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-484/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/find-permutation/"&gt;484. Find Permutation&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;We get the first &lt;code&gt;n + 1&lt;/code&gt; numbers in order &lt;code&gt;[1, 2, 3, ..., n + 1]&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Then we reverse the numbers whenever we find a &lt;code&gt;'D'&lt;/code&gt;, and we reverse a whole set of numbers when we find multiple &lt;code&gt;'D'&lt;/code&gt;&amp;rsquo;s together.&lt;/li&gt;
&lt;li&gt;Then we return the array.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You might be wondering why we reverse sets of &lt;code&gt;'D'&lt;/code&gt;&amp;rsquo;s instead of just reversing every &lt;code&gt;'D'&lt;/code&gt;, it can be shown using an image:&lt;/p&gt;</description></item><item><title>Leetcode 1874</title><link>https://nathannaveen.dev/posts/leetcode-1874/</link><pubDate>Wed, 16 Jun 2021 11:22:12 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1874/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/minimize-product-sum-of-two-arrays/"&gt;1874. Minimize Product Sum of Two Arrays&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of both solutions is pretty much the same: The smallest number multiplied by the greatest number always makes the smallest sum. If you don&amp;rsquo;t understand, look at the following image:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://i.imgur.com/WKnSS11.jpg" alt=""&gt;&lt;/p&gt;
&lt;p&gt;In the image above, the top array is sorted in non-decreasing order, and the bottom array is sorted in non-increasing order. So when we multiply &lt;code&gt;nums1[i]&lt;/code&gt; and &lt;code&gt;nums2[i]&lt;/code&gt; together, we get the minimum product, and when we sum the products up, we get the minimum sum.&lt;/p&gt;</description></item><item><title>Leetcode 1403</title><link>https://nathannaveen.dev/posts/leetcode-1403/</link><pubDate>Wed, 16 Jun 2021 11:22:07 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1403/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/minimum-subsequence-in-non-increasing-order/"&gt;1403. Minimum Subsequence in Non-Increasing Order&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is pretty simple, we first sort &lt;code&gt;nums&lt;/code&gt; in non-increasing order and then find the sum of &lt;code&gt;nums&lt;/code&gt;. After that, we can loop through &lt;code&gt;nums&lt;/code&gt; and subtract the greatest numbers in &lt;code&gt;nums&lt;/code&gt; from the total sum and add the greatest numbers in &lt;code&gt;nums&lt;/code&gt; to a different sum. And then, we append the &lt;code&gt;num&lt;/code&gt; to &lt;code&gt;res&lt;/code&gt; (the resulting function). If the other sum is greater than the total sum, we can break out of the loop and return &lt;code&gt;res&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Leetcode 944</title><link>https://nathannaveen.dev/posts/leetcode-944/</link><pubDate>Wed, 16 Jun 2021 11:21:55 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-944/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/delete-columns-to-make-sorted/"&gt;944. Delete Columns to Make Sorted&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This solution loops through every column, and then if the previous letter in the column is greater than the current letter, we know that this column can be removed.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;minDeletionSize&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;strs&lt;/span&gt; []&lt;span style="color:#66d9ef"&gt;string&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#a6e22e"&gt;res&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &amp;lt; len(&lt;span style="color:#a6e22e"&gt;strs&lt;/span&gt;[&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;]); &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		&lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt; &amp;lt; len(&lt;span style="color:#a6e22e"&gt;strs&lt;/span&gt;); &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;			&lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;strs&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;][&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;] &amp;lt; &lt;span style="color:#a6e22e"&gt;strs&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;][&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;] {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;				&lt;span style="color:#a6e22e"&gt;res&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;				&lt;span style="color:#66d9ef"&gt;break&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;			}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Leetcode 1689</title><link>https://nathannaveen.dev/posts/leetcode-1689/</link><pubDate>Wed, 16 Jun 2021 11:21:37 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1689/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/partitioning-into-minimum-number-of-deci-binary-numbers/"&gt;1689. Partitioning Into Minimum Number Of Deci-Binary Numbers&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is that the max digit in &lt;code&gt;n&lt;/code&gt; will be the result. But you might be wondering why this works.&lt;/p&gt;
&lt;p&gt;This works because the max digit can only be made by adding the max digit number of &lt;code&gt;1&lt;/code&gt;&amp;rsquo;s. If you don&amp;rsquo;t understand, look at the following image: &lt;img src="https://i.imgur.com/yqqbNtu.jpg" alt=""&gt; The first image is an example, and the second example is for anyone who doesn&amp;rsquo;t understand the first example.&lt;/p&gt;</description></item><item><title>Leetcode 1605</title><link>https://nathannaveen.dev/posts/leetcode-1605/</link><pubDate>Wed, 16 Jun 2021 11:21:28 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1605/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/find-valid-matrix-given-row-and-column-sums/"&gt;1605. Find Valid Matrix Given Row and Column Sums&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is pretty simple:&lt;/p&gt;
&lt;p&gt;We loop through &lt;code&gt;len(rowSum)&lt;/code&gt;, and &lt;code&gt;len(colSum)&lt;/code&gt;. We find the minimum for &lt;code&gt;colSum[j]&lt;/code&gt;, and &lt;code&gt;rowSum[i]&lt;/code&gt;, making the resulting matrix have the minimum. After that, we subtract the minimum from both &lt;code&gt;colSum[j]&lt;/code&gt;, and &lt;code&gt;rowSum[i]&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Here is an image example to help with the explanation:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://i.imgur.com/MJQGppC.jpg" alt=""&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;restoreMatrix&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;rowSum&lt;/span&gt; []&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;colSum&lt;/span&gt; []&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;) [][]&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#a6e22e"&gt;res&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; make([][]&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;, len(&lt;span style="color:#a6e22e"&gt;rowSum&lt;/span&gt;))
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &amp;lt; len(&lt;span style="color:#a6e22e"&gt;rowSum&lt;/span&gt;); &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		&lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; make([]&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;, len(&lt;span style="color:#a6e22e"&gt;colSum&lt;/span&gt;))
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		&lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt; &amp;lt; len(&lt;span style="color:#a6e22e"&gt;colSum&lt;/span&gt;); &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;			&lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;] = &lt;span style="color:#a6e22e"&gt;colSum&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;			&lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;colSum&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;] &amp;gt; &lt;span style="color:#a6e22e"&gt;rowSum&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;] {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;				&lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;] = &lt;span style="color:#a6e22e"&gt;rowSum&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;			}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;			&lt;span style="color:#a6e22e"&gt;rowSum&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;], &lt;span style="color:#a6e22e"&gt;colSum&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;] = &lt;span style="color:#a6e22e"&gt;rowSum&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;] &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;], &lt;span style="color:#a6e22e"&gt;colSum&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;] &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		&lt;span style="color:#a6e22e"&gt;res&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;] = &lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Leetcode 406</title><link>https://nathannaveen.dev/posts/leetcode-406/</link><pubDate>Wed, 16 Jun 2021 11:21:17 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-406/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/queue-reconstruction-by-height/"&gt;406. Queue Reconstruction by Height&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The idea of this solution is to:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;sort &lt;code&gt;people&lt;/code&gt;&amp;rsquo;s height in non-decreasing order, and when two people have the same height, we sort their &lt;code&gt;k&lt;/code&gt;th place in non-increasing order.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;And then we add the following person to the resulting array in the &lt;code&gt;kth&lt;/code&gt; vacant position (zero-indexed), like in this image: &lt;img src="https://i.imgur.com/Yfh5FzY.jpg" alt=""&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;As you can see in row &lt;code&gt;1&lt;/code&gt;, &lt;code&gt;k = 4&lt;/code&gt;, so we add the person of height &lt;code&gt;4&lt;/code&gt; into res at position &lt;code&gt;4&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Then we can see that in row &lt;code&gt;2&lt;/code&gt; &lt;code&gt;k = 2&lt;/code&gt;, so we add the second person to position &lt;code&gt;2&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Then in the 3ed row, we can see that &lt;code&gt;k = 0&lt;/code&gt;, so we add it to position &lt;code&gt;0&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;In the &lt;code&gt;4&lt;/code&gt;th row, we can see that person &lt;code&gt;4&lt;/code&gt; has &lt;code&gt;k = 1&lt;/code&gt;, but is in the &lt;code&gt;3&lt;/code&gt;ed position. This is because in the empty spaces left, we had &lt;code&gt;empties = [1, 3, 5]&lt;/code&gt;, and &lt;code&gt;empties[1] = 3&lt;/code&gt;, adding person &lt;code&gt;4&lt;/code&gt; to the &lt;code&gt;3&lt;/code&gt;ed position.&lt;/li&gt;
&lt;li&gt;In the &lt;code&gt;5&lt;/code&gt;th row, we can see that &lt;code&gt;k = 1&lt;/code&gt;, but the person is in the &lt;code&gt;5&lt;/code&gt;th position. Just like in the &lt;code&gt;4&lt;/code&gt;th row, we only have a limited amount of empty places, and &lt;code&gt;5&lt;/code&gt;th is the &lt;code&gt;1&lt;/code&gt;st one we find (zero-indexed).&lt;/li&gt;
&lt;li&gt;In the sixth row, we can see that the last space available is at position &lt;code&gt;1&lt;/code&gt;, but since it is the only empty and &lt;code&gt;k = 0&lt;/code&gt;, we can add it to the position.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Quick walkthrough on how this code works:&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Leetcode 1338</title><link>https://nathannaveen.dev/posts/leetcode-1338/</link><pubDate>Wed, 16 Jun 2021 11:21:07 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1338/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/reduce-array-size-to-the-half/"&gt;1338. Reduce Array Size to The Half&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of the first solution is to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Find the frequency of all values in &lt;code&gt;arr&lt;/code&gt; using a map called &lt;code&gt;m&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Then add all the values of &lt;code&gt;m&lt;/code&gt; to an array called &lt;code&gt;h&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Then reverse sort &lt;code&gt;h&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Then loop through &lt;code&gt;h&lt;/code&gt;, and subtract the maximum frequencies to be removing the minimum number of integers. While subtracting check whether &lt;code&gt;n &amp;lt;= len(arr) / 2&lt;/code&gt; if so return &lt;code&gt;i + 1&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;The Code:&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Leetcode 1663</title><link>https://nathannaveen.dev/posts/leetcode-1663/</link><pubDate>Wed, 16 Jun 2021 11:21:00 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1663/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/smallest-string-with-a-given-numeric-value/"&gt;1663. Smallest String With A Given Numeric Value&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This solution aims to make all the characters equal &lt;code&gt;'a'&lt;/code&gt; to start with, and then subtract &lt;code&gt;n&lt;/code&gt; from &lt;code&gt;k&lt;/code&gt; because we have added &lt;code&gt;n&lt;/code&gt; amount of &lt;code&gt;'a'&lt;/code&gt;&amp;rsquo;s. After that, we can keep removing &lt;code&gt;'z'&lt;/code&gt;&amp;rsquo;s until &lt;code&gt;k &amp;gt; 25&lt;/code&gt;, then we can remove the letter with an ASCII of &lt;code&gt;k + 'a'&lt;/code&gt;.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;getSmallestString&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;n&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;k&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;string&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#a6e22e"&gt;k&lt;/span&gt; &lt;span style="color:#f92672"&gt;-=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;n&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#a6e22e"&gt;res&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; make([]&lt;span style="color:#66d9ef"&gt;string&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;n&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &amp;lt; &lt;span style="color:#a6e22e"&gt;n&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		&lt;span style="color:#a6e22e"&gt;res&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;] = &lt;span style="color:#e6db74"&gt;&amp;#34;a&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; len(&lt;span style="color:#a6e22e"&gt;res&lt;/span&gt;) &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;&lt;span style="color:#f92672"&gt;--&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		&lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;k&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;25&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;			&lt;span style="color:#a6e22e"&gt;res&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;] = string(&lt;span style="color:#a6e22e"&gt;k&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;a&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;			&lt;span style="color:#66d9ef"&gt;break&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		} &lt;span style="color:#66d9ef"&gt;else&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;			&lt;span style="color:#a6e22e"&gt;res&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;] = &lt;span style="color:#e6db74"&gt;&amp;#34;z&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;			&lt;span style="color:#a6e22e"&gt;k&lt;/span&gt; &lt;span style="color:#f92672"&gt;-=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;25&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;strings&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Join&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;res&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;We can edit this solution by removing the first loop and merging it into the second:&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Leetcode 1154</title><link>https://nathannaveen.dev/posts/leetcode-1154/</link><pubDate>Wed, 16 Jun 2021 11:20:54 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1154/</guid><description>&lt;p&gt;&lt;em&gt;Note: I know that the second solution is pretty un-orthidoxed because we would have to change a lot of stuff if the input changed.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://leetcode.com/problems/day-of-the-year/"&gt;1154. Day of the Year&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How the first solution works:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The first solution is pretty simple:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;We find the year month and day &lt;em&gt;(Note: We call the day &lt;code&gt;res&lt;/code&gt; because the day is only used for adding to the result)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;We also have an array of the number of days per month&lt;/li&gt;
&lt;li&gt;Then we check whether it is a leep year, if so add &lt;code&gt;1&lt;/code&gt; day to the result.&lt;/li&gt;
&lt;li&gt;Then we loop through every month that has passed (From Jan to &lt;code&gt;month&lt;/code&gt;) and add their days to &lt;code&gt;res&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Then we can return &lt;code&gt;res&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;The First solution&lt;/strong&gt; &lt;em&gt;O(n), O(12)&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Leetcode 1880</title><link>https://nathannaveen.dev/posts/leetcode-1880/</link><pubDate>Wed, 16 Jun 2021 11:19:46 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1880/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/check-if-word-equals-summation-of-two-words/"&gt;1880. Check if Word Equals Summation of Two Words&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The idea of the first solution is:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;We loop through every word and add the &lt;code&gt;string(letter - '1')&lt;/code&gt; (basically add the string of the letter made into a number).&lt;/li&gt;
&lt;li&gt;Then we make that string into a number and check whether &lt;code&gt;temp + temp2 == tempRes&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;The First Code:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;isSumEqual&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;firstWord&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;string&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;secondWord&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;string&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;targetWord&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;string&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;bool&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#a6e22e"&gt;first&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;second&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;_&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;letter&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;range&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;firstWord&lt;/span&gt; { &lt;span style="color:#a6e22e"&gt;first&lt;/span&gt; &lt;span style="color:#f92672"&gt;+=&lt;/span&gt; string(&lt;span style="color:#a6e22e"&gt;letter&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;0&amp;#39;&lt;/span&gt;) }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;_&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;letter&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;range&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;secondWord&lt;/span&gt; { &lt;span style="color:#a6e22e"&gt;second&lt;/span&gt; &lt;span style="color:#f92672"&gt;+=&lt;/span&gt; string(&lt;span style="color:#a6e22e"&gt;letter&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;0&amp;#39;&lt;/span&gt;) }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;_&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;letter&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;range&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;targetWord&lt;/span&gt; { &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt; &lt;span style="color:#f92672"&gt;+=&lt;/span&gt; string(&lt;span style="color:#a6e22e"&gt;letter&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;0&amp;#39;&lt;/span&gt;) }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#a6e22e"&gt;temp&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;_&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;strconv&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Atoi&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;first&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#a6e22e"&gt;temp2&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;_&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;strconv&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Atoi&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;second&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#a6e22e"&gt;tempRes&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;_&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;strconv&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Atoi&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;res&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;temp&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;temp2&lt;/span&gt; &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;tempRes&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;The idea of the second solution is:&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Leetcode 1318</title><link>https://nathannaveen.dev/posts/leetcode-1318/</link><pubDate>Wed, 16 Jun 2021 11:19:38 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1318/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/minimum-flips-to-make-a-or-b-equal-to-c/"&gt;1318. Minimum Flips to Make a OR b Equal to c&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is pretty simple because getting &lt;code&gt;a || b == c&lt;/code&gt; means that:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If the last bit of &lt;code&gt;c&lt;/code&gt; is &lt;code&gt;1&lt;/code&gt;:
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;a&lt;/code&gt; can be either &lt;code&gt;1&lt;/code&gt; if &lt;code&gt;b&lt;/code&gt; is &lt;code&gt;1&lt;/code&gt; or &lt;code&gt;b&lt;/code&gt; is &lt;code&gt;0&lt;/code&gt;, or &lt;code&gt;0&lt;/code&gt; if &lt;code&gt;b&lt;/code&gt; is &lt;code&gt;1&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Else if the last bit of &lt;code&gt;c&lt;/code&gt; is &lt;code&gt;0&lt;/code&gt;:
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;a&lt;/code&gt; and &lt;code&gt;b&lt;/code&gt; have to be &lt;code&gt;0&lt;/code&gt; because &lt;code&gt;0 || 0 == 0&lt;/code&gt; is the only case which &lt;code&gt;== 0&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here is an example of what we do in the code:&lt;/p&gt;</description></item><item><title>Leetcode 1858</title><link>https://nathannaveen.dev/posts/leetcode-1858/</link><pubDate>Mon, 17 May 2021 09:50:59 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1858/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/longest-word-with-all-prefixes/"&gt;1858. Longest Word With All Prefixes&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This solution aims to sort &lt;code&gt;words&lt;/code&gt; so we get the previous prefix of the max word before the word. An example of this could be&lt;/p&gt;
&lt;p&gt;&lt;code&gt;words = [&amp;quot;k&amp;quot;, &amp;quot;kiran&amp;quot;,&amp;quot;ki&amp;quot;,&amp;quot;kira&amp;quot;,&amp;quot;kir&amp;quot;]&lt;/code&gt;
and when we sort, it becomes &lt;code&gt;words = [&amp;quot;k&amp;quot;,&amp;quot;ki&amp;quot;,&amp;quot;kir&amp;quot;,&amp;quot;kira&amp;quot;, &amp;quot;kiran&amp;quot;]&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Then we can use a map to build up the word. If the &lt;code&gt;len(word)&lt;/code&gt; is equal to &lt;code&gt;1&lt;/code&gt;, we know that it is a start of a word, or if the map contains &lt;code&gt;word&lt;/code&gt; without the last letter, we know that there is the prefix of the word. So if either of these statements we know, we should add the word to the map and make the result the &lt;code&gt;max(word, res)&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Leetcode 1816</title><link>https://nathannaveen.dev/posts/leetcode-1816/</link><pubDate>Mon, 17 May 2021 09:50:53 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1816/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/truncate-sentence/"&gt;1816. Truncate Sentence&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Since the solution wants us to return the first &lt;code&gt;k&lt;/code&gt; words&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;We can split the words&lt;/li&gt;
&lt;li&gt;Then we can return the the first &lt;code&gt;k&lt;/code&gt; words joined together seperated by spaces.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;The Solution&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;truncateSentence&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;s&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;string&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;k&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;string&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;strings&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Join&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;strings&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Split&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;s&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34; &amp;#34;&lt;/span&gt;)[:&lt;span style="color:#a6e22e"&gt;k&lt;/span&gt;], &lt;span style="color:#e6db74"&gt;&amp;#34; &amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Edited Solution for readability&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;truncateSentence&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;s&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;string&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;k&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;string&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;strings&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Split&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;s&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34; &amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;strings&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Join&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt;[:&lt;span style="color:#a6e22e"&gt;k&lt;/span&gt;], &lt;span style="color:#e6db74"&gt;&amp;#34; &amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Leetcode 1252</title><link>https://nathannaveen.dev/posts/leetcode-1252/</link><pubDate>Mon, 17 May 2021 09:50:46 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1252/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/cells-with-odd-values-in-a-matrix/"&gt;1252. Cells with Odd Values in a Matrix&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is to use two maps, &lt;code&gt;x&lt;/code&gt;, and &lt;code&gt;y&lt;/code&gt;, and we can add all the values of indices to &lt;code&gt;x&lt;/code&gt;, and &lt;code&gt;y&lt;/code&gt; (&lt;code&gt;index[0]&lt;/code&gt; to &lt;code&gt;x&lt;/code&gt;, and &lt;code&gt;index[1]&lt;/code&gt; to &lt;code&gt;y&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;Then we can check whether all the &lt;code&gt;x&lt;/code&gt;&amp;rsquo;s plus all the &lt;code&gt;y&lt;/code&gt;&amp;rsquo;s is odd. If so, we know that we can add one to the result.&lt;/p&gt;
&lt;p&gt;If you don&amp;rsquo;t understand we can take an example:&lt;/p&gt;</description></item><item><title>Leetcode 1180</title><link>https://nathannaveen.dev/posts/leetcode-1180/</link><pubDate>Mon, 17 May 2021 09:50:40 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1180/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/count-substrings-with-only-one-distinct-letter/"&gt;1180. Count Substrings with Only One Distinct Letter&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;The idea of this solution is to use the number of consecutive letters. And to use the formula &lt;code&gt;n * (n + 1) / 2&lt;/code&gt; to find the number of valid substrings. We can use the example below to explain:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Before the example: &lt;code&gt;n * (n + 1) / 2&lt;/code&gt; is the equation for finding the sum of the first &lt;code&gt;n&lt;/code&gt; consecutive elements. The sum of the first &lt;code&gt;3&lt;/code&gt; consecutive elments is &lt;code&gt;1 + 2 + 3 = 6&lt;/code&gt;, and &lt;code&gt;3 * (3 + 1) / 2 = 3 * 4 / 2 = 12/ 2 = 6&lt;/code&gt;, Note: Use PEMDAS when calculating &lt;code&gt;n * (n + 1) / 2&lt;/code&gt;.&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Leetcode 1833</title><link>https://nathannaveen.dev/posts/leetcode-1833/</link><pubDate>Mon, 17 May 2021 09:50:14 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1833/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/maximum-ice-cream-bars/"&gt;1833. Maximum Ice Cream Bars&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;To be truthful, I think that this problem&amp;rsquo;s difficulty should be easy instead of medium.&lt;/p&gt;
&lt;p&gt;This solution aims to sort &lt;code&gt;costs&lt;/code&gt; because the maximum number of popsicles is obtained with the least price.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;maxIceCream&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;costs&lt;/span&gt; []&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;coins&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#a6e22e"&gt;sort&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Ints&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;costs&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#a6e22e"&gt;res&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;_&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;cost&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;range&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;costs&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		&lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;coins&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;cost&lt;/span&gt; &amp;lt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;			&lt;span style="color:#66d9ef"&gt;break&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		&lt;span style="color:#a6e22e"&gt;res&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		&lt;span style="color:#a6e22e"&gt;coins&lt;/span&gt; &lt;span style="color:#f92672"&gt;-=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;cost&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Leetcode 1827</title><link>https://nathannaveen.dev/posts/leetcode-1827/</link><pubDate>Mon, 17 May 2021 09:50:09 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1827/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/minimum-operations-to-make-the-array-increasing/"&gt;1827. Minimum Operations to Make the Array Increasing&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The ideas of both of the solutions are similar and simple. We know that an array is strictly increasing if the current element in the array, &lt;code&gt;nums[i]&lt;/code&gt;, is greater than the previous element &lt;code&gt;nums[i - 1]&lt;/code&gt;. So if &lt;code&gt;nums[i - 1]&lt;/code&gt; is greater than or equal to &lt;code&gt;nums[i]&lt;/code&gt; we know that we have to make &lt;code&gt;nums[i] = nums[i - 1] + 1&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Leetcode 1331</title><link>https://nathannaveen.dev/posts/leetcode-1331/</link><pubDate>Mon, 17 May 2021 09:49:56 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1331/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/rank-transform-of-an-array/"&gt;1331. Rank Transform of an Array&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Copy &lt;code&gt;arr&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Then sort the copy&lt;/li&gt;
&lt;li&gt;Then loop through the copy and add all the values and indexes of the copy to a map called &lt;code&gt;m&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Then loop through &lt;code&gt;0&lt;/code&gt; to &lt;code&gt;len(arr) - 1&lt;/code&gt;, and make &lt;code&gt;arr[i] = m[arr[i]]&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Then return &lt;code&gt;arr&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;arrayRankTransform&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt; []&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;) []&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#a6e22e"&gt;g&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; make([]&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;, len(&lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt;))
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#a6e22e"&gt;m&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; make(&lt;span style="color:#66d9ef"&gt;map&lt;/span&gt;[&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;]&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#a6e22e"&gt;counter&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	copy(&lt;span style="color:#a6e22e"&gt;g&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#a6e22e"&gt;sort&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Ints&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;g&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;range&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;g&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		&lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;g&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;] &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;g&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;] {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;			&lt;span style="color:#a6e22e"&gt;counter&lt;/span&gt; &lt;span style="color:#f92672"&gt;-=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		&lt;span style="color:#a6e22e"&gt;m&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;g&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;]] = &lt;span style="color:#a6e22e"&gt;counter&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		&lt;span style="color:#a6e22e"&gt;counter&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;range&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		&lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;] = &lt;span style="color:#a6e22e"&gt;m&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;]]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;arr&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Leetcode 36</title><link>https://nathannaveen.dev/posts/leetcode-36/</link><pubDate>Mon, 17 May 2021 09:32:30 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-36/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/valid-sudoku/"&gt;36. Valid Sudoku&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The main idea of this solution is to find the rows, columns, and squares of the numbers. By squares, I mean the nine squares in the board:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://i.imgur.com/E4LLg2d.jpg" alt=""&gt;&lt;/p&gt;
&lt;p&gt;The code goes through every position, and if the value is not a &lt;code&gt;&amp;quot;.&amp;quot;&lt;/code&gt;, we check whether the row, column, or square contains the number. If so, we can return false.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How to Calculate The Rows And Columns&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;We check whether the row or column contains the number by using primes. We assign every row and column a prime number:&lt;/p&gt;</description></item><item><title>Leetcode 958</title><link>https://nathannaveen.dev/posts/leetcode-958/</link><pubDate>Wed, 05 May 2021 15:45:43 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-958/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/check-completeness-of-a-binary-tree/"&gt;958. Check Completeness of a Binary Tree&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This solution uses the facts that:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If there is a next row, we know that the whole row has to be full&lt;/li&gt;
&lt;li&gt;If there is no next row, all the nodes have to be to the left.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you have already looked at the code, you might have seen that we check whether there is a next row by checking whether &lt;code&gt;queue[0].Left != nil&lt;/code&gt;. You might think what if &lt;code&gt;queue[0].Right != nil&lt;/code&gt; while &lt;code&gt;queue[0].Left == nil&lt;/code&gt;. This will work because if &lt;code&gt;queue[0].Right != nil&lt;/code&gt; and &lt;code&gt;queue[0].Left == nil&lt;/code&gt; we know that the row is not full if there is a next row, and if there is no next row, we know that not all nodes are to the left.&lt;/p&gt;</description></item><item><title>Leetcode 1572</title><link>https://nathannaveen.dev/posts/leetcode-1572/</link><pubDate>Wed, 05 May 2021 15:45:36 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1572/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/matrix-diagonal-sum/"&gt;1572. Matrix Diagonal Sum&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of the first solution is to add all the values in the diagonals, and if &lt;code&gt;len(mat)&lt;/code&gt; is odd, we can subtract the middle element from &lt;code&gt;res&lt;/code&gt;. You might be able to understand this solution a little more with two example images: &lt;img src="https://i.imgur.com/H0DfIpU.jpg" alt=""&gt;&lt;/p&gt;
&lt;p&gt;The idea of the second solution is to find two positions in the array (Where a position is in the format &lt;code&gt;(x, y)&lt;/code&gt;) which are on diagonals and are equal. Suppose we find those two positions, we don&amp;rsquo;t need to add the value at that position twice. If you don&amp;rsquo;t understand, look at the example image: &lt;img src="https://i.imgur.com/x98WvIl.jpg" alt=""&gt; You might be wondering why the code only compares &lt;code&gt;i&lt;/code&gt;, and &lt;code&gt;len(mat) - i - 1&lt;/code&gt;. The &lt;code&gt;len(mat) - i - 1&lt;/code&gt; is all the points on the pinkish reddish line going from the top right to the bottom left, and &lt;code&gt;i&lt;/code&gt; is all the points on the orange line that goes from the top left to the bottom right. You also might be wondering why the code doesn&amp;rsquo;t check the whole position and only &lt;code&gt;i, len(mat) - i - 1&lt;/code&gt;. It is because every time we compare two two elements they are on the same row, so the code doesn&amp;rsquo;t need to check for the row, but if the code did it would be &lt;code&gt;if i != len(mat) - i - 1 &amp;amp;&amp;amp; i == i&lt;/code&gt; (where &lt;code&gt;i&lt;/code&gt; is also the row), instead of just &lt;code&gt;if i != len(mat) - i - 1&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Leetcode 103</title><link>https://nathannaveen.dev/posts/leetcode-103/</link><pubDate>Mon, 03 May 2021 10:26:05 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-103/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/binary-tree-zigzag-level-order-traversal/"&gt;103. Binary Tree Zigzag Level Order Traversal
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is to use BFS and a variable called &lt;code&gt;fromRight&lt;/code&gt;. The &lt;code&gt;fromRight&lt;/code&gt; checks whether the current row needs to be traversed from the right. If it does, we prepend all the nodes to &lt;code&gt;temp&lt;/code&gt;.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;zigzagLevelOrder&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;root&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;TreeNode&lt;/span&gt;) [][]&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#66d9ef"&gt;var&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt; [][]&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#a6e22e"&gt;queue&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; []&lt;span style="color:#f92672"&gt;*&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;TreeNode&lt;/span&gt;{&lt;span style="color:#a6e22e"&gt;root&lt;/span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#a6e22e"&gt;fromRight&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; len(&lt;span style="color:#a6e22e"&gt;queue&lt;/span&gt;) &lt;span style="color:#f92672"&gt;!=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		&lt;span style="color:#a6e22e"&gt;temp&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; []&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;{}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		&lt;span style="color:#a6e22e"&gt;n&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; len(&lt;span style="color:#a6e22e"&gt;queue&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		&lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &amp;lt; &lt;span style="color:#a6e22e"&gt;n&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;			&lt;span style="color:#a6e22e"&gt;node&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;queue&lt;/span&gt;[&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;			&lt;span style="color:#a6e22e"&gt;queue&lt;/span&gt; = &lt;span style="color:#a6e22e"&gt;queue&lt;/span&gt;[&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;:]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;			&lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;node&lt;/span&gt; &lt;span style="color:#f92672"&gt;!=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;nil&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;				&lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;fromRight&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;					&lt;span style="color:#a6e22e"&gt;temp&lt;/span&gt; = append([]&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;{&lt;span style="color:#a6e22e"&gt;node&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Val&lt;/span&gt;}, &lt;span style="color:#a6e22e"&gt;temp&lt;/span&gt;&lt;span style="color:#f92672"&gt;...&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;				} &lt;span style="color:#66d9ef"&gt;else&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;					&lt;span style="color:#a6e22e"&gt;temp&lt;/span&gt; = append(&lt;span style="color:#a6e22e"&gt;temp&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;node&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Val&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;				}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;				&lt;span style="color:#a6e22e"&gt;queue&lt;/span&gt; = append(&lt;span style="color:#a6e22e"&gt;queue&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;node&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Left&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;				&lt;span style="color:#a6e22e"&gt;queue&lt;/span&gt; = append(&lt;span style="color:#a6e22e"&gt;queue&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;node&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Right&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;			}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		&lt;span style="color:#a6e22e"&gt;res&lt;/span&gt; = append(&lt;span style="color:#a6e22e"&gt;res&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;temp&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		&lt;span style="color:#a6e22e"&gt;fromRight&lt;/span&gt; = !&lt;span style="color:#a6e22e"&gt;fromRight&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt;[:len(&lt;span style="color:#a6e22e"&gt;res&lt;/span&gt;)&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Leetcode 1609</title><link>https://nathannaveen.dev/posts/leetcode-1609/</link><pubDate>Mon, 03 May 2021 10:17:57 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1609/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/even-odd-tree/"&gt;1609. Even Odd Tree&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The main idea of this solution is to use BFS, but the details are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;We have a counter called &lt;code&gt;row&lt;/code&gt; to count every row (We use this to check whether it is an even row or an odd row).&lt;/li&gt;
&lt;li&gt;Then we have a queue that has only the root to start.&lt;/li&gt;
&lt;li&gt;We loop while &lt;code&gt;len(queue) != 0&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Then we make a variable &lt;code&gt;n&lt;/code&gt; equal to the &lt;code&gt;len(queue)&lt;/code&gt;. We need this because the length of &lt;code&gt;queue&lt;/code&gt; changes.&lt;/li&gt;
&lt;li&gt;Then we loop from &lt;code&gt;0&lt;/code&gt; to &lt;code&gt;n - 1&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Inside the loop, we find the current node and removed it from &lt;code&gt;queue&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;The first &lt;code&gt;if&lt;/code&gt; statement is for whether the row is even. If so, and the current node&amp;rsquo;s value is even, we know we have to return &lt;code&gt;false&lt;/code&gt;. Or if the node is not the last in the row and it is greater than or equal to the following node, we know that we have to return &lt;code&gt;false&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Then we can check &lt;code&gt;if row % 2 == 1 &amp;amp;&amp;amp; (node.Val % 2 == 1 || (i2 != n - 1 &amp;amp;&amp;amp; node.Val &amp;lt;= queue[0].Val))&lt;/code&gt;. The &lt;code&gt;node.Val % 2 == 1&lt;/code&gt; is for checking whether we are on an odd numbered row. Then &lt;code&gt;node.Val % 2 == 1&lt;/code&gt; is for checking whether the current node is odd. The &lt;code&gt;i2 != n - 1 &amp;amp;&amp;amp; node.Val &amp;lt;= queue[0].Val&lt;/code&gt; is for checking whether the current node is not the last node in the row, and whether the current nodes value is smaller than or equal to the next nodes value. If any of these things happen the code returns &lt;code&gt;false&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Then we have to check whether the &lt;code&gt;node.Left&lt;/code&gt;, and the &lt;code&gt;node.Right&lt;/code&gt; are not equal to &lt;code&gt;nil&lt;/code&gt;. If so, we can append them into the queue.&lt;/li&gt;
&lt;li&gt;Outside of this loop, we do &lt;code&gt;row++&lt;/code&gt; to move onto the next row.&lt;/li&gt;
&lt;li&gt;And if the code hasn&amp;rsquo;t returned &lt;code&gt;false&lt;/code&gt; we can return &lt;code&gt;true&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;isEvenOddTree&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;root&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;TreeNode&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;bool&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#a6e22e"&gt;row&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#a6e22e"&gt;queue&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; []&lt;span style="color:#f92672"&gt;*&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;TreeNode&lt;/span&gt;{&lt;span style="color:#a6e22e"&gt;root&lt;/span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; len(&lt;span style="color:#a6e22e"&gt;queue&lt;/span&gt;) &lt;span style="color:#f92672"&gt;!=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		&lt;span style="color:#a6e22e"&gt;n&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; len(&lt;span style="color:#a6e22e"&gt;queue&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		&lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i2&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;i2&lt;/span&gt; &amp;lt; &lt;span style="color:#a6e22e"&gt;n&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;i2&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;			&lt;span style="color:#a6e22e"&gt;node&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;queue&lt;/span&gt;[&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;			&lt;span style="color:#a6e22e"&gt;queue&lt;/span&gt; = &lt;span style="color:#a6e22e"&gt;queue&lt;/span&gt;[&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;:]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;			&lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;row&lt;/span&gt; &lt;span style="color:#f92672"&gt;%&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt; &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; (&lt;span style="color:#a6e22e"&gt;node&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Val&lt;/span&gt; &lt;span style="color:#f92672"&gt;%&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt; &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; &lt;span style="color:#f92672"&gt;||&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;			(&lt;span style="color:#a6e22e"&gt;i2&lt;/span&gt; &lt;span style="color:#f92672"&gt;!=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;n&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;node&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Val&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;queue&lt;/span&gt;[&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;].&lt;span style="color:#a6e22e"&gt;Val&lt;/span&gt;)) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;			
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;				&lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;			}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;			&lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;row&lt;/span&gt; &lt;span style="color:#f92672"&gt;%&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt; &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; (&lt;span style="color:#a6e22e"&gt;node&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Val&lt;/span&gt; &lt;span style="color:#f92672"&gt;%&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt; &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; &lt;span style="color:#f92672"&gt;||&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;			(&lt;span style="color:#a6e22e"&gt;i2&lt;/span&gt; &lt;span style="color:#f92672"&gt;!=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;n&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;node&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Val&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;queue&lt;/span&gt;[&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;].&lt;span style="color:#a6e22e"&gt;Val&lt;/span&gt;)) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;			
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;				&lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;			}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;			&lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;node&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Left&lt;/span&gt; &lt;span style="color:#f92672"&gt;!=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;nil&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;				&lt;span style="color:#a6e22e"&gt;queue&lt;/span&gt; = append(&lt;span style="color:#a6e22e"&gt;queue&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;node&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Left&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;			}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;			&lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;node&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Right&lt;/span&gt; &lt;span style="color:#f92672"&gt;!=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;nil&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;				&lt;span style="color:#a6e22e"&gt;queue&lt;/span&gt; = append(&lt;span style="color:#a6e22e"&gt;queue&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;node&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Right&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;			}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		&lt;span style="color:#a6e22e"&gt;row&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Leetcode 107</title><link>https://nathannaveen.dev/posts/leetcode-107/</link><pubDate>Mon, 03 May 2021 10:17:25 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-107/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/binary-tree-level-order-traversal-ii/"&gt;107. Binary Tree Level Order Traversal II&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;First solution: faster than 100%&lt;/em&gt;
&lt;em&gt;Second solution: faster than 100%&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I put in the edited for people who don&amp;rsquo;t code in go because people who don&amp;rsquo;t code in go won&amp;rsquo;t understand &lt;code&gt;res = append(res[:0], append([][]int{temp}, res[0:]...)...)&lt;/code&gt;. So if you don&amp;rsquo;t understand the first solution look at the edited.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;First solution:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;levelOrderBottom&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;root&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;TreeNode&lt;/span&gt;) [][]&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#a6e22e"&gt;res&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; [][]&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;{}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#a6e22e"&gt;queue&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; []&lt;span style="color:#f92672"&gt;*&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;TreeNode&lt;/span&gt;{&lt;span style="color:#a6e22e"&gt;root&lt;/span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; len(&lt;span style="color:#a6e22e"&gt;queue&lt;/span&gt;) &lt;span style="color:#f92672"&gt;!=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		&lt;span style="color:#a6e22e"&gt;n&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; len(&lt;span style="color:#a6e22e"&gt;queue&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		&lt;span style="color:#a6e22e"&gt;temp&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; []&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;{}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		&lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &amp;lt; &lt;span style="color:#a6e22e"&gt;n&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;			&lt;span style="color:#a6e22e"&gt;node&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;queue&lt;/span&gt;[&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;			&lt;span style="color:#a6e22e"&gt;queue&lt;/span&gt; = &lt;span style="color:#a6e22e"&gt;queue&lt;/span&gt;[&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;:]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;			&lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;node&lt;/span&gt; &lt;span style="color:#f92672"&gt;!=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;nil&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;				&lt;span style="color:#a6e22e"&gt;temp&lt;/span&gt; = append(&lt;span style="color:#a6e22e"&gt;temp&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;node&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Val&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;				&lt;span style="color:#a6e22e"&gt;queue&lt;/span&gt; = append(&lt;span style="color:#a6e22e"&gt;queue&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;node&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Left&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;				&lt;span style="color:#a6e22e"&gt;queue&lt;/span&gt; = append(&lt;span style="color:#a6e22e"&gt;queue&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;node&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Right&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;			}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		&lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; len(&lt;span style="color:#a6e22e"&gt;temp&lt;/span&gt;) &lt;span style="color:#f92672"&gt;!=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;			&lt;span style="color:#a6e22e"&gt;res&lt;/span&gt; = append(&lt;span style="color:#a6e22e"&gt;res&lt;/span&gt;[:&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;], append([][]&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;{&lt;span style="color:#a6e22e"&gt;temp&lt;/span&gt;}, &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt;[&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;:]&lt;span style="color:#f92672"&gt;...&lt;/span&gt;)&lt;span style="color:#f92672"&gt;...&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;The edited solution:&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Leetcode 1602</title><link>https://nathannaveen.dev/posts/leetcode-1602/</link><pubDate>Mon, 03 May 2021 10:17:00 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1602/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/find-nearest-right-node-in-binary-tree/"&gt;1602. Find Nearest Right Node in Binary Tree&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is to use a queue to loop through the tree, and then for every node we loop through, we check whether the &lt;code&gt;node.Val == u.Val&lt;/code&gt;, if so, we go through the if statement &lt;code&gt;if i == n - 1&lt;/code&gt;. Using this, we know whether the node is the last. If so, we return &lt;code&gt;nil&lt;/code&gt;. Else we return the node after the current node.&lt;/p&gt;</description></item><item><title>Leetcode 1161</title><link>https://nathannaveen.dev/posts/leetcode-1161/</link><pubDate>Mon, 03 May 2021 10:16:45 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1161/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/maximum-level-sum-of-a-binary-tree/"&gt;1161. Maximum Level Sum of a Binary Tree&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What the Problem is Asking Us:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The problem is asking us to go through each level of the binary tree and find the maximum sum and make that the returned level, but if the maximum sum is on two levels, we get the minimum level of those two.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The Code:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;maxLevelSum&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;root&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;TreeNode&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;maximum&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;minLevel&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;level&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;root&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Val&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;queue&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; []&lt;span style="color:#f92672"&gt;*&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;TreeNode&lt;/span&gt;{&lt;span style="color:#a6e22e"&gt;root&lt;/span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; len(&lt;span style="color:#a6e22e"&gt;queue&lt;/span&gt;) &lt;span style="color:#f92672"&gt;!=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;sum&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;n&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;, len(&lt;span style="color:#a6e22e"&gt;queue&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &amp;lt; &lt;span style="color:#a6e22e"&gt;n&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;node&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;queue&lt;/span&gt;[&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;queue&lt;/span&gt; = &lt;span style="color:#a6e22e"&gt;queue&lt;/span&gt;[&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;:]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;sum&lt;/span&gt; &lt;span style="color:#f92672"&gt;+=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;node&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Val&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;node&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Left&lt;/span&gt; &lt;span style="color:#f92672"&gt;!=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;nil&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;queue&lt;/span&gt; = append(&lt;span style="color:#a6e22e"&gt;queue&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;node&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Left&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;node&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Right&lt;/span&gt; &lt;span style="color:#f92672"&gt;!=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;nil&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;queue&lt;/span&gt; = append(&lt;span style="color:#a6e22e"&gt;queue&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;node&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Right&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;level&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;sum&lt;/span&gt; &amp;gt; &lt;span style="color:#a6e22e"&gt;maximum&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;maximum&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;minLevel&lt;/span&gt; = &lt;span style="color:#a6e22e"&gt;sum&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;level&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;minLevel&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Leetcode 844</title><link>https://nathannaveen.dev/posts/leetcode-844/</link><pubDate>Wed, 28 Apr 2021 21:33:02 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-844/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/backspace-string-compare/"&gt;844. Backspace String Compare&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;To be truthful I am not sure whether this solution is an &lt;code&gt;O(n)&lt;/code&gt; time or a &lt;code&gt;O(2n)&lt;/code&gt; time because this code loops through &lt;code&gt;s&lt;/code&gt; then &lt;code&gt;t&lt;/code&gt;. Could someone tell me which it is?&lt;/p&gt;
&lt;p&gt;So the idea of this solution is: *Note: I will be explaining only the loop for &lt;code&gt;s&lt;/code&gt; because the loop for &lt;code&gt;s&lt;/code&gt; is pretty much the same as the loop for &lt;code&gt;t&lt;/code&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;So the code first loops from &lt;code&gt;0&lt;/code&gt; to &lt;code&gt;len(s)&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;The code checks whether &lt;code&gt;i &amp;gt; 0 &amp;amp;&amp;amp; s[i] == '#'&lt;/code&gt; because if &lt;code&gt;s[i] == '#'&lt;/code&gt; we know that we have to remove the previous element, and &lt;code&gt;i &amp;gt; 0&lt;/code&gt; is for whether there is a previous element to remove. So, if &lt;code&gt;i &amp;gt; 0 &amp;amp;&amp;amp; s[i] == '#'&lt;/code&gt; we can remove the &lt;code&gt;#&lt;/code&gt; and the previous element, then we move &lt;code&gt;i&lt;/code&gt; back by &lt;code&gt;2&lt;/code&gt; because we have removed two characters from &lt;code&gt;s&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;The else if checks whether &lt;code&gt;s[i] == '#'&lt;/code&gt;. This is for if we have to remove the previous element but there is no previous element that we can remove. So if &lt;code&gt;s[i] == '#'&lt;/code&gt; we can remove the &lt;code&gt;#&lt;/code&gt; and move &lt;code&gt;i&lt;/code&gt; back by &lt;code&gt;1&lt;/code&gt; because we removed &lt;code&gt;1&lt;/code&gt; character from &lt;code&gt;s&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you don&amp;rsquo;t understand why we are moveing &lt;code&gt;i&lt;/code&gt; back by &lt;code&gt;1&lt;/code&gt; or &lt;code&gt;2&lt;/code&gt; look at the following image:&lt;/p&gt;</description></item><item><title>Leetcode 720</title><link>https://nathannaveen.dev/posts/leetcode-720/</link><pubDate>Wed, 28 Apr 2021 21:30:47 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-720/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/longest-word-in-dictionary/"&gt;720. Longest Word in Dictionary&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is pretty simple:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The code will sort &lt;code&gt;words&lt;/code&gt;, so the minor parts we use to build the biggest words are before the built-up words. Also, since &lt;code&gt;words&lt;/code&gt; is sorted, we don&amp;rsquo;t have to worry about the &amp;ldquo;longest word with the smallest lexicographical order&amp;rdquo;; we only have to care about the &amp;ldquo;longest word&amp;rdquo; part.&lt;/li&gt;
&lt;li&gt;After that, the code will loop through &lt;code&gt;words&lt;/code&gt;.
&lt;ul&gt;
&lt;li&gt;Then, the code will check whether a map called &lt;code&gt;m&lt;/code&gt; contains the word without the last letter. We know that the current word builds onto a previous word. If the length of the current word is &lt;code&gt;1&lt;/code&gt;, we know that it is the beginning of a build.
&lt;ul&gt;
&lt;li&gt;Inside the if statement, we can check whether the length of &lt;code&gt;word&lt;/code&gt; is greater than the length of the maximum length string. If so, we can make the maximum word equal to &lt;code&gt;word&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Then, we can add &lt;code&gt;word&lt;/code&gt; to the map with a value of &lt;code&gt;1&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Then we can return &lt;code&gt;max&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;longestWord&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;words&lt;/span&gt; []&lt;span style="color:#66d9ef"&gt;string&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;string&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;sort&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Strings&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;words&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;m&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; make(&lt;span style="color:#66d9ef"&gt;map&lt;/span&gt;[&lt;span style="color:#66d9ef"&gt;string&lt;/span&gt;]&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;max&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;_&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;word&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;range&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;words&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;m&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;word&lt;/span&gt;[:len(&lt;span style="color:#a6e22e"&gt;word&lt;/span&gt;)&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;]] &lt;span style="color:#f92672"&gt;!=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; &lt;span style="color:#f92672"&gt;||&lt;/span&gt; len(&lt;span style="color:#a6e22e"&gt;word&lt;/span&gt;) &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; len(&lt;span style="color:#a6e22e"&gt;word&lt;/span&gt;) &amp;gt; len(&lt;span style="color:#a6e22e"&gt;max&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;max&lt;/span&gt; = &lt;span style="color:#a6e22e"&gt;word&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;m&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;word&lt;/span&gt;] = &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;max&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Leetcode 500</title><link>https://nathannaveen.dev/posts/leetcode-500/</link><pubDate>Wed, 28 Apr 2021 21:30:43 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-500/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/keyboard-row/"&gt;500. Keyboard Row&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I know that this code is not pretty, but the idea of the solution is pretty simple:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;We can first make a map of letters where the top rows letters are assigned to the number &lt;code&gt;0, 1, 2, 3, 4, 5, 6, 7, 8, 9&lt;/code&gt;, the middle row&amp;rsquo;s characters are assigned to the numbers &lt;code&gt;10, 11, 12, 13, 14, 15, 16, 17, 18&lt;/code&gt;, and the last rows characters are assigned to the numbers &lt;code&gt;19, 20, 21, 22, 23, 24, 25&lt;/code&gt;. We call this map &lt;code&gt;m&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;The code loops through each word where each word in &lt;code&gt;words&lt;/code&gt; is called &lt;code&gt;word&lt;/code&gt;
&lt;ul&gt;
&lt;li&gt;Note the indented are saying that this is inside the loop&lt;/li&gt;
&lt;li&gt;We make a string called &lt;code&gt;firstLetter&lt;/code&gt; and make that store the first letter. Then we make it lowercase in the following if.&lt;/li&gt;
&lt;li&gt;Then we make a variable called &lt;code&gt;row&lt;/code&gt;, &lt;code&gt;row&lt;/code&gt; is used to know which row our first key starts on, either &lt;code&gt;0&lt;/code&gt; the top row, &lt;code&gt;1&lt;/code&gt; the middle row, or &lt;code&gt;2&lt;/code&gt; the bottom row. We start with &lt;code&gt;row = 0&lt;/code&gt;, but then we check whether &lt;code&gt;m[firstLetter]&lt;/code&gt; is in the range of &lt;code&gt;10 to 18&lt;/code&gt;, or &lt;code&gt;19 to 25&lt;/code&gt;, we can check whether the number value of the key letter is in those ranges because if it is in the range &lt;code&gt;10 to 18&lt;/code&gt; we know that it is the middle row, and if it is in the range &lt;code&gt;19 to 25&lt;/code&gt; it is in the last row.&lt;/li&gt;
&lt;li&gt;Then we loop over each letter of &lt;code&gt;word&lt;/code&gt;.
&lt;ul&gt;
&lt;li&gt;Inside that loop, we make a variable called &lt;code&gt;letter&lt;/code&gt; equal to the current letter in &lt;code&gt;word&lt;/code&gt;. We are then using the following if statement to make it lowercase.&lt;/li&gt;
&lt;li&gt;Then we can check whether &lt;code&gt;row == 0&lt;/code&gt;, if so and &lt;code&gt;letters[letter]&lt;/code&gt; is not in the range of &lt;code&gt;0 to 9&lt;/code&gt; we know that the word is not on all one keyboard row.&lt;/li&gt;
&lt;li&gt;Then we can check whether &lt;code&gt;row == 1&lt;/code&gt;, if so and &lt;code&gt;letters[letter]&lt;/code&gt; is not in the range of &lt;code&gt;10 to 18&lt;/code&gt; we know that the word is not on all one keyboard row.&lt;/li&gt;
&lt;li&gt;Then we can check whether &lt;code&gt;row == 2&lt;/code&gt;, if so and &lt;code&gt;letters[letter]&lt;/code&gt; is not in the range of &lt;code&gt;19 to 25&lt;/code&gt; we know that the word is not on all one keyboard row.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;findWords&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;words&lt;/span&gt; []&lt;span style="color:#66d9ef"&gt;string&lt;/span&gt;) []&lt;span style="color:#66d9ef"&gt;string&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; []&lt;span style="color:#66d9ef"&gt;string&lt;/span&gt;{}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;letters&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; make(&lt;span style="color:#66d9ef"&gt;map&lt;/span&gt;[&lt;span style="color:#66d9ef"&gt;string&lt;/span&gt;]&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;letters&lt;/span&gt;[&lt;span style="color:#e6db74"&gt;&amp;#34;q&amp;#34;&lt;/span&gt;] = &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;letters&lt;/span&gt;[&lt;span style="color:#e6db74"&gt;&amp;#34;w&amp;#34;&lt;/span&gt;] = &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;letters&lt;/span&gt;[&lt;span style="color:#e6db74"&gt;&amp;#34;e&amp;#34;&lt;/span&gt;] = &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;letters&lt;/span&gt;[&lt;span style="color:#e6db74"&gt;&amp;#34;r&amp;#34;&lt;/span&gt;] = &lt;span style="color:#ae81ff"&gt;3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;letters&lt;/span&gt;[&lt;span style="color:#e6db74"&gt;&amp;#34;t&amp;#34;&lt;/span&gt;] = &lt;span style="color:#ae81ff"&gt;4&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;letters&lt;/span&gt;[&lt;span style="color:#e6db74"&gt;&amp;#34;y&amp;#34;&lt;/span&gt;] = &lt;span style="color:#ae81ff"&gt;5&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;letters&lt;/span&gt;[&lt;span style="color:#e6db74"&gt;&amp;#34;u&amp;#34;&lt;/span&gt;] = &lt;span style="color:#ae81ff"&gt;6&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;letters&lt;/span&gt;[&lt;span style="color:#e6db74"&gt;&amp;#34;i&amp;#34;&lt;/span&gt;] = &lt;span style="color:#ae81ff"&gt;7&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;letters&lt;/span&gt;[&lt;span style="color:#e6db74"&gt;&amp;#34;o&amp;#34;&lt;/span&gt;] = &lt;span style="color:#ae81ff"&gt;8&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;letters&lt;/span&gt;[&lt;span style="color:#e6db74"&gt;&amp;#34;p&amp;#34;&lt;/span&gt;] = &lt;span style="color:#ae81ff"&gt;9&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;letters&lt;/span&gt;[&lt;span style="color:#e6db74"&gt;&amp;#34;a&amp;#34;&lt;/span&gt;] = &lt;span style="color:#ae81ff"&gt;10&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;letters&lt;/span&gt;[&lt;span style="color:#e6db74"&gt;&amp;#34;s&amp;#34;&lt;/span&gt;] = &lt;span style="color:#ae81ff"&gt;11&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;letters&lt;/span&gt;[&lt;span style="color:#e6db74"&gt;&amp;#34;d&amp;#34;&lt;/span&gt;] = &lt;span style="color:#ae81ff"&gt;12&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;letters&lt;/span&gt;[&lt;span style="color:#e6db74"&gt;&amp;#34;f&amp;#34;&lt;/span&gt;] = &lt;span style="color:#ae81ff"&gt;13&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;letters&lt;/span&gt;[&lt;span style="color:#e6db74"&gt;&amp;#34;g&amp;#34;&lt;/span&gt;] = &lt;span style="color:#ae81ff"&gt;14&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;letters&lt;/span&gt;[&lt;span style="color:#e6db74"&gt;&amp;#34;h&amp;#34;&lt;/span&gt;] = &lt;span style="color:#ae81ff"&gt;15&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;letters&lt;/span&gt;[&lt;span style="color:#e6db74"&gt;&amp;#34;j&amp;#34;&lt;/span&gt;] = &lt;span style="color:#ae81ff"&gt;16&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;letters&lt;/span&gt;[&lt;span style="color:#e6db74"&gt;&amp;#34;k&amp;#34;&lt;/span&gt;] = &lt;span style="color:#ae81ff"&gt;17&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;letters&lt;/span&gt;[&lt;span style="color:#e6db74"&gt;&amp;#34;l&amp;#34;&lt;/span&gt;] = &lt;span style="color:#ae81ff"&gt;18&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;letters&lt;/span&gt;[&lt;span style="color:#e6db74"&gt;&amp;#34;z&amp;#34;&lt;/span&gt;] = &lt;span style="color:#ae81ff"&gt;19&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;letters&lt;/span&gt;[&lt;span style="color:#e6db74"&gt;&amp;#34;x&amp;#34;&lt;/span&gt;] = &lt;span style="color:#ae81ff"&gt;20&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;letters&lt;/span&gt;[&lt;span style="color:#e6db74"&gt;&amp;#34;c&amp;#34;&lt;/span&gt;] = &lt;span style="color:#ae81ff"&gt;21&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;letters&lt;/span&gt;[&lt;span style="color:#e6db74"&gt;&amp;#34;v&amp;#34;&lt;/span&gt;] = &lt;span style="color:#ae81ff"&gt;22&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;letters&lt;/span&gt;[&lt;span style="color:#e6db74"&gt;&amp;#34;b&amp;#34;&lt;/span&gt;] = &lt;span style="color:#ae81ff"&gt;23&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;letters&lt;/span&gt;[&lt;span style="color:#e6db74"&gt;&amp;#34;n&amp;#34;&lt;/span&gt;] = &lt;span style="color:#ae81ff"&gt;24&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;letters&lt;/span&gt;[&lt;span style="color:#e6db74"&gt;&amp;#34;m&amp;#34;&lt;/span&gt;] = &lt;span style="color:#ae81ff"&gt;25&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;_&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;word&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;range&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;words&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;shouldAddWordToRes&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;firstLetter&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; string(&lt;span style="color:#a6e22e"&gt;word&lt;/span&gt;[&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;])
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;word&lt;/span&gt;[&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;] &lt;span style="color:#f92672"&gt;&amp;lt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;90&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;word&lt;/span&gt;[&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;] &lt;span style="color:#f92672"&gt;&amp;gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;65&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;firstLetter&lt;/span&gt; = string(&lt;span style="color:#a6e22e"&gt;word&lt;/span&gt;[&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;] &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;32&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;row&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;letters&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;firstLetter&lt;/span&gt;] &lt;span style="color:#f92672"&gt;&amp;gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;10&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;letters&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;firstLetter&lt;/span&gt;] &lt;span style="color:#f92672"&gt;&amp;lt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;18&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;row&lt;/span&gt; = &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; } &lt;span style="color:#66d9ef"&gt;else&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;letters&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;firstLetter&lt;/span&gt;] &lt;span style="color:#f92672"&gt;&amp;gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;19&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;row&lt;/span&gt; = &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &amp;lt; len(&lt;span style="color:#a6e22e"&gt;word&lt;/span&gt;); &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;letter&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; string(&lt;span style="color:#a6e22e"&gt;word&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;])
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;word&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;] &lt;span style="color:#f92672"&gt;&amp;lt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;90&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;word&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;] &lt;span style="color:#f92672"&gt;&amp;gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;65&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;letter&lt;/span&gt; = string(&lt;span style="color:#a6e22e"&gt;word&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;] &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;32&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;row&lt;/span&gt; &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;letters&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;letter&lt;/span&gt;] &amp;gt; &lt;span style="color:#ae81ff"&gt;9&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;shouldAddWordToRes&lt;/span&gt; = &lt;span style="color:#66d9ef"&gt;false&lt;/span&gt;; &lt;span style="color:#66d9ef"&gt;break&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; } &lt;span style="color:#66d9ef"&gt;else&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;row&lt;/span&gt; &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; (&lt;span style="color:#a6e22e"&gt;letters&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;letter&lt;/span&gt;] &amp;lt; &lt;span style="color:#ae81ff"&gt;10&lt;/span&gt; &lt;span style="color:#f92672"&gt;||&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;letters&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;letter&lt;/span&gt;] &amp;gt; &lt;span style="color:#ae81ff"&gt;18&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;shouldAddWordToRes&lt;/span&gt; = &lt;span style="color:#66d9ef"&gt;false&lt;/span&gt;; &lt;span style="color:#66d9ef"&gt;break&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; } &lt;span style="color:#66d9ef"&gt;else&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;row&lt;/span&gt; &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;letters&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;letter&lt;/span&gt;] &amp;lt; &lt;span style="color:#ae81ff"&gt;19&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;shouldAddWordToRes&lt;/span&gt; = &lt;span style="color:#66d9ef"&gt;false&lt;/span&gt;; &lt;span style="color:#66d9ef"&gt;break&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;shouldAddWordToRes&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt; = append(&lt;span style="color:#a6e22e"&gt;res&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;word&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Leetcode 1374</title><link>https://nathannaveen.dev/posts/leetcode-1374/</link><pubDate>Mon, 26 Apr 2021 07:51:50 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1374/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/generate-a-string-with-characters-that-have-odd-counts/"&gt;1374. Generate a String With Characters That Have Odd Counts&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This solution is relatively straightforward. All it does is if &lt;code&gt;n&lt;/code&gt; is odd, we can return &lt;code&gt;n&lt;/code&gt; numbers of &lt;code&gt;'a'&lt;/code&gt;, but if &lt;code&gt;n&lt;/code&gt; is even, we can return a count of &lt;code&gt;n - 1&lt;/code&gt;, &lt;code&gt;'a'&lt;/code&gt;&amp;rsquo;s plus one &lt;code&gt;'b'&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;You might be wondering why we are doing &lt;code&gt;n&lt;/code&gt; number of &lt;code&gt;a&lt;/code&gt;&amp;rsquo;s for when &lt;code&gt;n&lt;/code&gt; is odd and &lt;code&gt;n - 1&lt;/code&gt; number of &lt;code&gt;a&lt;/code&gt;&amp;rsquo;s and a &lt;code&gt;b&lt;/code&gt; for when &lt;code&gt;n&lt;/code&gt; is even. When &lt;code&gt;n&lt;/code&gt; is odd, we can add an odd number of &lt;code&gt;a&lt;/code&gt;&amp;rsquo;s and finish the string. If &lt;code&gt;n&lt;/code&gt; is even, we can add an odd number of &lt;code&gt;a&lt;/code&gt;&amp;rsquo;s, but the number of letters is &lt;code&gt;n - 1&lt;/code&gt;, so we can add one more &lt;code&gt;b&lt;/code&gt; to finish the job.&lt;/p&gt;</description></item><item><title>Leetcode 1232</title><link>https://nathannaveen.dev/posts/leetcode-1232/</link><pubDate>Sun, 25 Apr 2021 21:15:52 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1232/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/check-if-it-is-a-straight-line/"&gt;1232. Check If It Is a Straight Line&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is we use &lt;code&gt;3&lt;/code&gt; points to find whether two slopes are equal. We can use the equation:&lt;img src="https://assets.leetcode.com/users/images/b1a5e6f1-79e2-48fd-9595-97bbc4e799b5_1619403108.4592967.jpeg" alt="image"&gt;
where &lt;code&gt;x0, x1, x2, y0, y1, y2&lt;/code&gt; are all coordinates: &lt;img src="https://assets.leetcode.com/users/images/436b4e59-b158-4901-b2fb-4865f2a5ab6a_1619403125.7176585.jpeg" alt="image"&gt;
You might not understand the equation, so we can multiply divide both sides by &lt;code&gt;(x1 - x0)&lt;/code&gt; and &lt;code&gt;(x2 - x1)&lt;/code&gt; and we can get: &lt;img src="https://assets.leetcode.com/users/images/a9321f76-d54f-4003-bed0-b772c0a5867f_1619403157.863461.jpeg" alt="image"&gt;
The equation above is based off of a familar slope equation: &lt;img src="https://assets.leetcode.com/users/images/a9f5ac94-57c1-476b-8747-e67e32b34b13_1619403182.6362567.jpeg" alt="image"&gt;
The reason we are doing the original equation instead of the where we have divided both sides by &lt;code&gt;(x1 - x0)&lt;/code&gt; and &lt;code&gt;(x2 - x1)&lt;/code&gt; is we don&amp;rsquo;t have to worry about dividing by &lt;code&gt;0&lt;/code&gt; such as when we divide both sides by &lt;code&gt;(x1 - x0)&lt;/code&gt; and &lt;code&gt;(x2 - x1)&lt;/code&gt; but &lt;code&gt;(x1 - x0) = 0&lt;/code&gt; or &lt;code&gt;(x2 - x1) = 0&lt;/code&gt; we have to contumplate what to do.&lt;/p&gt;</description></item><item><title>Leetcode 1564</title><link>https://nathannaveen.dev/posts/leetcode-1564/</link><pubDate>Sun, 25 Apr 2021 18:43:09 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1564/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/put-boxes-into-the-warehouse-i/"&gt;1564. Put Boxes Into the Warehouse I&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;We sort &lt;code&gt;boxes&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Then, we make an array called &lt;code&gt;minimums&lt;/code&gt;, and put the minimum values of &lt;code&gt;warehouse&lt;/code&gt; from left to right into the array. If you don&amp;rsquo;t understand, look at the following images: &lt;img src="https://i.imgur.com/O8cQYXz.jpg" alt=""&gt;&lt;/li&gt;
&lt;li&gt;Then we can just look from &lt;code&gt;len(minimums) - 1&lt;/code&gt; to &lt;code&gt;0&lt;/code&gt; and check whether &lt;code&gt;minimums[i] &amp;gt;= boxes[boxCounter]&lt;/code&gt; we can go to the next box, other wise we continue going through the loop until &lt;code&gt;minimums[i] &amp;gt;= boxes[boxCounter]&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Then we can return &lt;code&gt;boxCounter&lt;/code&gt; because &lt;code&gt;boxCounter = the number of boxes we have boxes we have fitted in&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;maxBoxesInWarehouse&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;boxes&lt;/span&gt; []&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;warehouse&lt;/span&gt; []&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;boxCounter&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;sort&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Ints&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;boxes&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;minimums&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; []&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;{&lt;span style="color:#a6e22e"&gt;warehouse&lt;/span&gt;[&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;]}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &amp;lt; len(&lt;span style="color:#a6e22e"&gt;warehouse&lt;/span&gt;); &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;minimums&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;] &amp;gt; &lt;span style="color:#a6e22e"&gt;warehouse&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;] {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;minimums&lt;/span&gt; = append(&lt;span style="color:#a6e22e"&gt;minimums&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;warehouse&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;])
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; } &lt;span style="color:#66d9ef"&gt;else&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;minimums&lt;/span&gt; = append(&lt;span style="color:#a6e22e"&gt;minimums&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;minimums&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;])
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; len(&lt;span style="color:#a6e22e"&gt;minimums&lt;/span&gt;) &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;&lt;span style="color:#f92672"&gt;--&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;boxCounter&lt;/span&gt; &lt;span style="color:#f92672"&gt;==&lt;/span&gt; len(&lt;span style="color:#a6e22e"&gt;boxes&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;break&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;minimums&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;] &lt;span style="color:#f92672"&gt;&amp;gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;boxes&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;boxCounter&lt;/span&gt;] {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;boxCounter&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;boxCounter&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Leetcode 1422</title><link>https://nathannaveen.dev/posts/leetcode-1422/</link><pubDate>Sun, 25 Apr 2021 11:08:11 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1422/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/maximum-score-after-splitting-a-string/"&gt;1422. Maximum Score After Splitting a String&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of the first solution is pretty simple, and the second solution is based on the first solution.&lt;/p&gt;
&lt;p&gt;The idea of the first solution is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;We loop through &lt;code&gt;s&lt;/code&gt; and add all the numbers to a counter called &lt;code&gt;numberOfOnes&lt;/code&gt; to count the number of ones. We do this by using ASCII. The ASCII of &lt;code&gt;0&lt;/code&gt; is &lt;code&gt;48&lt;/code&gt;, and the ASCII of &lt;code&gt;1&lt;/code&gt; is &lt;code&gt;49&lt;/code&gt;, so we can get the &lt;code&gt;int&lt;/code&gt; of &lt;code&gt;s[i]&lt;/code&gt; and then subtract &lt;code&gt;48&lt;/code&gt; from it to get &lt;code&gt;0&lt;/code&gt; or &lt;code&gt;1&lt;/code&gt;. If it is &lt;code&gt;0&lt;/code&gt; &lt;code&gt;s[i] = '0'&lt;/code&gt; and if it is &lt;code&gt;1&lt;/code&gt; &lt;code&gt;s[i] = '1'&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;If the first element is a &lt;code&gt;'0'&lt;/code&gt; we add one to &lt;code&gt;numberOfZeros&lt;/code&gt; and if it is a &lt;code&gt;'1'&lt;/code&gt; we can subtract one from &lt;code&gt;numberOfOnes&lt;/code&gt; because the split string starts with a substring of length &lt;code&gt;1&lt;/code&gt; on the left and a substring of length &lt;code&gt;(len(s) - 1) - 1&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Then we can loop through &lt;code&gt;1&lt;/code&gt; to &lt;code&gt;len(s) - 1&lt;/code&gt; and add one to &lt;code&gt;numberOfZeros&lt;/code&gt; or subtract one from the &lt;code&gt;numberOfOnes&lt;/code&gt;, and then check whether the &lt;code&gt;numberOfZeros + numberOfOnes&lt;/code&gt; is greater than &lt;code&gt;maximum&lt;/code&gt;, if so make &lt;code&gt;maximum&lt;/code&gt; equal to &lt;code&gt;numberOfZeros + numberOfOnes&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The idea of the second solution is: We do the same thing as the first solution, but we combine &lt;code&gt;numberOfZeros&lt;/code&gt; and &lt;code&gt;numberOfOnes&lt;/code&gt; into a variable called &lt;code&gt;sum&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Leetcode 748</title><link>https://nathannaveen.dev/posts/leetcode-748/</link><pubDate>Sun, 25 Apr 2021 11:08:04 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-748/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/shortest-completing-word/"&gt;Shortest Completing Word&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Here is how I got to this solution. I couldn&amp;rsquo;t think of any way to solve this problem without doing a naive solution, so I looked at the discussion and saw &lt;a href="https://leetcode.com/problems/shortest-completing-word/discuss/158110/Java-6ms-beats-100-PRIME-NUMBERS"&gt;jmcelvenny&amp;rsquo;s solution&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The idea of this solution is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;we get all the letters in &lt;code&gt;licensePlate&lt;/code&gt; and multiply each letter&amp;rsquo;s prime number to a variable called &lt;code&gt;product&lt;/code&gt;. We have an array of &lt;code&gt;26&lt;/code&gt; prime numbers, so each letter has its own prime number (upper case and lower case of the same letter share a prime number), such as &lt;code&gt;a : primes[0], b : primes[1], c : primes[2]&lt;/code&gt;, and &lt;code&gt;A : primes[0], B : primes[1], C : primes[2]&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;After we have multiplied all the &lt;code&gt;licensePlate&lt;/code&gt; letters prime numbers together, we multiply each word letters prime numbers together into another product.&lt;/li&gt;
&lt;li&gt;Then check whether the &lt;code&gt;newProduct % originalProduct == 0&lt;/code&gt;, and the length of the current word is smaller than the length of the shortest word. If so, make the shortest word equal to the present word.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You might be wondering why we are doing &lt;code&gt;newProduct % originalProduct == 0&lt;/code&gt;, it is because if there is a product of only prime numbers, the only divisors are the same prime numbers. So since the &lt;code&gt;originalProduct&lt;/code&gt; is the product of the primes, and &lt;code&gt;newProduct&lt;/code&gt; is also the product of primes. Since we know that prime products can only be divided by the primes the were multiplied to get the outcome, we can do &lt;code&gt;newProduct % originalProduct == 0&lt;/code&gt; because if &lt;code&gt;newProduct % originalProduct&lt;/code&gt; equals &lt;code&gt;0&lt;/code&gt; we know that &lt;code&gt;newProduct&lt;/code&gt; has all the primes of &lt;code&gt;originalProduct&lt;/code&gt;, which intern means that the current word has the letters of the license plate.&lt;/p&gt;</description></item><item><title>Leetcode 1151</title><link>https://nathannaveen.dev/posts/leetcode-1151/</link><pubDate>Thu, 22 Apr 2021 09:14:35 -0400</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1151/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/minimum-swaps-to-group-all-1s-together/"&gt;1151. Minimum Swaps to Group All 1&amp;rsquo;s Together&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;We find the number of &lt;code&gt;1&lt;/code&gt;&amp;rsquo;s.&lt;/li&gt;
&lt;li&gt;Then we know that the &lt;code&gt;1&lt;/code&gt;&amp;rsquo;s have to be in a subarray of the length of all the &lt;code&gt;1&lt;/code&gt;&amp;rsquo;s. We know that this works because the problem statement says that all the &lt;code&gt;1&lt;/code&gt;&amp;rsquo;s should be together in &lt;strong&gt;any place&lt;/strong&gt;. Since we know that all the ones should be in a substring of length the number of ones in &lt;code&gt;data&lt;/code&gt;, we just have to find the substring with the maximum number of &lt;code&gt;1&lt;/code&gt;&amp;rsquo;s in it already so, we get the minimum switches.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;minSwaps&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;data&lt;/span&gt; []&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;oneCounter&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;maximum&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;counter&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;_&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;range&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;data&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;oneCounter&lt;/span&gt; &lt;span style="color:#f92672"&gt;+=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &amp;lt; &lt;span style="color:#a6e22e"&gt;oneCounter&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;counter&lt;/span&gt; &lt;span style="color:#f92672"&gt;+=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;data&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;maximum&lt;/span&gt; = max(&lt;span style="color:#a6e22e"&gt;maximum&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;counter&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;oneCounter&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &amp;lt; len(&lt;span style="color:#a6e22e"&gt;data&lt;/span&gt;); &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;counter&lt;/span&gt; &lt;span style="color:#f92672"&gt;+=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;data&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;] &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;data&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;oneCounter&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;maximum&lt;/span&gt; = max(&lt;span style="color:#a6e22e"&gt;maximum&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;counter&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;oneCounter&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;maximum&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; max(&lt;span style="color:#a6e22e"&gt;a&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;b&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;a&lt;/span&gt; &amp;gt; &lt;span style="color:#a6e22e"&gt;b&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;a&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;b&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Leetcode 859</title><link>https://nathannaveen.dev/posts/leetcode-859/</link><pubDate>Thu, 22 Apr 2021 09:14:13 -0400</pubDate><guid>https://nathannaveen.dev/posts/leetcode-859/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/buddy-strings/"&gt;859. Buddy Strings&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;To check whether two strings are buddy strings we have to check whether:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;len(a) == len(b)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;if &lt;code&gt;a == b&lt;/code&gt;, and there is a duplicate letter in &lt;code&gt;a&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;if there are &lt;code&gt;a[j] != b[j]&lt;/code&gt; and &lt;code&gt;a[i] != b[i]&lt;/code&gt; and &lt;code&gt;a[j] == b[i]&lt;/code&gt; and &lt;code&gt;a[i] == b[j]&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;buddyStrings&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;a&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;string&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;b&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;string&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;bool&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; len(&lt;span style="color:#a6e22e"&gt;a&lt;/span&gt;) &lt;span style="color:#f92672"&gt;!=&lt;/span&gt; len(&lt;span style="color:#a6e22e"&gt;b&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;m&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; make(&lt;span style="color:#66d9ef"&gt;map&lt;/span&gt;[&lt;span style="color:#66d9ef"&gt;uint8&lt;/span&gt;]&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;temp&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;counter&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &amp;lt; len(&lt;span style="color:#a6e22e"&gt;a&lt;/span&gt;); &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;m&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;a&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;]]&lt;span style="color:#f92672"&gt;++&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;a&lt;/span&gt; &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;b&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;m&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;a&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;]] &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;a&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;] &lt;span style="color:#f92672"&gt;!=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;b&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;] {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;counter&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;temp&lt;/span&gt; &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;temp&lt;/span&gt; = &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; } &lt;span style="color:#66d9ef"&gt;else&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;a&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;temp&lt;/span&gt;] &lt;span style="color:#f92672"&gt;!=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;b&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;] &lt;span style="color:#f92672"&gt;||&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;a&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;] &lt;span style="color:#f92672"&gt;!=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;b&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;temp&lt;/span&gt;] {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;counter&lt;/span&gt; &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Leetcode 1176</title><link>https://nathannaveen.dev/posts/leetcode-1176/</link><pubDate>Mon, 19 Apr 2021 10:48:25 -0400</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1176/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/diet-plan-performance/"&gt;1176. Diet Plan Performance&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This is how the code works:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;We sum up the first &lt;code&gt;k&lt;/code&gt; elements.&lt;/li&gt;
&lt;li&gt;Then compare whether sum is greater than upper or smaller than lower.&lt;/li&gt;
&lt;li&gt;After comparing we can loop from &lt;code&gt;k&lt;/code&gt; to &lt;code&gt;len(calories)&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Then we can take off the beggining of the subarray by subtracting &lt;code&gt;calories[i - k]&lt;/code&gt;. And then we have to add the next element from the end of the subarray to the end to the subarray, we do this by adding &lt;code&gt;calories[i]&lt;/code&gt;. We can do &lt;code&gt;sum -= calories[i - k]&lt;/code&gt;, and then &lt;code&gt;sum += calories[i]&lt;/code&gt;, or we can simplify these two lines into one line, &lt;code&gt;sum -= calories[i - k] - calories[i]&lt;/code&gt; or &lt;code&gt;sum += calories[i] - calories[i - k]&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Then compare whether sum is greater than upper or smaller than lower.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;The Code:&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Leetcode 1323</title><link>https://nathannaveen.dev/posts/leetcode-1323/</link><pubDate>Mon, 19 Apr 2021 10:48:16 -0400</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1323/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/maximum-69-number/"&gt;1323. Maximum 69 Number&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This solution is pretty simple once you understand it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The idea of this solution is&lt;/strong&gt; since &lt;code&gt;9 - 6 = 3&lt;/code&gt;, so &lt;code&gt;6 + 3 = 9&lt;/code&gt;. When we add &lt;code&gt;3 * the current place value&lt;/code&gt; to &lt;code&gt;6 * the current place value&lt;/code&gt; we get &lt;code&gt;9 * the current place value&lt;/code&gt;. So if we do &lt;code&gt;60 + (3 * 10) = 90&lt;/code&gt;, &lt;code&gt;600 + (3 * 100) = 900, 6000 + (3 * 1000) = 9000&lt;/code&gt;. Now we can apply this for the current problem. We are given the number &lt;code&gt;num&lt;/code&gt;, so all we have to do is find the &lt;code&gt;6&lt;/code&gt; with the greatest place value and then multiply it by &lt;code&gt;3&lt;/code&gt;, and add &lt;code&gt;num&lt;/code&gt; to the result. This can be shown with the expretion &lt;code&gt;(6 with the greatest place value * 3) + num&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Leetcode 392</title><link>https://nathannaveen.dev/posts/leetcode-392/</link><pubDate>Mon, 19 Apr 2021 10:48:01 -0400</pubDate><guid>https://nathannaveen.dev/posts/leetcode-392/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/is-subsequence/"&gt;392. Is Subsequence&lt;/a&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;isSubsequence&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;s&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;string&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;t&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;string&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;bool&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;sCounter&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &amp;lt; len(&lt;span style="color:#a6e22e"&gt;t&lt;/span&gt;) &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;sCounter&lt;/span&gt; &amp;lt; len(&lt;span style="color:#a6e22e"&gt;s&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;t&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;] &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;s&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;sCounter&lt;/span&gt;] {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;sCounter&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;sCounter&lt;/span&gt; &lt;span style="color:#f92672"&gt;==&lt;/span&gt; len(&lt;span style="color:#a6e22e"&gt;s&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Leetcode 229</title><link>https://nathannaveen.dev/posts/leetcode-229/</link><pubDate>Sat, 17 Apr 2021 09:23:24 -0400</pubDate><guid>https://nathannaveen.dev/posts/leetcode-229/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/majority-element-ii/"&gt;229. Majority Element II&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This solution is pretty simple:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;We loop through &lt;code&gt;nums&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;We add &lt;code&gt;1&lt;/code&gt; to a map of integers called &lt;code&gt;m&lt;/code&gt;, so we add &lt;code&gt;1&lt;/code&gt; to &lt;code&gt;m[num]&lt;/code&gt; where &lt;code&gt;num&lt;/code&gt; is the current number in &lt;code&gt;nums&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Then we check whether &lt;code&gt;m[num] == len(nums) / 3 + 1&lt;/code&gt; this is checking whether the element is a majority element.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Note: We can&amp;rsquo;t do &lt;code&gt;m[num] &amp;gt;= len(nums) / 3 + 1&lt;/code&gt;. This can be shown with an example:&lt;/p&gt;</description></item><item><title>Leetcode 1100</title><link>https://nathannaveen.dev/posts/leetcode-1100/</link><pubDate>Fri, 16 Apr 2021 10:48:46 -0400</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1100/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/find-k-length-substrings-with-no-repeated-characters/"&gt;1100. Find K-Length Substrings With No Repeated Characters&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The Idea Of This Solution:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This solution aims to use a counter called &lt;code&gt;counter&lt;/code&gt; to count the number of duplicates. Also, when &lt;code&gt;counter == 0&lt;/code&gt;, the substring has no duplicates.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How This Solution Works:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;First, we make the variables &lt;code&gt;counter&lt;/code&gt;, &lt;code&gt;res&lt;/code&gt;, and &lt;code&gt;m&lt;/code&gt;. &lt;code&gt;counter&lt;/code&gt; is the duplicate counter, &lt;code&gt;res&lt;/code&gt; is the resulting number of substrings that have unique characters, and &lt;code&gt;m&lt;/code&gt; is a map that is used to find out whether a character is a duplicate.&lt;/li&gt;
&lt;li&gt;Then we loop from &lt;code&gt;0&lt;/code&gt; to &lt;code&gt;K - 1&lt;/code&gt;.
&lt;ul&gt;
&lt;li&gt;Inside that loop, we add one to &lt;code&gt;m[S[i]]&lt;/code&gt; (We are adding one to the character counter).&lt;/li&gt;
&lt;li&gt;After adding one to &lt;code&gt;m[S[i]]&lt;/code&gt; we can check whether &lt;code&gt;m[S[i]] == 2&lt;/code&gt; (We are checking whether there is a duplicate). If &lt;code&gt;m[S[i]] == 2&lt;/code&gt; we have to add one to &lt;code&gt;counter&lt;/code&gt; because &lt;code&gt;counter&lt;/code&gt; counts the number of duplicates.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;After we have done the first &lt;code&gt;K&lt;/code&gt; elements, we can check whether &lt;code&gt;counter == 0&lt;/code&gt;. If so, we can add one to &lt;code&gt;res&lt;/code&gt;. If &lt;code&gt;counter == 0&lt;/code&gt;, we know that there are no duplicates.&lt;/li&gt;
&lt;li&gt;Then we can loop from &lt;code&gt;K&lt;/code&gt; to &lt;code&gt;len(S)&lt;/code&gt;.
&lt;ul&gt;
&lt;li&gt;Inside that loop, we remove the first element of the substring from &lt;code&gt;m&lt;/code&gt;, and then we check whether &lt;code&gt;m[first letter of substring] == 1&lt;/code&gt;. If so, we can subtract &lt;code&gt;1&lt;/code&gt; from &lt;code&gt;counter&lt;/code&gt; because when the frequency of a letter is &lt;code&gt;1&lt;/code&gt;, we know that it is not a duplicate.&lt;/li&gt;
&lt;li&gt;Next, we make the letter after the end of the substring the new end of the substring and add &lt;code&gt;1&lt;/code&gt; to &lt;code&gt;m[S[i]]&lt;/code&gt;. If &lt;code&gt;m[S[i]] == 2&lt;/code&gt; we know that there is a duplicate so we add &lt;code&gt;1&lt;/code&gt; to &lt;code&gt;counter&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;After adding and subtracting from &lt;code&gt;counter&lt;/code&gt;, we can check whether &lt;code&gt;counter == 0&lt;/code&gt;. We do this because if &lt;code&gt;counter == 0&lt;/code&gt;, there are no duplicates. So if &lt;code&gt;counter == 0&lt;/code&gt; we can add &lt;code&gt;1&lt;/code&gt; to &lt;code&gt;res&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;The Code:&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Leetcode 1822</title><link>https://nathannaveen.dev/posts/leetcode-1822/</link><pubDate>Thu, 15 Apr 2021 09:40:17 -0400</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1822/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/sign-of-the-product-of-an-array/"&gt;1822. Sign of the Product of an Array&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is elementary:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If the current number in &lt;code&gt;nums&lt;/code&gt; is negative, then we can flip the sign&lt;/li&gt;
&lt;li&gt;If the current number in &lt;code&gt;nums&lt;/code&gt; is equal to &lt;code&gt;0&lt;/code&gt;, we can return &lt;code&gt;0&lt;/code&gt; because any number multiplied by &lt;code&gt;0&lt;/code&gt; is &lt;code&gt;0&lt;/code&gt;. You might think that we can check for &lt;code&gt;if num == 0&lt;/code&gt; after we have iterated, but that won&amp;rsquo;t work because we only switch the sign and don&amp;rsquo;t multiply by &lt;code&gt;0&lt;/code&gt;, so we will never know whether there is a &lt;code&gt;0&lt;/code&gt; in the array.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;arraySign&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;nums&lt;/span&gt; []&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;sign&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;_&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;num&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;range&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;nums&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;num&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;=&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;sign&lt;/span&gt; = &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;sign&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; } &lt;span style="color:#66d9ef"&gt;else&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;num&lt;/span&gt; &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;sign&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Leetcode 1800</title><link>https://nathannaveen.dev/posts/leetcode-1800/</link><pubDate>Thu, 15 Apr 2021 08:50:00 -0400</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1800/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/maximum-ascending-subarray-sum/"&gt;1800. Maximum Ascending Subarray Sum&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is pretty simple:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;We need two variables, &lt;code&gt;sum&lt;/code&gt; for the current sum of ascending values and &lt;code&gt;maximum&lt;/code&gt; for the maximum sum.&lt;/li&gt;
&lt;li&gt;Then we loop through &lt;code&gt;nums&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Inside the loop, we check whether the current number is greater than the previous number. If so, we can add the number to &lt;code&gt;sum&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Else the number is smaller than or equal to the previous number, we can make &lt;code&gt;maximum&lt;/code&gt; equal to the &lt;code&gt;math.Max(maximum, sum)&lt;/code&gt; and reset sum to the current number.&lt;/li&gt;
&lt;li&gt;After we have looped through &lt;code&gt;nums&lt;/code&gt; we can make &lt;code&gt;maximum&lt;/code&gt; equal to &lt;code&gt;math.Max(maximum, sum)&lt;/code&gt; again.&lt;/li&gt;
&lt;li&gt;Now we can return &lt;code&gt;maximum.&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;The Code:&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Leetcode 119</title><link>https://nathannaveen.dev/posts/leetcode-119/</link><pubDate>Thu, 15 Apr 2021 08:49:51 -0400</pubDate><guid>https://nathannaveen.dev/posts/leetcode-119/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/pascals-triangle-ii/"&gt;119. Pascal&amp;rsquo;s Triangle II&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I will explain the first solution.&lt;/p&gt;
&lt;p&gt;If you want to understand the second solution click on the link above the code.&lt;/p&gt;
&lt;p&gt;So the first solution only wants us to return the last row of the triangle.&lt;/p&gt;
&lt;p&gt;Since we need two rows always for this problem the current row and the previous row. In this problem &lt;code&gt;res&lt;/code&gt; is the current row and &lt;code&gt;temp&lt;/code&gt; is the previous row.&lt;/p&gt;</description></item><item><title>Leetcode 118</title><link>https://nathannaveen.dev/posts/leetcode-118/</link><pubDate>Wed, 14 Apr 2021 12:29:07 -0400</pubDate><guid>https://nathannaveen.dev/posts/leetcode-118/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/pascals-triangle/"&gt;118. Pascal&amp;rsquo;s Triangle&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is pretty simple:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;We first have a matrix array called &lt;code&gt;res&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Then we loop through &lt;code&gt;numRows&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;While iterating through &lt;code&gt;numRows&lt;/code&gt; we have to make an array called &lt;code&gt;temp&lt;/code&gt;. It is going to be our current row.&lt;/li&gt;
&lt;li&gt;We make &lt;code&gt;temp[0]&lt;/code&gt; and &lt;code&gt;temp[len(temp)]&lt;/code&gt; equal to &lt;code&gt;1&lt;/code&gt; so we get the outer &lt;code&gt;1&lt;/code&gt;&amp;rsquo;s.&lt;/li&gt;
&lt;li&gt;Then we loop through the middle elements (basically excluding the outside &lt;code&gt;1&lt;/code&gt;&amp;rsquo;s)&lt;/li&gt;
&lt;li&gt;We have to make every &lt;code&gt;temp[j]&lt;/code&gt; equal to the previous rows &lt;code&gt;previous rows[j - 1] + previous rows[j]&lt;/code&gt;. We do &lt;code&gt;j - 1&lt;/code&gt; and &lt;code&gt;j&lt;/code&gt;. If you don&amp;rsquo;t understand, why look at the image below: &lt;img src="https://i.imgur.com/KLtNp7P.png" alt=""&gt;&lt;/li&gt;
&lt;li&gt;Then we append &lt;code&gt;temp&lt;/code&gt; to &lt;code&gt;res&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;After iterating, we can return &lt;code&gt;res&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;The Code:&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Leetcode 56</title><link>https://nathannaveen.dev/posts/leetcode-56/</link><pubDate>Wed, 14 Apr 2021 09:58:31 -0400</pubDate><guid>https://nathannaveen.dev/posts/leetcode-56/</guid><description>&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;merge&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;intervals&lt;/span&gt; [][]&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;) [][]&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; [][]&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;{}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &amp;lt; len(&lt;span style="color:#a6e22e"&gt;intervals&lt;/span&gt;); &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;intervals&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;][&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;] &amp;gt; &lt;span style="color:#a6e22e"&gt;intervals&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;][&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;] {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;intervals&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;], &lt;span style="color:#a6e22e"&gt;intervals&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;] = 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;intervals&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;], &lt;span style="color:#a6e22e"&gt;intervals&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;-=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt; = append(&lt;span style="color:#a6e22e"&gt;res&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;intervals&lt;/span&gt;[&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;])
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &amp;lt; len(&lt;span style="color:#a6e22e"&gt;intervals&lt;/span&gt;); &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt;[len(&lt;span style="color:#a6e22e"&gt;res&lt;/span&gt;)&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;][&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;] &lt;span style="color:#f92672"&gt;&amp;gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;intervals&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;][&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;] {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt;[len(&lt;span style="color:#a6e22e"&gt;res&lt;/span&gt;)&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;][&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;] = 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; max(&lt;span style="color:#a6e22e"&gt;intervals&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;][&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;], &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt;[len(&lt;span style="color:#a6e22e"&gt;res&lt;/span&gt;)&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;][&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;])
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; } &lt;span style="color:#66d9ef"&gt;else&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt; = append(&lt;span style="color:#a6e22e"&gt;res&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;intervals&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;])
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; max(&lt;span style="color:#a6e22e"&gt;a&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;b&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;a&lt;/span&gt; &amp;gt; &lt;span style="color:#a6e22e"&gt;b&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;a&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;b&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Leetcode 824</title><link>https://nathannaveen.dev/posts/leetcode-824/</link><pubDate>Wed, 14 Apr 2021 09:58:25 -0400</pubDate><guid>https://nathannaveen.dev/posts/leetcode-824/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/goat-latin/"&gt;824. Goat Latin&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is actualy pretty simple. We:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;First add all the vowels to a map. We make a &lt;code&gt;a&lt;/code&gt; string where we keep on appending &lt;code&gt;&amp;quot;a&amp;quot;&lt;/code&gt; to it per word. Then we split &lt;code&gt;S&lt;/code&gt; by spaces so we get all the words in an array called &lt;code&gt;words&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Then we loop through &lt;code&gt;words&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Inside the iteration we check whether the first letter of the current word is not a vowel we can move the first letter to the end.&lt;/li&gt;
&lt;li&gt;After checking whether it is a consonant we can add &lt;code&gt;&amp;quot;ma&amp;quot; + a&lt;/code&gt; because we are supposed to add &lt;code&gt;&amp;quot;ma&amp;quot; + a&lt;/code&gt; to a word that begins with a vowel or a consonant.&lt;/li&gt;
&lt;li&gt;Then we add &lt;code&gt;&amp;quot;a&amp;quot;&lt;/code&gt; to &lt;code&gt;a&lt;/code&gt; because as the problem statment says &amp;ldquo;Add one letter &amp;lsquo;a&amp;rsquo; to the end of each word per its word index in the sentence, starting with 1.&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;The Code:&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Leetcode 252</title><link>https://nathannaveen.dev/posts/leetcode-252/</link><pubDate>Tue, 13 Apr 2021 10:11:45 -0400</pubDate><guid>https://nathannaveen.dev/posts/leetcode-252/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/meeting-rooms/"&gt;252. Meeting Rooms&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The Idea Of The Solutions:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The idea of these two solutions is pretty simple because the second solution is based on the first solution, and the first solution is pretty simple.&lt;/p&gt;
&lt;p&gt;The idea of the first solution is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;First, we sort &lt;code&gt;intervals&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Then, we check whether the previous interval&amp;rsquo;s ends intersect with the following interval&amp;rsquo;s beginning.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The idea of the second solution is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;While sorting, we check for overlaps.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As you can see, the ideas are pretty simple.&lt;/p&gt;</description></item><item><title>Leetcode 1551</title><link>https://nathannaveen.dev/posts/leetcode-1551/</link><pubDate>Sat, 10 Apr 2021 20:14:34 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1551/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/minimum-operations-to-make-array-equal/"&gt;1551. Minimum Operations to Make Array Equal&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This is a pretty simple solution once you understand the concept.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What the Problem Is Asking:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The problem gives us an array where &lt;code&gt;arr[i] = (2 * i) + 1&lt;/code&gt;, you could make an array where every &lt;code&gt;arr[i] = (2 * i) + 1&lt;/code&gt; but I am just going to tell you that this plots a sequence of odd integers. Bascily &lt;code&gt;arr[1, 3, 5 ... nth odd number]&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Leetcode 1742</title><link>https://nathannaveen.dev/posts/leetcode-1742/</link><pubDate>Sat, 10 Apr 2021 09:44:53 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1742/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/maximum-number-of-balls-in-a-box/"&gt;1742. Maximum Number of Balls in a Box&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is pretty simple:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;We use a map to store all the elements and their frequencies, and we use a variable called &lt;code&gt;maximum&lt;/code&gt; to store the maximum frequency.&lt;/li&gt;
&lt;li&gt;We loop from &lt;code&gt;lowLimit&lt;/code&gt; to &lt;code&gt;highLimit&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Inside the first loop, we make a nested loop to sum up all the digits of each number between &lt;code&gt;lowLimit&lt;/code&gt; and &lt;code&gt;highLimt&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;After we have got the sum, we do &lt;code&gt;m[sum]++&lt;/code&gt; because we have to add one to the frequency of &lt;code&gt;sum&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Then we check whether the new frequency is greater than our old &lt;code&gt;maximum&lt;/code&gt;. If so, we should make &lt;code&gt;maximum = m[sum]&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Then we return &lt;code&gt;maximum&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;countBalls&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;lowLimit&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;highLimit&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;m&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;maximum&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; make(&lt;span style="color:#66d9ef"&gt;map&lt;/span&gt;[&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;]&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;), &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;lowLimit&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;highLimit&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;n&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;sum&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;n&lt;/span&gt; &amp;gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;sum&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;n&lt;/span&gt; = &lt;span style="color:#a6e22e"&gt;sum&lt;/span&gt;&lt;span style="color:#f92672"&gt;+&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;n&lt;/span&gt; &lt;span style="color:#f92672"&gt;%&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;10&lt;/span&gt;), &lt;span style="color:#a6e22e"&gt;n&lt;/span&gt; &lt;span style="color:#f92672"&gt;/&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;10&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;m&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;sum&lt;/span&gt;]&lt;span style="color:#f92672"&gt;++&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;m&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;sum&lt;/span&gt;] &amp;gt; &lt;span style="color:#a6e22e"&gt;maximum&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;maximum&lt;/span&gt; = &lt;span style="color:#a6e22e"&gt;m&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;sum&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;maximum&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Using A &lt;code&gt;max()&lt;/code&gt; Function:&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Leetcode 1426</title><link>https://nathannaveen.dev/posts/leetcode-1426/</link><pubDate>Sat, 10 Apr 2021 09:44:48 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1426/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/counting-elements/"&gt;1426. Counting Elements&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This solution is straightforward, and the idea of this solution is we add all the values of &lt;code&gt;arr&lt;/code&gt; into a map called &lt;code&gt;m&lt;/code&gt;. All we do is check whether &lt;code&gt;m&lt;/code&gt; contains &lt;code&gt;arr[i] + 1&lt;/code&gt;. If it does, we can add one to the resulting counter.&lt;/p&gt;
&lt;p&gt;So the code:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;First, makes a map called &lt;code&gt;m&lt;/code&gt; and a variable called &lt;code&gt;res&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Then we loop through &lt;code&gt;arr&lt;/code&gt; and add all the values into &lt;code&gt;m&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Then we loop through &lt;code&gt;arr&lt;/code&gt; again, but this time check whether &lt;code&gt;m&lt;/code&gt; contains &lt;code&gt;arr[i] + 1&lt;/code&gt;, and if it does, is it greater than &lt;code&gt;0&lt;/code&gt;. If so, we can add one to &lt;code&gt;res&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Now, all we have to do is return &lt;code&gt;res&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;The Code:&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Leetcode 1071</title><link>https://nathannaveen.dev/posts/leetcode-1071/</link><pubDate>Fri, 09 Apr 2021 10:56:57 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1071/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/greatest-common-divisor-of-strings/"&gt;1071. Greatest Common Divisor of Strings
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is actually pretty simple. But before we go into the problem, we have to know that a string with a common factor has a prefix (the definition of a prefix is the beginning characters of a string, a prefix can be any length) that is repeated throughout the string. This can be shown using some examples:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;&amp;quot;abcdabcdabcd&amp;quot;&lt;/code&gt; we know that the repeated substring is &lt;code&gt;&amp;quot;abcd&amp;quot;&lt;/code&gt;, and we can see that &lt;code&gt;&amp;quot;abcd&amp;quot;&lt;/code&gt; is a prefix.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;quot;abcabcabcabc&amp;quot;&lt;/code&gt; we can see that &lt;code&gt;&amp;quot;abc&amp;quot;&lt;/code&gt; is the repeated substring, and we can see that &lt;code&gt;&amp;quot;abc&amp;quot;&lt;/code&gt; is the prefix.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So the idea of this solution is:&lt;/p&gt;</description></item><item><title>Leetcode 892</title><link>https://nathannaveen.dev/posts/leetcode-892/</link><pubDate>Fri, 09 Apr 2021 10:56:50 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-892/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/surface-area-of-3d-shapes/"&gt;892. Surface Area of 3D Shapes&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The Idea Of This Solution:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This solution uses the fact that each stack of cubes surface area is the equation &lt;code&gt;2 + 4 * v&lt;/code&gt;. This works because each cube has &lt;code&gt;6&lt;/code&gt; sides. This can be shown using some images:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://i.imgur.com/jVZR9I5.jpg" alt=""&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;We can see that each cube has &lt;code&gt;6&lt;/code&gt; planes. There are &lt;code&gt;4&lt;/code&gt; sides, &lt;code&gt;1&lt;/code&gt; top, and &lt;code&gt;1&lt;/code&gt; bottom.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src="https://i.imgur.com/9Vt9RPI.jpg" alt=""&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Now, as we can see, there are &lt;code&gt;10&lt;/code&gt; units of surface area while the other one only had &lt;code&gt;6&lt;/code&gt;, there are &lt;code&gt;8&lt;/code&gt; sides, &lt;code&gt;1&lt;/code&gt; top, and &lt;code&gt;1&lt;/code&gt; bottom.&lt;/p&gt;</description></item><item><title>Leetcode 1272</title><link>https://nathannaveen.dev/posts/leetcode-1272/</link><pubDate>Wed, 07 Apr 2021 12:36:27 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1272/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/remove-interval/"&gt;1272. Remove Interval&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What This Code Is Doing:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;We make a new resulting array and then loop through &lt;code&gt;intervals&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;What we need to know for the following if and else statements is when the code loops through &lt;code&gt;intervals&lt;/code&gt;, we get &lt;code&gt;interval&lt;/code&gt; per iteration. &lt;code&gt;interval&lt;/code&gt; is in the format &lt;code&gt;[start, end]&lt;/code&gt;. Also, the constraints say &lt;code&gt;-10^9 &amp;lt;= start &amp;lt; end &amp;lt;= 10^9&lt;/code&gt;, so we can see that &lt;code&gt;start&lt;/code&gt; and &lt;code&gt;end&lt;/code&gt; are never on the exact same location and the &lt;code&gt;start&lt;/code&gt; is always lesser than &lt;code&gt;end&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Leetcode 874</title><link>https://nathannaveen.dev/posts/leetcode-874/</link><pubDate>Wed, 07 Apr 2021 12:36:17 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-874/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/walking-robot-simulation/"&gt;874. Walking Robot Simulation&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Warning: This solution is pretty annoying.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What The Problem is Telling Us:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The problem description says that they will give an array called &lt;code&gt;commands&lt;/code&gt; that tell you to turn right, left, or move forward, and they will also give you a matrix array called &lt;code&gt;obstacles&lt;/code&gt;. &lt;code&gt;obstacles&lt;/code&gt; is pretty self-explanatory. It is points where an obstacle is at. The points are in the format of &lt;code&gt;(x, y)&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Leetcode 1475</title><link>https://nathannaveen.dev/posts/leetcode-1475/</link><pubDate>Tue, 06 Apr 2021 09:57:29 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1475/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/final-prices-with-a-special-discount-in-a-shop/"&gt;1475. Final Prices With a Special Discount in a Shop&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This solution is pretty simple just loop through &lt;code&gt;prices&lt;/code&gt; and then find the first price smaller than the current one. After that, remake &lt;code&gt;prices[i]&lt;/code&gt; the current price minus the minimum.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The Code:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;finalPrices&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;prices&lt;/span&gt; []&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;) []&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;price&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;range&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;prices&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;minimum&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1001&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt; &amp;lt; len(&lt;span style="color:#a6e22e"&gt;prices&lt;/span&gt;); &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;prices&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;] &lt;span style="color:#f92672"&gt;&amp;lt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;price&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;minimum&lt;/span&gt; = &lt;span style="color:#a6e22e"&gt;prices&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;break&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;minimum&lt;/span&gt; &lt;span style="color:#f92672"&gt;!=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1001&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;prices&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;] = &lt;span style="color:#a6e22e"&gt;price&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;minimum&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;prices&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Solution With A Little Better Time:&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Leetcode 633</title><link>https://nathannaveen.dev/posts/leetcode-633/</link><pubDate>Mon, 05 Apr 2021 12:24:12 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-633/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/sum-of-square-numbers/"&gt;633. Sum of Square Numbers&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Both solutions use the simple knowledge of:&lt;/p&gt;
&lt;p&gt;If &lt;code&gt;c = a^2 + b^2&lt;/code&gt; then &lt;code&gt;b^2 = c - a^2&lt;/code&gt; and &lt;code&gt;a^2 = c - b^2&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The Idea of the First Solution:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is pretty simple since we know that &lt;code&gt;a^2 = c - b^2&lt;/code&gt; we can store &lt;code&gt;a^2&lt;/code&gt; in a map called &lt;code&gt;m&lt;/code&gt;, and then we check whether &lt;code&gt;m&lt;/code&gt; contains &lt;code&gt;c - b^2&lt;/code&gt;. If &lt;code&gt;m&lt;/code&gt; contains &lt;code&gt;c - b^2&lt;/code&gt;, we can return &lt;code&gt;true&lt;/code&gt; because we know that two squared numbers add up to &lt;code&gt;c&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Leetcode 1465</title><link>https://nathannaveen.dev/posts/leetcode-1465/</link><pubDate>Mon, 05 Apr 2021 12:23:52 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1465/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/maximum-area-of-a-piece-of-cake-after-horizontal-and-vertical-cuts/"&gt;1465. Maximum Area of a Piece of Cake After Horizontal and Vertical Cuts&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What The Problem Is Asking:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The problem is telling us that there are cuts in a rectangular cake of width &lt;code&gt;w&lt;/code&gt; and height &lt;code&gt;h&lt;/code&gt;. The cuts are only horizontal and vertical.&lt;/p&gt;
&lt;p&gt;The problem wants us to find the largest slice of cake.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The Main Idea of This Solution:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;We can find the maximum area slice by finding the maximum vertical length between each horizontal portion and the maximum horizontal length between each slice and then multiplying them together to get the maximum area.&lt;/p&gt;</description></item><item><title>Leetcode 658</title><link>https://nathannaveen.dev/posts/leetcode-658/</link><pubDate>Sun, 04 Apr 2021 16:47:26 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-658/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/find-k-closest-elements/"&gt;658. Find K Closest Elements&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What The Problem Is Asking:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The problem asks us to find the &lt;code&gt;k&lt;/code&gt; closest elements in an array to the value &lt;code&gt;x&lt;/code&gt;. We find the distance between elements by doing &lt;code&gt;|value - x|&lt;/code&gt; and the &lt;code&gt;k&lt;/code&gt; elements with the smallest distances.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The Main Idea Of This Solution:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Since we have to find the &lt;code&gt;k&lt;/code&gt; closest elements, we can sort the array from the smallest distance to the greatest distance. After we have done that, we can get the smallest &lt;code&gt;k&lt;/code&gt; elements by getting the first &lt;code&gt;k&lt;/code&gt; elements of &lt;code&gt;arr&lt;/code&gt;. The problem wants us to return the smallest &lt;code&gt;k&lt;/code&gt; elements in a sorted array so we can sort the first &lt;code&gt;k&lt;/code&gt; elements of &lt;code&gt;arr&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>How the Manual Sort Works</title><link>https://nathannaveen.dev/posts/how-the-manual-sort-works/</link><pubDate>Sun, 04 Apr 2021 16:40:14 -0500</pubDate><guid>https://nathannaveen.dev/posts/how-the-manual-sort-works/</guid><description>&lt;p&gt;The idea of this is pretty simple:&lt;/p&gt;
&lt;p&gt;We check whether the previous number is greater than the current number. If it is switch the two values in the array around and subtract two from &lt;code&gt;i&lt;/code&gt; (&lt;code&gt;i = The current position&lt;/code&gt;). After that we subtract &lt;code&gt;2&lt;/code&gt; from &lt;code&gt;i&lt;/code&gt; because we want to go back by one position. We subtract &lt;code&gt;2&lt;/code&gt; to go back &lt;code&gt;1&lt;/code&gt; because we add one to &lt;code&gt;i&lt;/code&gt; in the for loop. We keep on doing this and we get &lt;code&gt;arr&lt;/code&gt; sorted.&lt;/p&gt;</description></item><item><title>Leetcode 734</title><link>https://nathannaveen.dev/posts/leetcode-734/</link><pubDate>Fri, 02 Apr 2021 13:08:17 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-734/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/sentence-similarity/"&gt;734. Sentence Similarity&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;We have to first check whether the lengths of the two sentences are the same. If they aren&amp;rsquo;t, we return &lt;code&gt;false&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Then we have to make a map called &lt;code&gt;m&lt;/code&gt;. The map is in a format of &lt;code&gt;string, []string&lt;/code&gt; where &lt;code&gt;string&lt;/code&gt; is the &lt;code&gt;key&lt;/code&gt; and &lt;code&gt;[]string&lt;/code&gt; is the value.&lt;/li&gt;
&lt;li&gt;We add all the values from the matrix array called &lt;code&gt;similarPairs&lt;/code&gt; to &lt;code&gt;m&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;After we have added all the values from &lt;code&gt;similarPairs&lt;/code&gt; to &lt;code&gt;m&lt;/code&gt;, we can loop through sentence 1 and 2 and check whether &lt;code&gt;m[sentence1[i]]&lt;/code&gt; contains &lt;code&gt;sentence2[i]&lt;/code&gt;, if it doesn&amp;rsquo;t and the two words are not similar we have to return &lt;code&gt;false&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;After we have looped through, we can return true because then we know that the sentences are similar.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;The Code:&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Leetcode 1118</title><link>https://nathannaveen.dev/posts/leetcode-1118/</link><pubDate>Thu, 01 Apr 2021 13:15:33 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1118/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/number-of-days-in-a-month/"&gt;1118. Number of Days in a Month&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;To start, I wouldn&amp;rsquo;t say that this is a good interview problem because it is not an algorithmic problem.&lt;/p&gt;
&lt;p&gt;The months and the number of days in each month can be shown in the table below:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://i.imgur.com/cBmSB5Y.jpg" alt=""&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;In February, it can be either &lt;code&gt;28&lt;/code&gt; days or &lt;code&gt;29&lt;/code&gt; days. &lt;code&gt;28&lt;/code&gt; days in a regular year and &lt;code&gt;29&lt;/code&gt; days in a leap year.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;We can see that if the month is &lt;code&gt;January, March, May, July, August, October, December&lt;/code&gt;, we return &lt;code&gt;31&lt;/code&gt; days.&lt;/p&gt;</description></item><item><title>Leetcode 1708</title><link>https://nathannaveen.dev/posts/leetcode-1708/</link><pubDate>Thu, 01 Apr 2021 11:53:48 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1708/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/largest-subarray-length-k/"&gt;1708. Largest Subarray Length K&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is pretty simple we get every subarray so length &lt;code&gt;k&lt;/code&gt;. We get the max subarray, compare it with the current subarray, and then check which array is greater, the current subarray, or the maximum subarray.&lt;/p&gt;
&lt;p&gt;We compare subarrays by looping through the length of the subarrays (They are both have the same size). Every time we iterate, we check whether the index of the current subarray is greater than the index of the max subarray and the opposite.&lt;/p&gt;</description></item><item><title>Leetcode 246</title><link>https://nathannaveen.dev/posts/leetcode-246/</link><pubDate>Thu, 01 Apr 2021 10:34:39 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-246/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/strobogrammatic-number/"&gt;246. Strobogrammatic Number&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This solution is pretty simple and pretty similar to &lt;a href="https://nathannaveen.dev/posts/leetcode-163/"&gt;Leetcode 163&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The problem asks us to flip a number by 180 degrees and then return true if the fliped number is equal to the non-fliped number.&lt;/p&gt;
&lt;p&gt;You might think that just flipping every digit and then check whether the following fliped number is equal to the non fliped number, but there is a problem with just flipping. Here is an example to show that just flipping doesn&amp;rsquo;t work:&lt;/p&gt;</description></item><item><title>Leetcode 1427</title><link>https://nathannaveen.dev/posts/leetcode-1427/</link><pubDate>Tue, 30 Mar 2021 13:23:55 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1427/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/perform-string-shifts/"&gt;1427. Perform String Shifts&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is pretty simple.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Since there are only two directions, we can shift the strings in one direction. The reason we can shift in only one direction is when the input tells us to shift&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;First left and then right:
&lt;ul&gt;
&lt;li&gt;The right might cancel out the left and will end up with no shift.&lt;/li&gt;
&lt;li&gt;The right might be greater than the left, so we shift right.&lt;/li&gt;
&lt;li&gt;The left might be greater than the right, so we shift left.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;First right then left:
&lt;ul&gt;
&lt;li&gt;The left might be equal to the right, so it will cancel both of them out, and we won&amp;rsquo;t shift.&lt;/li&gt;
&lt;li&gt;The left might be greater than the right, so we shift left.&lt;/li&gt;
&lt;li&gt;The left might be smaller than the right, so we shift right.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;First left then another left:
&lt;ul&gt;
&lt;li&gt;We can only go left because there is no right to cancel out.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;First right then another right:
&lt;ul&gt;
&lt;li&gt;We only shift right because there is no left for us to cancel the right shift with.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These are the possibilities that we can shift but in different permutations. This can be shown with the following example:&lt;/p&gt;</description></item><item><title>Leetcode 163</title><link>https://nathannaveen.dev/posts/leetcode-163/</link><pubDate>Fri, 26 Mar 2021 10:27:54 -0400</pubDate><guid>https://nathannaveen.dev/posts/leetcode-163/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/perform-string-shifts/"&gt;1427. Perform String Shifts&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is pretty simple.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Since there are only two directions, we can shift the strings in one direction. The reason we can shift in only one direction is when the input tells us to shift&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;First left and then right:
&lt;ul&gt;
&lt;li&gt;The right might cancel out the left and will end up with no shift.&lt;/li&gt;
&lt;li&gt;The right might be greater than the left, so we shift right.&lt;/li&gt;
&lt;li&gt;The left might be greater than the right, so we shift left.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;First right then left:
&lt;ul&gt;
&lt;li&gt;The left might be equal to the right, so it will cancel both of them out, and we won&amp;rsquo;t shift.&lt;/li&gt;
&lt;li&gt;The left might be greater than the right, so we shift left.&lt;/li&gt;
&lt;li&gt;The left might be smaller than the right, so we shift right.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;First left then another left:
&lt;ul&gt;
&lt;li&gt;We can only go left because there is no right to cancel out.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;First right then another right:
&lt;ul&gt;
&lt;li&gt;We only shift right because there is no left for us to cancel the right shift with.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These are the possibilities that we can shift but in different permutations. This can be shown with the following example:&lt;/p&gt;</description></item><item><title>Leetcode 1791</title><link>https://nathannaveen.dev/posts/leetcode-1791/</link><pubDate>Wed, 24 Mar 2021 12:35:49 -0400</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1791/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/find-center-of-star-graph/"&gt;1791. Find Center of Star Graph&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This solution is straightforward.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;We first make an array called &lt;code&gt;nodes&lt;/code&gt; with &lt;code&gt;edges + 1&lt;/code&gt; values. We need &lt;code&gt;edges + 1&lt;/code&gt; values because &lt;code&gt;len(edges)&lt;/code&gt; is the number of edge nodes, and the &lt;code&gt;+ 1&lt;/code&gt; is for the center node. We only need &lt;code&gt;edges + 1&lt;/code&gt; nodes because the nodes are from &lt;code&gt;1...n&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Then we loop through &lt;code&gt;edges&lt;/code&gt; and get each &lt;code&gt;edge&lt;/code&gt;. &lt;code&gt;edge[0]&lt;/code&gt; and &lt;code&gt;edge[1]&lt;/code&gt; are the two values given per edge. One of them is the center node, and the other one is the edge. We add one to &lt;code&gt;node[edge[0]]&lt;/code&gt; and &lt;code&gt;node[edge[1]]&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Inside the loop we check whether &lt;code&gt;nodes[edge[0]]&lt;/code&gt; and &lt;code&gt;nodes[edge[1]]&lt;/code&gt; equals &lt;code&gt;2&lt;/code&gt; because the only node that repeats twice is the center node. And if &lt;code&gt;nodes[edge[0]] == 2&lt;/code&gt; or &lt;code&gt;nodes[edge[1]] == 2&lt;/code&gt; we should return the center node.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;(Note: The problem says &lt;code&gt;3 &amp;lt;= n &amp;lt;= 10^5&lt;/code&gt;, but if it didn&amp;rsquo;t at the end the code returns &lt;code&gt;edge[0][0]&lt;/code&gt; becuase of the test case &lt;code&gt;len(edges) == 1&lt;/code&gt;)&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Leetcode 1213</title><link>https://nathannaveen.dev/posts/leetcode-1213/</link><pubDate>Wed, 24 Mar 2021 10:44:39 -0400</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1213/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/intersection-of-three-sorted-arrays/"&gt;1213. Intersection of Three Sorted Arrays&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What The Problem Asks:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The problem statement is:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Given three integer arrays &lt;code&gt;arr1&lt;/code&gt;, &lt;code&gt;arr2&lt;/code&gt; and &lt;code&gt;arr3&lt;/code&gt; sorted in &lt;strong&gt;strictly increasing&lt;/strong&gt; order, return a sorted array of &lt;strong&gt;only&lt;/strong&gt; the integers that appeared in &lt;strong&gt;all&lt;/strong&gt; three arrays.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;They are giving us an input of three &lt;strong&gt;strictly increasing&lt;/strong&gt; arrays, and we have to find all the numbers that repeat in all three arrays.&lt;/p&gt;
&lt;p&gt;This problem statement&amp;rsquo;s critical thing is &lt;strong&gt;strictly increasing&lt;/strong&gt; because strictly increasing is different from &lt;strong&gt;Non-decreasing&lt;/strong&gt;. Strictly increasing is every number is unique, and it increases, while non-decreasing is a sorted array that includes repeated values.&lt;/p&gt;</description></item><item><title>Leetcode 360</title><link>https://nathannaveen.dev/posts/leetcode-360/</link><pubDate>Tue, 23 Mar 2021 12:20:59 -0400</pubDate><guid>https://nathannaveen.dev/posts/leetcode-360/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/sort-transformed-array/"&gt;360. Sort Transformed Array&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is to loop through &lt;code&gt;nums&lt;/code&gt; and do the quadratic equation &lt;code&gt;f(x) = ax^2 + bx + c&lt;/code&gt; where &lt;code&gt;x = nums[i]&lt;/code&gt; and then make &lt;code&gt;nums[i]&lt;/code&gt; the result of the &lt;code&gt;ax^2 + bx + c&lt;/code&gt;. After that we can sort and return &lt;code&gt;nums&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solution Using Manual Sort&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;sortTransformedArray&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;nums&lt;/span&gt; []&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;a&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;b&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;c&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;) []&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &amp;lt; len(&lt;span style="color:#a6e22e"&gt;nums&lt;/span&gt;); &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;nums&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;] = &lt;span style="color:#a6e22e"&gt;a&lt;/span&gt;&lt;span style="color:#f92672"&gt;*&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;nums&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;]&lt;span style="color:#f92672"&gt;*&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;nums&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;] &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;b&lt;/span&gt;&lt;span style="color:#f92672"&gt;*&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;nums&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;] &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;c&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &amp;lt; len(&lt;span style="color:#a6e22e"&gt;nums&lt;/span&gt;); &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;nums&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;] &amp;lt; &lt;span style="color:#a6e22e"&gt;nums&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;] {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;nums&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;], &lt;span style="color:#a6e22e"&gt;nums&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;] = &lt;span style="color:#a6e22e"&gt;nums&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;], &lt;span style="color:#a6e22e"&gt;nums&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;-=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;nums&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;The Same Solution But Using a Built In Sort:&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Leetcode 1198</title><link>https://nathannaveen.dev/posts/leetcode-1198/</link><pubDate>Mon, 22 Mar 2021 12:57:36 -0400</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1198/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/find-smallest-common-element-in-all-rows/"&gt;1198. Find Smallest Common Element in All Rows&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;m = len(mat), n = len(mat[0])&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;speed = O(mn)&lt;/li&gt;
&lt;li&gt;space = O(number of unique numbers)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;What The Problem Is Asking:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The problem description is&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Given a matrix &lt;code&gt;mat&lt;/code&gt; where every row is sorted in &lt;strong&gt;strictly increasing&lt;/strong&gt; order, return the &lt;strong&gt;smallest common element&lt;/strong&gt; in all rows.&lt;/p&gt;
&lt;p&gt;If there is no common element, return &lt;code&gt;-1&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The problem is asking us to return an element that appears in every array of the matrix array, and if there are multiple, we should return the smallest.&lt;/p&gt;</description></item><item><title>Leetcode 296</title><link>https://nathannaveen.dev/posts/leetcode-296/</link><pubDate>Mon, 22 Mar 2021 11:57:20 -0400</pubDate><guid>https://nathannaveen.dev/posts/leetcode-296/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/best-meeting-point/"&gt;296. Best Meeting Point&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What the Problem Is Asking:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The problem gives us an input binary matrix array called &lt;code&gt;grid&lt;/code&gt;. If &lt;code&gt;grid[i][j] = 1&lt;/code&gt; then it is a house of a friend, and if &lt;code&gt;grid[i][j] = 0&lt;/code&gt; then there is no house there.&lt;/p&gt;
&lt;p&gt;The problem asks us to find a point on the grid that is the smallest distance to walk from all the houses. &lt;em&gt;Note that the point on the grid with the smallest distance can be on a house or an empty space.&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Leetcode 1121</title><link>https://nathannaveen.dev/posts/leetcode-1121/</link><pubDate>Sun, 21 Mar 2021 22:01:48 -0400</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1121/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/divide-array-into-increasing-sequences/"&gt;1121. Divide Array Into Increasing Sequences&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What the Problem is Asking Us To Do:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The problem statement is:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Given a non-decreasing array of positive integers nums and an integer K, find out if this array can be divided into one or more disjoint increasing subsequences of length at least K.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;What this is saying is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;We are first given a sorted array of positive integers called &lt;code&gt;nums&lt;/code&gt; and an integer &lt;code&gt;K&lt;/code&gt; for our input.&lt;/li&gt;
&lt;li&gt;We have to determine whether &lt;code&gt;nums&lt;/code&gt; can be split into disjoint &lt;em&gt;(disjoint means not together because the prefix dis is not and joint means together. Thus, the definition of disjoint is not together)&lt;/em&gt; sequences of at least &lt;code&gt;K&lt;/code&gt;&amp;lsquo;th length.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You might be confused by the example which the problem gives on Leetcode:&lt;/p&gt;</description></item><item><title>Leetcode 1214</title><link>https://nathannaveen.dev/posts/leetcode-1214/</link><pubDate>Sun, 21 Mar 2021 11:36:17 -0400</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1214/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/two-sum-bsts/"&gt;1214. Two Sum BSTs&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Quick Run-Down On The Solutions&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The first solution is the easiest of the three solutions and the worst-time complexity solution.&lt;/li&gt;
&lt;li&gt;The second solution has a different approach from the first solution and a little better time but still not that great.&lt;/li&gt;
&lt;li&gt;The third solution has a lot better time than the first two solutions and has a similar approach to the second solution.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;The Ideas of These Solutions:&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Leetcode 272</title><link>https://nathannaveen.dev/posts/leetcode-272/</link><pubDate>Fri, 19 Mar 2021 09:50:42 -0400</pubDate><guid>https://nathannaveen.dev/posts/leetcode-272/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/closest-binary-search-tree-value-ii/"&gt;272. Closest Binary Search Tree Value II&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is pretty simple, we just iterate through the tree and append the absolute difference between the popped value and &lt;code&gt;target&lt;/code&gt; to an array called &lt;code&gt;differences&lt;/code&gt;, then we append the popped value to an array called &lt;code&gt;eachNumber&lt;/code&gt;. After we have iterated through the whole array we can sort the difference array while sorting the &lt;code&gt;eachNumber&lt;/code&gt; array. After that we return the first &lt;code&gt;k&lt;/code&gt; numbers from &lt;code&gt;eachNumber&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Leetcode 1762</title><link>https://nathannaveen.dev/posts/leetcode-1762/</link><pubDate>Fri, 19 Mar 2021 09:39:06 -0400</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1762/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/buildings-with-an-ocean-view/"&gt;1762. Buildings With an Ocean View&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The idea of the solution:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is to loop through the array &lt;code&gt;heights&lt;/code&gt; backwards. Then we just have to find if a height that is greater that the curent height. After that we can reverse the resulting array because the problem asks us to give us the sorted array of indexes that have an ocean view.&lt;/p&gt;
&lt;p&gt;If you don&amp;rsquo;t understand the explaination just look at the following images:&lt;/p&gt;</description></item><item><title>Leetcode 1134</title><link>https://nathannaveen.dev/posts/leetcode-1134/</link><pubDate>Thu, 18 Mar 2021 17:44:12 -0400</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1134/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/armstrong-number/"&gt;1134. Armstrong Number&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is to just loop through every digit of &lt;code&gt;n&lt;/code&gt; then add the &lt;code&gt;n^(lengthOfNumber)&lt;/code&gt; to a variable called &lt;code&gt;sum&lt;/code&gt;, then we return &lt;code&gt;sum == n&lt;/code&gt;.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;isArmstrong&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;n&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;bool&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;lengthOfNumber&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; len(&lt;span style="color:#a6e22e"&gt;strconv&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Itoa&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;n&lt;/span&gt;))
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;sum&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;newN&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;n&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;newN&lt;/span&gt; &amp;gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;sum&lt;/span&gt; &lt;span style="color:#f92672"&gt;+=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;powerOfK&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;lengthOfNumber&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;newN&lt;/span&gt;&lt;span style="color:#f92672"&gt;%&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;10&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;newN&lt;/span&gt; &lt;span style="color:#f92672"&gt;/=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;10&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;sum&lt;/span&gt; &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;n&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;powerOfK&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;lengthOfNumber&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;n&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &amp;lt; &lt;span style="color:#a6e22e"&gt;lengthOfNumber&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt; &lt;span style="color:#f92672"&gt;*=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;n&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Leetcode 1085</title><link>https://nathannaveen.dev/posts/leetcode-1085/</link><pubDate>Thu, 18 Mar 2021 17:43:55 -0400</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1085/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/sum-of-digits-in-the-minimum-number/"&gt;1085. Sum of Digits in the Minimum Number&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of the first two solutions is pretty simple. We sort the array &lt;code&gt;A&lt;/code&gt; and then we just find the sum of the digits of the smallest number.&lt;/p&gt;
&lt;p&gt;The idea of the second solution is pretty simple as well. We loop through &lt;code&gt;A&lt;/code&gt; and find the minimum value, and the find the sum of the digits of the smallest number.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt; &lt;em&gt;(Using a manual sort)&lt;/em&gt;.&lt;/p&gt;</description></item><item><title>Leetcode 1133</title><link>https://nathannaveen.dev/posts/leetcode-1133/</link><pubDate>Thu, 18 Mar 2021 17:43:48 -0400</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1133/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/largest-unique-number/"&gt;1133. Largest Unique Number&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Here are two ways to solve this solution:&lt;/p&gt;
&lt;p&gt;One way is to use an array of size &lt;code&gt;1001&lt;/code&gt; which we call &lt;code&gt;h&lt;/code&gt; (&lt;code&gt;1001&lt;/code&gt; because in the notes it says &lt;code&gt;0 &amp;lt;= A[i] &amp;lt;= 1000&lt;/code&gt;) and add one to &lt;code&gt;h[A[i]]&lt;/code&gt;. Now we can see that the array will be sorted because we add the number of numbers to &lt;code&gt;h&lt;/code&gt;. So all we have to do is iterate through &lt;code&gt;h&lt;/code&gt; backward and check whether the value of &lt;code&gt;h[i] == 1&lt;/code&gt;. If so, return &lt;code&gt;i&lt;/code&gt;. If there are no unique numbers, we can return &lt;code&gt;-1&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Leetcode 1469</title><link>https://nathannaveen.dev/posts/leetcode-1469/</link><pubDate>Thu, 18 Mar 2021 14:11:02 -0400</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1469/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/find-all-the-lonely-nodes/"&gt;1469. Find All The Lonely Nodes&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is pretty simple, there are just four conditions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;if there is a left node but not a right node&lt;/li&gt;
&lt;li&gt;if there is a right node but not a left node&lt;/li&gt;
&lt;li&gt;if there is both a left and a right node&lt;/li&gt;
&lt;li&gt;if there are neither a left or a right node&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We can ignore the part where there is neither a left or a right node.&lt;/p&gt;</description></item><item><title>Leetcode 270</title><link>https://nathannaveen.dev/posts/leetcode-270/</link><pubDate>Thu, 18 Mar 2021 14:10:52 -0400</pubDate><guid>https://nathannaveen.dev/posts/leetcode-270/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/closest-binary-search-tree-value/"&gt;270. Closest Binary Search Tree Value&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is pretty simple. We have to iterate through the tree and then find the absolute minimum difference between the target and the value from the tree. &lt;em&gt;(Keep in mind that we want everything to be a float64, so then we get proper comparisons)&lt;/em&gt;. This can be shown with the equation:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://i.imgur.com/W0DvaCc.jpg" alt=""&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The Code:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;closestValue&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;root&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;TreeNode&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;target&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;float64&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;stack&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; []&lt;span style="color:#f92672"&gt;*&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;TreeNode&lt;/span&gt;{&lt;span style="color:#a6e22e"&gt;root&lt;/span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;minimum&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; float64(&lt;span style="color:#ae81ff"&gt;1000000000&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;number&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; len(&lt;span style="color:#a6e22e"&gt;stack&lt;/span&gt;) &lt;span style="color:#f92672"&gt;!=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;stack&lt;/span&gt;[len(&lt;span style="color:#a6e22e"&gt;stack&lt;/span&gt;)&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;stack&lt;/span&gt; = &lt;span style="color:#a6e22e"&gt;stack&lt;/span&gt;[:len(&lt;span style="color:#a6e22e"&gt;stack&lt;/span&gt;)&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt; &lt;span style="color:#f92672"&gt;!=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;nil&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;h&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;abs&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;target&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; float64(&lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Val&lt;/span&gt;))
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;h&lt;/span&gt; &amp;lt; &lt;span style="color:#a6e22e"&gt;minimum&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;number&lt;/span&gt; = &lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Val&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;minimum&lt;/span&gt; = &lt;span style="color:#a6e22e"&gt;h&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;stack&lt;/span&gt; = append(&lt;span style="color:#a6e22e"&gt;stack&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Left&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;pop&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Right&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;number&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;abs&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;a&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;float64&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;float64&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;a&lt;/span&gt; &amp;gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;a&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;a&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Leetcode 266</title><link>https://nathannaveen.dev/posts/leetcode-266/</link><pubDate>Thu, 18 Mar 2021 14:10:37 -0400</pubDate><guid>https://nathannaveen.dev/posts/leetcode-266/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/palindrome-permutation/"&gt;266. Palindrome Permutation&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is pretty simple. We add all the letters to a map, and then if there is a extra letter that does not have a partner for the other end of the palindrome add it to the &lt;code&gt;numberOfOnes&lt;/code&gt; counter, if the counter is greater than &lt;code&gt;1&lt;/code&gt; we know that it is not a palindrome. We can explain this with some examples:&lt;/p&gt;
&lt;p&gt;There are three main examples that are going to be shown:&lt;/p&gt;</description></item><item><title>Leetcode 292</title><link>https://nathannaveen.dev/posts/leetcode-292/</link><pubDate>Thu, 18 Mar 2021 12:19:52 -0400</pubDate><guid>https://nathannaveen.dev/posts/leetcode-292/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/nim-game/"&gt;292. Nim Game&lt;/a&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;canWinNim&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;n&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;bool&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;n&lt;/span&gt;&lt;span style="color:#f92672"&gt;%&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;4&lt;/span&gt; &lt;span style="color:#f92672"&gt;!=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This is all the code we need to solve this problem.&lt;/p&gt;
&lt;p&gt;We have to return &lt;code&gt;n % 4 != 0&lt;/code&gt; because we are asked to pick from &lt;code&gt;1&lt;/code&gt; to &lt;code&gt;3&lt;/code&gt; stones, and if we pick;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If we pick one stone, the other player can choose three stones&lt;/li&gt;
&lt;li&gt;If we pick two stones, the other player can select two stones&lt;/li&gt;
&lt;li&gt;If we pick three stones, the other player can choose one stone&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As you can see, when we add the stones together in the examples above, they all equal &lt;code&gt;4&lt;/code&gt; stones.&lt;/p&gt;</description></item><item><title>Leetcode 1119</title><link>https://nathannaveen.dev/posts/leetcode-1119/</link><pubDate>Thu, 18 Mar 2021 11:32:48 -0400</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1119/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/remove-vowels-from-a-string/"&gt;1119. Remove Vowels from a String&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The first approach is pretty simple. If the letter is not a vowel, add it to a resulting string.&lt;/p&gt;
&lt;p&gt;The second approach is better because we keep on using the same string. We remake the string every time there is a vowel by going around the vowel.&lt;/p&gt;
&lt;p&gt;This can be shown with some images:&lt;/p&gt;
&lt;p&gt;We can have:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;input: &amp;#34;leetcode&amp;#34;
expected output: &amp;#34;ltcd&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;blockquote&gt;
&lt;p&gt;We can fast forward to our first vowel, &lt;code&gt;'e'&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Leetcode 1138</title><link>https://nathannaveen.dev/posts/leetcode-1138/</link><pubDate>Thu, 18 Mar 2021 11:32:42 -0400</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1138/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/alphabet-board-path/submissions/"&gt;1138. Alphabet Board Path&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;I have to admit the code might look daunting but it is actualy not that complicated after I explain it to you.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What the Problem is asking:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The problem asks us to make a board of letters:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;[
[a, b, c, d, e]
[f, g, h, i, j]
[k, l, m, n, o]
[p, q, r, s, t]
[u, v, w, x, y]
[z]
]
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Then it gives us a word &lt;code&gt;target&lt;/code&gt;. We start at the position &lt;code&gt;(0, 0)&lt;/code&gt; which is the letter &lt;code&gt;a&lt;/code&gt; on the board.&lt;/p&gt;</description></item><item><title>Leetcode 1041</title><link>https://nathannaveen.dev/posts/leetcode-1041/</link><pubDate>Tue, 16 Mar 2021 12:41:13 -0400</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1041/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/robot-bounded-in-circle/"&gt;1041. Robot Bounded In Circle&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What the problem is asking:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The problem says that it will give a string with the letters &lt;code&gt; &amp;quot;L&amp;quot;, &amp;quot;R&amp;quot;&lt;/code&gt; and &lt;code&gt;&amp;quot;G&amp;quot;&lt;/code&gt; to command a robot. &lt;code&gt;&amp;quot;L&amp;quot;&lt;/code&gt; means to turn left 90 degrees, &lt;code&gt;&amp;quot;R&amp;quot;&lt;/code&gt; means to turn right 90 degrees, and &lt;code&gt;&amp;quot;G&amp;quot;&lt;/code&gt; means to go forward one unit. The problem says to return &lt;code&gt;true&lt;/code&gt; if the robot can continue in that pattern forever and keep going in a circle. This can be shown with the following example:&lt;/p&gt;</description></item><item><title>Leetcode 692</title><link>https://nathannaveen.dev/posts/leetcode-692/</link><pubDate>Mon, 15 Mar 2021 11:52:46 -0400</pubDate><guid>https://nathannaveen.dev/posts/leetcode-692/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/top-k-frequent-words/"&gt;692. Top K Frequent Words&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The Main Idea:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This solution first adds the words to an array called &lt;code&gt;frequency&lt;/code&gt; and sorts &lt;code&gt;frequency&lt;/code&gt; after that, return the &lt;code&gt;k&lt;/code&gt; most frequency words.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Adding to the array &lt;code&gt;Frequency&lt;/code&gt;:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;You might be confused when we do this part:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;for _, ints := range frequency {
 if words[ints[0]] == word {
 contains = true
 ints[1]++
 break
 }
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;We can simplify the &lt;code&gt;if&lt;/code&gt; statement into &lt;code&gt;if words[frequency[i][0]] = word&lt;/code&gt;. This looks a little weird. We have to do this to get the word for each frequency because the array &lt;code&gt;words&lt;/code&gt; is an array of strings, while a frequency is integers. So &lt;code&gt;frequency&lt;/code&gt; is an matrix array of &lt;code&gt;[int][int]&lt;/code&gt; because we can&amp;rsquo;t do &lt;code&gt;[string][int]&lt;/code&gt;, basically &lt;code&gt;frequency&lt;/code&gt; is &lt;code&gt;[the index of the first word with this word][frequency]&lt;/code&gt;. This might still be a little confusing, so I drew up some pictures I describe it:&lt;/p&gt;</description></item><item><title>Leetcode 1721</title><link>https://nathannaveen.dev/posts/leetcode-1721/</link><pubDate>Sun, 14 Mar 2021 15:57:58 -0400</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1721/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/swapping-nodes-in-a-linked-list/"&gt;1721. Swapping Nodes in a Linked List&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is pretty simple.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;First, we find the length of the linked list&lt;/li&gt;
&lt;li&gt;Next, we iterate through the linked list up until the ending &lt;code&gt;kth&lt;/code&gt; node&lt;/li&gt;
&lt;li&gt;And then we iterate through the linked list to to &lt;code&gt;kth&lt;/code&gt; node&lt;/li&gt;
&lt;li&gt;Then, last of all, switch the value of the &lt;code&gt;kth&lt;/code&gt; node with the value of the &lt;code&gt;kth&lt;/code&gt; node from the end.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Finding the length of the linked list is pretty simple. Just get a counter. In this problem, it is &lt;code&gt;lengthOfLinkedList&lt;/code&gt;, then iterate through the linked list and add one to the counter every iteration.&lt;/p&gt;</description></item><item><title>Leetcode 1329</title><link>https://nathannaveen.dev/posts/leetcode-1329/</link><pubDate>Sat, 13 Mar 2021 10:42:03 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1329/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/sort-the-matrix-diagonally/"&gt;1329. Sort the Matrix Diagonally&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is kind of hard to explain so I will show it with the following images:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://i.imgur.com/aoRkExV.jpg" alt=""&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;i = len(mat)&lt;/code&gt;, and &lt;code&gt;j = len(mat[0])&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;The yellow part is every where &lt;code&gt;i&lt;/code&gt; and &lt;code&gt;j&lt;/code&gt; will iterate&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;the diagonal lines are in red&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src="https://i.imgur.com/vfJAh1L.jpg" alt=""&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Before we continue you might be confused about why we switch &lt;code&gt;2&lt;/code&gt; and &lt;code&gt;1&lt;/code&gt; even though &lt;code&gt;i = 1&lt;/code&gt; and &lt;code&gt;j = 1&lt;/code&gt;. This can be shown with the example array &lt;code&gt;[3, 2, 1] &lt;/code&gt; we can pretend that &lt;code&gt;3, 2, 1&lt;/code&gt; is diagonal:&lt;/p&gt;</description></item><item><title>Leetcode 1461</title><link>https://nathannaveen.dev/posts/leetcode-1461/</link><pubDate>Fri, 12 Mar 2021 12:03:46 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1461/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/check-if-a-string-contains-all-binary-codes-of-size-k/"&gt;1461. Check If a String Contains All Binary Codes of Size K&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is to make a sliding window and add all the substrings os size &lt;code&gt;k&lt;/code&gt; to a map, if the maps length is equal to &lt;code&gt;2^k&lt;/code&gt; return &lt;code&gt;true&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;We do &lt;code&gt;2^k&lt;/code&gt; because we have to acount for all posibilitys of &lt;code&gt;0&lt;/code&gt; and &lt;code&gt;1&lt;/code&gt;.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;hasAllCodes&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;s&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;string&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;k&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;bool&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;m&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; make(&lt;span style="color:#66d9ef"&gt;map&lt;/span&gt;[&lt;span style="color:#66d9ef"&gt;string&lt;/span&gt;]&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &amp;lt; len(&lt;span style="color:#a6e22e"&gt;s&lt;/span&gt;)&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;k&lt;/span&gt;&lt;span style="color:#f92672"&gt;+&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;m&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;s&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;:&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;&lt;span style="color:#f92672"&gt;+&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;k&lt;/span&gt;]]&lt;span style="color:#f92672"&gt;++&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; len(&lt;span style="color:#a6e22e"&gt;m&lt;/span&gt;) &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;twoPow&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;k&lt;/span&gt;) 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;twoPow&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;k&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &amp;lt; &lt;span style="color:#a6e22e"&gt;k&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt; &lt;span style="color:#f92672"&gt;*=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;res&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;By using bit maniplation we can simplify the code, left shifting is basicly multiplying by &lt;code&gt;2&lt;/code&gt;. This can be shown using the following:&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Leetcode 1401</title><link>https://nathannaveen.dev/posts/leetcode-1401/</link><pubDate>Fri, 12 Mar 2021 11:01:21 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1401/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/circle-and-rectangle-overlapping/"&gt;1401. Circle and Rectangle Overlapping&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The Main Idea&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is to find the distance from the middle of the circle to the edge of a rectangle, and if the distance is smaller than or equal to the radius, we know that the rectangle overlaps with the circle.&lt;/p&gt;
&lt;p&gt;If you don&amp;rsquo;t understand, look at the following images:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://i.imgur.com/VlNe79P.jpg" alt=""&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;As you can see, the circle and the rectangle do not overlap, and this can be shown by the distance between the center of the circle and the closest edge of the rectangle. The length is &lt;code&gt;√8 = 2.82842712474619&lt;/code&gt;, &lt;code&gt;2.82842712474619&lt;/code&gt; is greater than the radius of &lt;code&gt;1&lt;/code&gt;, so we know that the circle and the rectangle don&amp;rsquo;t overlap.&lt;/p&gt;</description></item><item><title>Leetcode 836</title><link>https://nathannaveen.dev/posts/leetcode-836/</link><pubDate>Wed, 10 Mar 2021 12:10:01 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-836/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/rectangle-overlap/"&gt;836. Rectangle Overlap&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This solution is pretty similar to my other solution &lt;a href="https://nathannaveen.dev/posts/leetcode-223/"&gt;Leetcode: 223&lt;/a&gt; This is the part in the other solution which I based this solution on:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;// A = rec1[0], B = rec1[1], C = rec1[2], D = rec1[3]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;// E = rec2[0], F = rec2[1], G = rec2[2], H = rec2[3]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;left&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;right&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; max(&lt;span style="color:#a6e22e"&gt;A&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;E&lt;/span&gt;), min(&lt;span style="color:#a6e22e"&gt;G&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;C&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;up&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;down&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; min(&lt;span style="color:#a6e22e"&gt;D&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;H&lt;/span&gt;), max(&lt;span style="color:#a6e22e"&gt;F&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;B&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;right&lt;/span&gt; &amp;gt; &lt;span style="color:#a6e22e"&gt;left&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;up&lt;/span&gt; &amp;gt; &lt;span style="color:#a6e22e"&gt;down&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;sum&lt;/span&gt; &lt;span style="color:#f92672"&gt;-=&lt;/span&gt; (&lt;span style="color:#a6e22e"&gt;right&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;left&lt;/span&gt;) &lt;span style="color:#f92672"&gt;*&lt;/span&gt; (&lt;span style="color:#a6e22e"&gt;up&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;down&lt;/span&gt;) &lt;span style="color:#75715e"&gt;// overlap&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The idea of this solution can be shown using some images:&lt;/p&gt;</description></item><item><title>Leetcode 1750</title><link>https://nathannaveen.dev/posts/leetcode-1750/</link><pubDate>Tue, 09 Mar 2021 21:04:18 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1750/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/minimum-length-of-string-after-deleting-similar-ends/"&gt;1750. Minimum Length of String After Deleting Similar Ends&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is pretty simple, so it can be shown with this image:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://i.imgur.com/QAmU64G.jpg" alt=""&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;minimumLength&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;s&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;string&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; len(&lt;span style="color:#a6e22e"&gt;s&lt;/span&gt;) &amp;gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;s&lt;/span&gt;[&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;] &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;s&lt;/span&gt;[len(&lt;span style="color:#a6e22e"&gt;s&lt;/span&gt;)&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;] {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;end&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;s&lt;/span&gt;[len(&lt;span style="color:#a6e22e"&gt;s&lt;/span&gt;)&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;lenS&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; len(&lt;span style="color:#a6e22e"&gt;s&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &amp;lt; &lt;span style="color:#a6e22e"&gt;lenS&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;s&lt;/span&gt;[len(&lt;span style="color:#a6e22e"&gt;s&lt;/span&gt;)&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;] &lt;span style="color:#f92672"&gt;!=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;s&lt;/span&gt;[&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;] {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;s&lt;/span&gt; = &lt;span style="color:#a6e22e"&gt;s&lt;/span&gt;[:len(&lt;span style="color:#a6e22e"&gt;s&lt;/span&gt;)&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;break&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;lenS&lt;/span&gt; = len(&lt;span style="color:#a6e22e"&gt;s&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &amp;lt; &lt;span style="color:#a6e22e"&gt;lenS&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;s&lt;/span&gt;[&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;] &lt;span style="color:#f92672"&gt;!=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;end&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;s&lt;/span&gt; = &lt;span style="color:#a6e22e"&gt;s&lt;/span&gt;[&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;&lt;span style="color:#f92672"&gt;+&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;&lt;span style="color:#f92672"&gt;+&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;:]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;break&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; len(&lt;span style="color:#a6e22e"&gt;s&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Leetcode 1752</title><link>https://nathannaveen.dev/posts/leetcode-1752/</link><pubDate>Tue, 09 Mar 2021 21:04:13 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1752/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/check-if-array-is-sorted-and-rotated/"&gt;1752. Check if Array Is Sorted and Rotated&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is to loop through the array, and then check whether there is a &lt;code&gt;nums[i]&lt;/code&gt; which is greater than &lt;code&gt;nums[(i+1) % len(nums)]&lt;/code&gt; (By the way &lt;code&gt;(i+1) % len(nums)&lt;/code&gt; is for getting the next number) if &lt;code&gt;nums[i] &amp;gt; nums[(i+1)%len(nums)]&lt;/code&gt; then add one to a counter called &lt;code&gt;counter&lt;/code&gt;. Then we check whether &lt;code&gt;counter&lt;/code&gt; is greater than or equal to &lt;code&gt;2&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Leetcode 1784</title><link>https://nathannaveen.dev/posts/leetcode-1784/</link><pubDate>Mon, 08 Mar 2021 14:31:01 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1784/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/check-if-binary-string-has-at-most-one-segment-of-ones/"&gt;1784. Check if Binary String Has at Most One Segment of Ones&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The problem description is:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Given a binary string &lt;code&gt;s&lt;/code&gt; without leading zeros, return &lt;code&gt;true&lt;/code&gt; if &lt;code&gt;s&lt;/code&gt; contains at most one contiguous segment of ones. Otherwise, return &lt;code&gt;false&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This is kind of hard to understand, so I am going to explain it. A contiguous segment of ones looks like:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;111000
100
10
1
11110000
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;And some of the ones that are not contiguous are:&lt;/p&gt;</description></item><item><title>Leetcode 1332</title><link>https://nathannaveen.dev/posts/leetcode-1332/</link><pubDate>Mon, 08 Mar 2021 09:42:56 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1332/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/remove-palindromic-subsequences/"&gt;1332. Remove Palindromic Subsequences&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This problem asks us to find all the subsequences in a string called &lt;code&gt;s&lt;/code&gt;. &lt;code&gt;s&lt;/code&gt; only contains the letters &lt;code&gt;a&lt;/code&gt; and &lt;code&gt;b&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;When we are doing this problem, the main thing to look at is that it says &amp;ldquo;subsequences,&amp;rdquo; not &amp;ldquo;substrings,&amp;rdquo; and that there are only two letters &lt;code&gt;a&lt;/code&gt; and &lt;code&gt;b&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The difference between &amp;ldquo;substrings&amp;rdquo; and &amp;ldquo;subsequences&amp;rdquo; is substrings are consecutive letters, while subsequences doesn&amp;rsquo;t have to be consecutive.&lt;/p&gt;</description></item><item><title>Leetcode 915</title><link>https://nathannaveen.dev/posts/leetcode-915/</link><pubDate>Mon, 08 Mar 2021 08:20:50 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-915/</guid><description>&lt;p&gt;The idea of this solution is to find the max of the left and then check whether the max is always smaller than all the rights. If it is smaller than all of them return the index &lt;strong&gt;(1 indexed)&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;This can be shown with a picture:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://i.imgur.com/ZzXwU7p.jpg" alt=""&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;partitionDisjoint&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;A&lt;/span&gt; []&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;max&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;A&lt;/span&gt;[&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &amp;lt; len(&lt;span style="color:#a6e22e"&gt;A&lt;/span&gt;); &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;shouldReturn&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;max&lt;/span&gt; &amp;lt; &lt;span style="color:#a6e22e"&gt;A&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;] {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;max&lt;/span&gt; = &lt;span style="color:#a6e22e"&gt;A&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;; &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt; &amp;lt; len(&lt;span style="color:#a6e22e"&gt;A&lt;/span&gt;); &lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;A&lt;/span&gt;[&lt;span style="color:#a6e22e"&gt;j&lt;/span&gt;] &amp;lt; &lt;span style="color:#a6e22e"&gt;max&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;shouldReturn&lt;/span&gt; = &lt;span style="color:#66d9ef"&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;break&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;shouldReturn&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Leetcode 973</title><link>https://nathannaveen.dev/posts/leetcode-973/</link><pubDate>Sun, 07 Mar 2021 10:43:03 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-973/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/k-closest-points-to-origin/"&gt;973. K Closest Points to Origin&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The New Distance Formula:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The Euclidean Distance Formula equals (I have drawn this in a picture because the symbols don&amp;rsquo;t aline up when writen up in text)&lt;/p&gt;
&lt;p&gt;&lt;img src="https://i.imgur.com/krhq25z.jpg" alt=""&gt;&lt;/p&gt;
&lt;p&gt;This can be simplifyed by taking out the square root. We can take out the square root because we are not finding the minimum distance but the point with the minimum distance, and the distance doesn&amp;rsquo;t need to be square rooted. The distance not needing to be square rooted can be shown by doing an experiment, for example let us take the square root of 10 and the square root of 8, we know that the square root of 10 will allways be greater than the square root of 8. We also know that 10 will always be greater than 8. Try this with any two positive numbers. &lt;em&gt;Note: I said positve numbers because any square number is positive.&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Leetcode 1773</title><link>https://nathannaveen.dev/posts/leetcode-1773/</link><pubDate>Sat, 06 Mar 2021 19:06:10 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1773/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/count-items-matching-a-rule/"&gt;1773. Count Items Matching a Rule&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is pretty simple. We know that the array &lt;code&gt;items&lt;/code&gt; has only &lt;code&gt;3&lt;/code&gt; items. The first one is the &lt;code&gt;ruleKey = &amp;quot;type&amp;quot;&lt;/code&gt; the next one is &lt;code&gt;ruleKey = &amp;quot;color&amp;quot;&lt;/code&gt;, and the next one is &lt;code&gt;ruleKey = &amp;quot;name&amp;quot;&lt;/code&gt;. We just have to set a index of each item to either &lt;code&gt;0, 1&lt;/code&gt; or &lt;code&gt;2&lt;/code&gt;. Then just loop over each item and check whether the &lt;code&gt;item[index] == ruleValue&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Leetcode 1779</title><link>https://nathannaveen.dev/posts/leetcode-1779/</link><pubDate>Sat, 06 Mar 2021 19:05:54 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1779/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/find-nearest-point-that-has-the-same-x-or-y-coordinate/"&gt;1779. Find Nearest Point That Has the Same X or Y Coordinate&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What The Problem Is Asking:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This problem asks you to find the smallest Manhattan distance from a given point to a matrix array of points called &lt;code&gt;points&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The problem also asks you to only find the Manhattan distance of the points that have the same x value as the first given point, or the same y value as the given point.&lt;/p&gt;</description></item><item><title>Leetcode 223</title><link>https://nathannaveen.dev/posts/leetcode-223/</link><pubDate>Fri, 05 Mar 2021 11:04:23 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-223/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/rectangle-area/"&gt;223. Rectangle Area&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The main idea of this solution is to find the area of each indivigual rectangle and then add them together. After that subtract the overlap of both of them.&lt;/p&gt;
&lt;p&gt;If you don&amp;rsquo;t understand the &lt;code&gt;ABCDRectangle&lt;/code&gt; and the &lt;code&gt;EFGHRectangle&lt;/code&gt; then look at the following images:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;We can have the example:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://i.imgur.com/St26i3w.jpg" alt=""&gt;&lt;/p&gt;
&lt;p&gt;Let us start of with the &lt;code&gt;ABCDRectangle&lt;/code&gt;:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://i.imgur.com/Td0G3vB.jpg" alt=""&gt;&lt;/p&gt;
&lt;p&gt;When we do the equation &lt;code&gt;(D - B) * (C - A)&lt;/code&gt; we are basicly doing &lt;code&gt;width * length&lt;/code&gt;. The &lt;code&gt;width&lt;/code&gt; is &lt;code&gt;(D - B)&lt;/code&gt;. This can be show by using the image above where &lt;code&gt;A = -4, B = 2, C = 4, D = 5&lt;/code&gt;. When we do &lt;code&gt;(D - B)&lt;/code&gt; it equal &lt;code&gt;(5 - 2) = 3&lt;/code&gt;. So we know that the rectangle has a width of &lt;code&gt;3&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Leetcode 908</title><link>https://nathannaveen.dev/posts/leetcode-908/</link><pubDate>Thu, 04 Mar 2021 15:47:37 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-908/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/smallest-range-i/"&gt;908. Smallest Range I&lt;/a&gt;&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;func smallestRangeI(A []int, K int) int {
	max, min := A[0], A[0]

	for _, i := range A {
		if i &amp;gt; max {max = i}
		if i &amp;lt; min {min = i}
	}
	if max-min-2*K &amp;gt; 0 {
		return max - min - 2 * K
	}
	return 0
} 
&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>Leetcode 347</title><link>https://nathannaveen.dev/posts/leetcode-347/</link><pubDate>Thu, 04 Mar 2021 15:47:24 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-347/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/top-k-frequent-elements/"&gt;347. Top K Frequent Elements&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is pretty simple. First, add all the numbers to a matrix array with the size &lt;code&gt;[number of different elements][2]&lt;/code&gt;. Then sort the array, and then add the values to a regular array of size &lt;code&gt;K&lt;/code&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;The matrix array has a size of &lt;code&gt;[number of different elemtnets][2]&lt;/code&gt; because we need to add every element to its corresponding place in the array and then update the frequency by adding one to it. The array is put in the format &lt;code&gt;[frequency][number]&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Leetcode 833</title><link>https://nathannaveen.dev/posts/leetcode-833/</link><pubDate>Thu, 04 Mar 2021 10:24:54 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-833/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/find-and-replace-in-string/"&gt;833. Find And Replace in String&lt;/a&gt;&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;func findReplaceString(S string, indexes []int, sources []string, targets []string) string {
	res := &amp;#34;&amp;#34;

	for i := 0; i &amp;lt; len(S); i++ {
		index := 0 // this is the index that is used for indexes, sources, and targets

		for i2, i3 := range indexes {
			if i3 == i {
				index = i2 // we do this because the indexes are not sorted
			}
		}

		if index &amp;lt; len(indexes) &amp;amp;&amp;amp; i == indexes[index] {
			currentString := sources[index]
			isSubstring := true
			for i2 := range currentString { // checking whether the whole substring is equal
				if string(S[i+i2]) != string(currentString[i2]) { 
					isSubstring = false
					break
				}
			}

			if isSubstring {
				res += targets[index]
				i += len(currentString) - 1 // we have to add to i because we dont want to repeat characters
			} else {
				res += string(S[i]) // if there is not a whole substring just add the character
			}
			index++
		} else {
			res += string(S[i]) // if there is no index in indexes that works for the current index
		}
	}

	return res
}
&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>Leetcode 1636</title><link>https://nathannaveen.dev/posts/leetcode-1636/</link><pubDate>Wed, 03 Mar 2021 16:02:55 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1636/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/sort-array-by-increasing-frequency/"&gt;1636. Sort Array by Increasing Frequency&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The main idea of both the solutions is to add all the numbers to a matrix of lengths &lt;code&gt;[len(nums)][2]&lt;/code&gt; and then sort each frequency of numbers by the max frequency. Suppose two values have the same frequency sort them by the value in descending order. After they are sorted, add all the values back to &lt;code&gt;nums&lt;/code&gt; and return &lt;code&gt;nums&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;This is the sort:&lt;/strong&gt;&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;for i := 1; i &amp;lt; len(arr); i++ {
 if i &amp;gt;= 1 &amp;amp;&amp;amp; ((arr[i-1][0] &amp;gt; arr[i][0]) || 
 (arr[i-1][0] == arr[i][0] &amp;amp;&amp;amp; arr[i-1][1] &amp;lt; arr[i][1])) {
 arr[i], arr[i-1] = arr[i-1], arr[i]
 i -= 2
 }
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The idea of it is to start at the second item (first if 0 indexed) and then check whether the frequency of the number before the current is greater than the frequency of the current number. This is show like this in the code: &lt;code&gt;((arr[i-1][0] &amp;gt; arr[i][0])&lt;/code&gt;. Or it checks whether the frequency is the same and whether the current number is greater than the number before the current number, this is show in the code as this: &lt;code&gt;arr[i-1][0] == arr[i][0] &amp;amp;&amp;amp; arr[i-1][1] &amp;lt; arr[i][1]&lt;/code&gt;. If either of these things is true, then switch the current and number before the current element and subtracts &lt;code&gt;2&lt;/code&gt; from &lt;code&gt;i&lt;/code&gt;. We subtract &lt;code&gt;2&lt;/code&gt; from &lt;code&gt;i&lt;/code&gt; to move back if we have to switch the next current and number before the current numbers. And we subtract &lt;code&gt;2&lt;/code&gt;, not &lt;code&gt;1&lt;/code&gt; because the loops &lt;code&gt;i++&lt;/code&gt; cancel out one of the subtracts. Since we have an &lt;code&gt;i -= 2&lt;/code&gt;, we have to check whether &lt;code&gt;i &amp;gt;= 1&lt;/code&gt; because if we don&amp;rsquo;t and &lt;code&gt;i == 0&lt;/code&gt;, we would have an out-of-bounds exception.&lt;/p&gt;</description></item><item><title>Leetcode 1385</title><link>https://nathannaveen.dev/posts/leetcode-1385/</link><pubDate>Wed, 03 Mar 2021 13:25:26 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1385/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/find-the-distance-value-between-two-arrays/"&gt;1385. Find the Distance Value Between Two Arrays&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is to iterate through &lt;code&gt;arr1&lt;/code&gt; and then inside each iteration iterate through &lt;code&gt;arr2&lt;/code&gt;. If the absolute value of &lt;code&gt;arr1[i] - arr2[j]&lt;/code&gt; is smaller than or equal to &lt;code&gt;d&lt;/code&gt;, we know that &lt;code&gt;arr1[i]&lt;/code&gt; can&amp;rsquo;t be added to the resulting counter, so we can just &lt;code&gt;break&lt;/code&gt; from the loop.&lt;/p&gt;
&lt;p&gt;There is a abs function because &lt;code&gt;math.Abs&lt;/code&gt; takes longer. When using &lt;code&gt;math.Abs&lt;/code&gt; we have to make &lt;code&gt;float64(arr1[i] - arr2[j])&lt;/code&gt;, and then make the &lt;code&gt;int(math.Abs)&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Leetcode 645</title><link>https://nathannaveen.dev/posts/leetcode-645/</link><pubDate>Tue, 02 Mar 2021 11:27:21 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-645/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/set-mismatch/"&gt;645. Set Mismatch&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is to add every number in the array &lt;code&gt;nums&lt;/code&gt; to another array called &lt;code&gt;temp&lt;/code&gt;. Next we go through the array temp and check whether the number of a certain number is equal to &lt;code&gt;2&lt;/code&gt;, if it is then we know that it is the repeated number. If it is not &lt;code&gt;2&lt;/code&gt; but it is &lt;code&gt;0&lt;/code&gt; we know that it is the skiped number. We know that there is always a duplicate number, so if we found the duplicate but not the value that is skiped we return the duplicate and the duplicate plus one, because if the skiped is not inside the array we have to return the next number.&lt;/p&gt;</description></item><item><title>Leetcode 34</title><link>https://nathannaveen.dev/posts/leetcode-34/</link><pubDate>Tue, 02 Mar 2021 11:27:12 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-34/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/find-first-and-last-position-of-element-in-sorted-array/"&gt;34. Find First and Last Position of Element in Sorted Array&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Both of the solutions use a two pointer approche. The first solution is slower than the second solution because it checks an extra &lt;code&gt;if&lt;/code&gt; statment inside the loop, while the second solution checks it outside of the loop.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;func searchRange(nums []int, target int) []int {
 left := 0
 right := len(nums) - 1

 for left &amp;lt; right {
 if nums[left] != target {
 left++
 }
 if nums[right] != target {
 right--
 }
 if nums[left] == target &amp;amp;&amp;amp; nums[right] == target {
 return []int{left, right}
 }
 }

 if len(nums) &amp;gt; 0 &amp;amp;&amp;amp; nums[left] == target &amp;amp;&amp;amp; nums[right] == target {
 return []int{left, right}
 }

 return []int{-1, -1}
}
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;func searchRange(nums []int, target int) []int {
 left := 0
 right := len(nums) - 1

 for (left &amp;lt; right) &amp;amp;&amp;amp; (nums[left] != target || nums[right] != target) {
 if nums[left] != target {
 left++
 }
 if nums[right] != target {
 right--
 }
 }

 if len(nums) &amp;gt; 0 &amp;amp;&amp;amp; nums[left] == target &amp;amp;&amp;amp; nums[right] == target {
 return []int{left, right}
 }

 return []int{-1, -1}
}
&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>Leetcode 4</title><link>https://nathannaveen.dev/posts/leetcode-4/</link><pubDate>Mon, 01 Mar 2021 14:20:15 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-4/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/median-of-two-sorted-arrays/"&gt;4. Median of Two Sorted Arrays&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is pretty simple, first append all the &lt;code&gt;nums2&lt;/code&gt; values to &lt;code&gt;nums1&lt;/code&gt;. Then sort &lt;code&gt;nums1&lt;/code&gt;. If there are a even number of values then the median is the middle two numbers added together and divided by &lt;code&gt;2&lt;/code&gt;. An example could be:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;input: nums1 = [1,2], nums2 = [3,4]&lt;/code&gt;
&lt;code&gt;expected output: 2.5&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;When the two arrays are combined the new array would be &lt;code&gt;[1, 2, 3, 4]&lt;/code&gt; and the two middle numbers are &lt;code&gt;2&lt;/code&gt;, and &lt;code&gt;3&lt;/code&gt;. When &lt;code&gt;2&lt;/code&gt; and &lt;code&gt;3&lt;/code&gt; are added together we get &lt;code&gt;5&lt;/code&gt;, and &lt;code&gt;5&lt;/code&gt; divided by &lt;code&gt;2&lt;/code&gt; is &lt;code&gt;2.5&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Leetcode 647</title><link>https://nathannaveen.dev/posts/leetcode-647/</link><pubDate>Mon, 01 Mar 2021 09:27:16 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-647/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/palindromic-substrings/"&gt;647. Palindromic Substrings&lt;/a&gt;&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;func countSubstrings(s string) int {
 res := 0
 for i := 0; i &amp;lt; len(s); i++ {
 for j := 0; j &amp;lt;= len(s)-i; j++ {
 if s[j:j+i] != &amp;#34;&amp;#34; &amp;amp;&amp;amp; isPalindromic(s[j:j+i]) {
 res++
 }
 }
 }
 if isPalindromic(s) {
 res++
 }
 return res
}

func isPalindromic(s string) bool {
 left, right := 0, len(s)-1

 for left &amp;lt;= right {
 if s[left] != s[right] {
 return false
 }
 left++
 right--
 }
 return true
}
&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>Leetcode 459</title><link>https://nathannaveen.dev/posts/leetcode-459/</link><pubDate>Sun, 28 Feb 2021 14:46:05 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-459/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/repeated-substring-pattern/"&gt;459. Repeated Substring Pattern&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is any substring that is repeated throughout the string &lt;code&gt;s&lt;/code&gt; has to start at the &lt;code&gt;0&lt;/code&gt;&amp;lsquo;th index and end at another index, such as the &lt;code&gt;3&lt;/code&gt;&amp;lsquo;ed. This can be shown by using a image.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://i.imgur.com/JB4X253.jpg" alt=""&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;In both the examples the substrings that are repeated are green.&lt;/p&gt;
&lt;p&gt;In the first example the substring &lt;code&gt;abc&lt;/code&gt; starts at the &lt;code&gt;0&lt;/code&gt;&amp;lsquo;th index and ends at the &lt;code&gt;2&lt;/code&gt;&amp;rsquo;d index.&lt;/p&gt;</description></item><item><title>Leetcode 5</title><link>https://nathannaveen.dev/posts/leetcode-5/</link><pubDate>Sun, 28 Feb 2021 11:41:58 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-5/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/longest-palindromic-substring/"&gt;5. Longest Palindromic Substring&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In this solution we dont have to check whether the palindrome substring is greater than the max length substring because the length of the substring will always be greater than or equal to the length of the current max substring. This can be show in an image:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://i.imgur.com/k9YUTYG.jpg" alt=""&gt;&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;func longestPalindrome(s string) string {
	max := &amp;#34;&amp;#34;
	for i := 0; i &amp;lt; len(s); i++ {
		for j := 0; j &amp;lt;= len(s)-i; j++ {
			if isPalindromic(s[j : j + i]) {
				max = s[j : j + i] // getting the substring
			}
		}
	}
	if isPalindromic(s) {
		max = s
	}
	return max
}

func isPalindromic(s string) bool {
	left, right := 0, len(s) - 1

	for left &amp;lt; right {
		if s[left] != s[right] {
			return false
		}
		left++
		right--
	}
	return true
}
&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>Leetcode 1016</title><link>https://nathannaveen.dev/posts/leetcode-1016/</link><pubDate>Fri, 26 Feb 2021 13:58:32 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1016/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/binary-string-with-substrings-representing-1-to-n/"&gt;1016. Binary String With Substrings Representing 1 To N&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is to loop through &lt;code&gt;1...N&lt;/code&gt; and then make the string by adding the bytes to a string called &lt;code&gt;s&lt;/code&gt;. Then check if &lt;code&gt;S&lt;/code&gt; contains the reversed string of the bytes. The string &lt;code&gt;s&lt;/code&gt; is reversed by a helper function.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;func queryString(S string, N int) bool {
 for i := 1; i &amp;lt;= N; i++ {
 s := &amp;#34;&amp;#34;
 n := i

 for n &amp;gt; 0 {
 if n &amp;amp; 1 == 1 {
 s += &amp;#34;1&amp;#34;
 } else {
 s += &amp;#34;0&amp;#34;
 }
 n &amp;gt;&amp;gt;= 1
 }
 if !strings.Contains(S, reverse(s)) {
 return false
 }
 }
 return true
}

func reverse(s string) string {
 res := &amp;#34;&amp;#34;

 for _, i := range s {
 res = string(i) + res
 }
 return res
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This solution is pretty much the same as the first solution but this solution doesn&amp;rsquo;t use a outside function to reverse.&lt;/p&gt;</description></item><item><title>Leetcode 946</title><link>https://nathannaveen.dev/posts/leetcode-946/</link><pubDate>Fri, 26 Feb 2021 10:59:38 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-946/</guid><description>&lt;p&gt;The idea of this solution is to append the pushed value to the stack. If peeked value is equal to the poped value then pop it off the stack, keep poping off the peeked value if it is equal to the poped value. This can be show in an image&lt;/p&gt;
&lt;p&gt;&lt;img src="https://i.imgur.com/ovNR5Oy.jpg" alt=""&gt;&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;func validateStackSequences(pushed []int, popped []int) bool {
 stack := []int{}
 popCounter := 0
 for i := 0; i &amp;lt; len(pushed); i++ {
 stack = append(stack, pushed[i])
 for len(stack) != 0 &amp;amp;&amp;amp; popped[popCounter] == stack[len(stack)-1] {
 stack = stack[:len(stack)-1]
 popCounter++
 if popCounter == len(popped) {
 break
 }
 }
 }

 return len(stack) == 0
}
&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>Leetcode 448</title><link>https://nathannaveen.dev/posts/leetcode-448/</link><pubDate>Fri, 26 Feb 2021 10:28:29 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-448/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/find-all-numbers-disappeared-in-an-array/"&gt;448. Find All Numbers Disappeared in an Array&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is to add all the numbers to a map and then check whether the map doesn&amp;rsquo;t contain a number. If it doesn&amp;rsquo;t contain then add it to the array &lt;code&gt;arr&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;We return the array from the first position to the end because when we make the array it comes out with a &lt;code&gt;0&lt;/code&gt; at the zeroth index. For example a input array could be &lt;code&gt;[4,3,2,7,8,2,3,1]&lt;/code&gt;. If we just returned &lt;code&gt;arr&lt;/code&gt; then we would get &lt;code&gt;[0, 5, 6]&lt;/code&gt; instead of &lt;code&gt;[5, 6]&lt;/code&gt;. This can also be fixed by making &lt;code&gt;i&lt;/code&gt; in the second loop start at &lt;code&gt;1&lt;/code&gt; instead of &lt;code&gt;0&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Leetcode 1704</title><link>https://nathannaveen.dev/posts/leetcode-1704/</link><pubDate>Thu, 25 Feb 2021 20:22:25 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1704/</guid><description>&lt;p&gt;The idea of this solution is to first make the input string lowercase, and then add &lt;code&gt;1&lt;/code&gt; to an integer array at the index of every letter, &lt;code&gt;a = 0, b = 1, c = 2...&lt;/code&gt;. First we add to the array called &lt;code&gt;first&lt;/code&gt;, then starting at a certain index start adding it to &lt;code&gt;second&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;After that, add the number of vowel that have occured. The code does this by doing&lt;/p&gt;</description></item><item><title>Leetcode 1592</title><link>https://nathannaveen.dev/posts/leetcode-1592/</link><pubDate>Thu, 25 Feb 2021 15:48:58 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1592/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/rearrange-spaces-between-words/"&gt;1592. Rearrange Spaces Between Words&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is pretty simple, first split &lt;code&gt;text&lt;/code&gt; by space. We have to split it manualy and not use a inbuild function because the text can contain multiple spaces inbetween words, and we have to count spaces. This can be show in an example:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;input = &amp;#34; this is a sentence &amp;#34;

inbuiltSplit = [&amp;#34;&amp;#34;, &amp;#34;&amp;#34;, &amp;#34;this&amp;#34;, &amp;#34;&amp;#34;, &amp;#34;&amp;#34;, &amp;#34;is&amp;#34;, &amp;#34;&amp;#34;, &amp;#34;a&amp;#34;, &amp;#34;sentence&amp;#34;, &amp;#34;&amp;#34;]
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;The Code:&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Leetcode 501</title><link>https://nathannaveen.dev/posts/leetcode-501/</link><pubDate>Thu, 25 Feb 2021 15:48:23 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-501/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/find-mode-in-binary-search-tree"&gt;501. Find Mode in Binary Search Tree&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is to iterate through the tree, and add all the values to a map. Then get all the max values of the map and add them to the result array.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;func findMode(root *TreeNode) []int {
 max := 0
 m := make(map[int]int)
 res := []int{}
 stack := []*TreeNode{}
 stack = append(stack, root)

 for len(stack) != 0 {
 pop := stack[len(stack)-1]
 stack = stack[:len(stack)-1]

 if pop != nil {
 m[pop.Val]++
 stack = append(stack, pop.Left, pop.Right)
 }
 }

 for i, i2 := range m {
 if i2 &amp;gt; max {
 res = []int{i}
 max = i2
 } else if i2 == max {
 res = append(res, i)
 }
 }
 return res
}
&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>Leetcode 1768</title><link>https://nathannaveen.dev/posts/leetcode-1768/</link><pubDate>Thu, 25 Feb 2021 15:48:01 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1768/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/merge-strings-alternately/"&gt;1768. Merge Strings Alternately&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is pretty simple. First loop through the word with the greater length. Then check whether the length of the word is greater than the current characters index, if so then add the character to the result.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;func mergeAlternately(word1 string, word2 string) string {
 res := &amp;#34;&amp;#34;

 for i := 0; i &amp;lt; int(math.Max(float64(len(word1)), float64(len(word2)))); i++ {
 if i &amp;lt; len(word1) {
 res += string(word1[i])
 }
 if i &amp;lt; len(word2) {
 res += string(word2[i])
 }
 }

 return res
}
&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>Leetcode 1296</title><link>https://nathannaveen.dev/posts/leetcode-1296/</link><pubDate>Thu, 25 Feb 2021 15:47:35 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1296/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/divide-array-in-sets-of-k-consecutive-numbers/"&gt;Divide array in sets of k consecutive numbers&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is to loop over the &lt;code&gt;nums&lt;/code&gt; array until all the values are &lt;code&gt;-1&lt;/code&gt;. The reason they all will become negative one is, whenever a item is used the value will become &lt;code&gt;-1&lt;/code&gt; so the code knows to not use that number again.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;If you didn&amp;rsquo;t understand the explanation this can be shown using the code on the bottom, an example and some pictures:&lt;/strong&gt;
&lt;em&gt;By the way sorry if my handwriting is messy&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Leetcode 1566</title><link>https://nathannaveen.dev/posts/leetcode-1566/</link><pubDate>Thu, 25 Feb 2021 15:46:57 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1566/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/detect-pattern-of-length-m-repeated-k-or-more-times/"&gt;1566. Detect Pattern of Length M Repeated K or More Times&lt;/a&gt;
The idea of this can be show by this image&lt;/p&gt;
&lt;p&gt;&lt;img src="https://i.imgur.com/XEPQ2YV.jpg" alt=""&gt;&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;func containsPattern(arr []int, m int, k int) bool {
 counter := 0

 for i := 0; i &amp;lt; len(arr) - m; i++ {
 if arr[i] != arr[i+m] {
 counter = 0
 } else {
 counter++
 }

 if counter == (k-1)*m {
 return true
 }
 }

 return false
}
&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>Leetcode 976</title><link>https://nathannaveen.dev/posts/leetcode-976/</link><pubDate>Thu, 25 Feb 2021 13:50:15 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-976/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/largest-perimeter-triangle"&gt;976. Largest Perimeter Triangle&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is to sort the array and then keep on checking the largest three side lengths.&lt;/p&gt;
&lt;p&gt;In the problem it asks us to &amp;ldquo;return the largest perimeter of a triangle with non-zero area.&amp;rdquo; Non-zero area means a triangle with the two smaller side lengths that add up to be greater than the greatest side length. This can be show in a couple images&lt;/p&gt;</description></item><item><title>Leetcode 1523</title><link>https://nathannaveen.dev/posts/leetcode-1523/</link><pubDate>Wed, 24 Feb 2021 17:03:24 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1523/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/count-odd-numbers-in-an-interval-range/"&gt;1523. Count Odd Numbers in an Interval Range&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The idea of this solution is to get the number odd numbers from &lt;code&gt;0&lt;/code&gt; to &lt;code&gt;high&lt;/code&gt;, and then subtract the number of odd numbers from &lt;code&gt;0&lt;/code&gt; to &lt;code&gt;low - 1&lt;/code&gt;. The idea can be shown by an example:&lt;/p&gt;
&lt;hr&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;high: 7
low : 3
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;img src="https://assets.leetcode.com/users/images/2ca6929e-c01e-491f-9505-85dc303d779a_1614122599.638341.png" alt="image"&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;The odd numbers from &lt;code&gt;0&lt;/code&gt; to &lt;code&gt;high&lt;/code&gt; (&lt;code&gt;7&lt;/code&gt;).&lt;/em&gt; There are &lt;code&gt;4&lt;/code&gt; odd numbers from &lt;code&gt;0&lt;/code&gt; to &lt;code&gt;7&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src="https://assets.leetcode.com/users/images/0b5c316a-d1ed-426a-889f-2741c8b861f4_1614122953.1401534.png" alt="image"&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;The odd numbers from &lt;code&gt;0&lt;/code&gt; to &lt;code&gt;low - 1&lt;/code&gt; (&lt;code&gt;2&lt;/code&gt;).&lt;/em&gt; There is &lt;code&gt;1&lt;/code&gt; odd numbers from &lt;code&gt;0&lt;/code&gt; to &lt;code&gt;2&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The number of odd numbers would be &lt;code&gt;4 - 1 = 3&lt;/code&gt;. Three odd numbers.&lt;/p&gt;</description></item><item><title>Leetcode 1637</title><link>https://nathannaveen.dev/posts/leetcode-1637/</link><pubDate>Wed, 24 Feb 2021 16:52:08 -0500</pubDate><guid>https://nathannaveen.dev/posts/leetcode-1637/</guid><description>&lt;p&gt;&lt;a href="https://leetcode.com/problems/widest-vertical-area-between-two-points-containing-no-points/"&gt;1637. Widest Vertical Area Between Two Points Containing No Points&lt;/a&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;points = {x, y}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The idea of this solution is to ignore the &lt;code&gt;y&lt;/code&gt; part of &lt;code&gt;points&lt;/code&gt; because the vertical area is the made of vertical lines. Vertical lines are made up off one &lt;code&gt;x&lt;/code&gt; value for every &lt;code&gt;y&lt;/code&gt; value. An example could be the line &lt;code&gt;x = 3&lt;/code&gt;, this is a vertical line at the x value &lt;code&gt;3&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>About</title><link>https://nathannaveen.dev/about/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://nathannaveen.dev/about/</guid><description>&lt;p&gt;I&amp;rsquo;m Nathan Naveen, founder of &lt;a href="https://bomfather.dev/"&gt;https://bomfather.dev/&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I like solving Leetcode problems to keep improving my problem solving skills and not have Claude do all of my thinking :)&lt;/p&gt;
&lt;p&gt;In my free time I love reading and doing Brazilian Jiu Jitsu!&lt;/p&gt;
&lt;p&gt;You can also find me on &lt;a href="https://github.com/nathannaveen"&gt;GitHub&lt;/a&gt; and &lt;a href="https://leetcode.com/u/nathannaveen/"&gt;Leetcode&lt;/a&gt;.&lt;/p&gt;</description></item></channel></rss>