<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Arpan Patel</title>
    <description>The latest articles on DEV Community by Arpan Patel (@apatel-ai).</description>
    <link>https://dev.to/apatel-ai</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1093756%2Fc207b494-2aba-4f8f-9462-e768a9f3d938.jpeg</url>
      <title>DEV Community: Arpan Patel</title>
      <link>https://dev.to/apatel-ai</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/apatel-ai"/>
    <language>en</language>
    <item>
      <title>TIL: Understanding Design Ideation</title>
      <dc:creator>Arpan Patel</dc:creator>
      <pubDate>Sun, 29 Sep 2024 17:50:02 +0000</pubDate>
      <link>https://dev.to/apatel-ai/til-understanding-design-ideation-4a0a</link>
      <guid>https://dev.to/apatel-ai/til-understanding-design-ideation-4a0a</guid>
      <description>&lt;p&gt;Today I learned about the concept of design ideation, an essential step in the design thinking process. Ideation is about generating a broad set of ideas on a given topic without immediately evaluating them. It’s a creative phase meant to encourage exploration and innovation, where quantity takes precedence over quality. Let's dive deeper into what this process entails and how it plays out in real-world scenarios.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Ideation?
&lt;/h2&gt;

&lt;p&gt;At its core, ideation is the process of brainstorming potential solutions to a problem without filtering or critiquing ideas. It’s a space for creativity to thrive. The beauty of ideation lies in the fact that it allows for the generation of a diverse range of possibilities, giving teams ample room to explore different approaches.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ideation in Action
&lt;/h2&gt;

&lt;p&gt;In practice, ideation involves several key steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Brainstorm out loud&lt;/strong&gt;: &lt;br&gt;
Encourage open, verbalized brainstorming to share ideas freely.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Document all ideas&lt;/strong&gt;: &lt;br&gt;
Every idea, no matter how outlandish, is worth capturing.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Focus on quantity&lt;/strong&gt;: &lt;br&gt;
The more ideas generated, the better. Aim for variety and volume.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Avoid immediate evaluation&lt;/strong&gt;: &lt;br&gt;
Resist the temptation to critique or discard ideas during the brainstorming phase.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Bring together a diverse team&lt;/strong&gt;: &lt;br&gt;
Diversity sparks innovation. People from different backgrounds contribute unique perspectives.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Question the obvious&lt;/strong&gt;: &lt;br&gt;
Challenge assumptions and consider unorthodox solutions.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Once the brainstorming is done, you can start evaluating the ideas based on three key criteria:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Feasibility: Is this technically possible to build?

&lt;/li&gt;
&lt;li&gt;Desirability: Does this idea solve the user's problem?

&lt;/li&gt;
&lt;li&gt;Viability: Is this solution financially beneficial for the business?

&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Preparing for Ideation
&lt;/h2&gt;

&lt;p&gt;Before diving into ideation, it’s important to complete the first two phases of the design thinking process: empathize and define.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Empathize with the user: &lt;br&gt;
Understand who you’re designing for and what their needs are. This phase often includes creating empathy maps, personas, user stories, and journey maps to get a clear sense of the user’s experience.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Define the problem: &lt;br&gt;
Clearly articulate the problem you’re trying to solve. A well-defined problem keeps your team aligned and focused during the ideation phase, ensuring that the solutions you generate address the user’s needs.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  How to Ideate Effectively
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Create a conducive environment: Whether you're meeting in person or virtually, choose a space that fosters creativity. A different environment can often trigger new ways of thinking.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Set a time limit: Although there are countless ideas you could generate, it's important to set boundaries. This ensures that you transition from idea generation to refining and selecting the best ideas.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Assemble a diverse team: Bring together people with different backgrounds, perspectives, and life experiences. The more diverse your team, the richer your pool of ideas will be.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Think outside the box: Don’t be afraid to propose unconventional ideas. Sometimes, the most innovative solutions come from thinking beyond traditional boundaries.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Further Reading:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://medium.com/@aniket.ambekar/lessons-learned-from-the-book-dont-make-me-think-by-steve-krug-8eddc339d213" rel="noopener noreferrer"&gt;Lessons learned from the book “Don’t make me think” by Steve Krug&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://careerfoundry.com/en/blog/ux-design/what-is-ideation-in-design-thinking/" rel="noopener noreferrer"&gt;A Guide to the Most Important Ideation Techniques&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://designthinking.ideo.com/" rel="noopener noreferrer"&gt;IDEO's Approach to Design Thinking&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;The content above reflects my independent research and insights gained from Google’s UI/UX Design course on Coursera.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>learning</category>
      <category>design</category>
      <category>ui</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Inorder Traversal in a Nutshell 🥜</title>
      <dc:creator>Arpan Patel</dc:creator>
      <pubDate>Thu, 08 Feb 2024 16:17:54 +0000</pubDate>
      <link>https://dev.to/apatel-ai/inorder-traversal-in-a-nutshell-3je3</link>
      <guid>https://dev.to/apatel-ai/inorder-traversal-in-a-nutshell-3je3</guid>
      <description>&lt;h2&gt;
  
  
  What is Inorder Traversal ?
&lt;/h2&gt;

&lt;p&gt;Inorder Traversal is a type of tree traversal technique which follows the Left-Root-Right pattern. &lt;/p&gt;

&lt;h2&gt;
  
  
  Left-Root-Right pattern
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;The left subtree is traversed first.&lt;/li&gt;
&lt;li&gt;Then the root node for the subtree is traversed.&lt;/li&gt;
&lt;li&gt;Finally, the right subtree is traversed.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp6043ca5eut6e01yxvi5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp6043ca5eut6e01yxvi5.png" alt="Image description" width="655" height="576"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Example 1:
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1edjzy2ig5cm9fh160ev.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1edjzy2ig5cm9fh160ev.png" alt="basic concept" width="606" height="577"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Example 2:
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frk3vvzagcw8yob0dv7jz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frk3vvzagcw8yob0dv7jz.png" alt="Image description" width="697" height="607"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>leetcode</category>
      <category>programming</category>
      <category>algorithms</category>
      <category>python</category>
    </item>
    <item>
      <title>Understanding the Sliding Window Technique</title>
      <dc:creator>Arpan Patel</dc:creator>
      <pubDate>Fri, 01 Sep 2023 20:09:23 +0000</pubDate>
      <link>https://dev.to/apatel-ai/understanding-the-sliding-window-technique-17n2</link>
      <guid>https://dev.to/apatel-ai/understanding-the-sliding-window-technique-17n2</guid>
      <description>&lt;h2&gt;
  
  
  What is the Sliding Window Technique? 🤔
&lt;/h2&gt;

&lt;p&gt;The sliding window technique is a common algorithmic strategy used to solve problems involving arrays, strings, or sequences where you maintain a dynamic "window" of elements and slide it through the data to perform specific operations or calculations efficiently. The window is typically defined by two pointers, often referred to as the "left" and "right" pointers, and it represents a subset of the elements within the given data structure.&lt;/p&gt;

&lt;h2&gt;
  
  
  Visualize Sliding Window 👀:
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F585t92cwxvbrr5ql2eb9.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F585t92cwxvbrr5ql2eb9.jpeg" alt="window Sliding technique" width="660" height="423"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  When to use the technique (key terms):
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Maximum&lt;/li&gt;
&lt;li&gt;Minimum&lt;/li&gt;
&lt;li&gt;Longest&lt;/li&gt;
&lt;li&gt;Shortest&lt;/li&gt;
&lt;li&gt;Sum&lt;/li&gt;
&lt;li&gt;Product&lt;/li&gt;
&lt;li&gt;Subarray&lt;/li&gt;
&lt;li&gt;Substring&lt;/li&gt;
&lt;li&gt;Array&lt;/li&gt;
&lt;li&gt;String&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example LeetCode problems: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://leetcode.com/problems/longest-substring-without-repeating-characters/"&gt;#3&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://leetcode.com/problems/minimum-size-subarray-sum/"&gt;#209&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://leetcode.com/problems/maximum-subarray/"&gt;#53&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://leetcode.com/problems/max-consecutive-ones-iii/"&gt;#1004&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://leetcode.com/problems/fruit-into-baskets/"&gt;#904&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Code walkthrough :
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Longest Substring Without Repeating Characters
&lt;/h3&gt;

&lt;p&gt;Problem Description: &lt;/p&gt;

&lt;p&gt;Given a string &lt;code&gt;s&lt;/code&gt;, find the length of the &lt;strong&gt;longest&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;substring&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;without repeating characters.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example 1:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Input: s = "abcabcbb"
Output: 3
Explanation: The answer is "abc", with the length of 3.

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Example 2:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Input: s = "bbbbb"
Output: 1
Explanation: The answer is "b", with the length of 1.

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Example 3:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Input: s = "pwwkew"
Output: 3
Explanation: The answer is "wke", with the length of 3.
Notice that the answer must be a substring, "pwke" is a subsequence and not a substring.

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Solution:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;var lengthOfLongestSubstring = function(s) {
    // Initialize a set to keep track of characters inside the current window
    const charSet = new Set(); 

    // initialize two pointers to set window boundaries
    let start = 0;
    let end = 0; 

    // initalize var to keep track of maximum length of substring without repeating characters.
    let maxLen = 0; 

    // iterate throught the string from the 'end' pointer. 
    while(end &amp;lt; s.length) {
        // check if the character at 's[end]' is not already in the set. 
        if(!charSet.has(s[end])){
            // add the character to the set
            charSet.add(s[end]); 

            // calculate the current substring length and update the 'maxLen'
            maxLen = Math.max(maxLen, end - start + 1);

            // move the 'end' pointer to expand the window 
            end++; 
        }else{
            // if the character is already in the set, remove characters from 'start' until the duplicates are gone.
            charSet.delete(s[start]); 
            // move the 'start' pointer to shrink the window
            start++; 
        }
    }

    // Return the maximum length of the substring without repeating characters. 
    return maxLen; 
};


// time complexity: O(n)
// space complexity: O(k)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  References:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://leetcode.com/"&gt;LeetCode&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.geeksforgeeks.org/window-sliding-technique/"&gt;GG&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>beginners</category>
      <category>algorithms</category>
    </item>
    <item>
      <title>Binary Search Decoded: Navigating Search Algorithms</title>
      <dc:creator>Arpan Patel</dc:creator>
      <pubDate>Thu, 31 Aug 2023 18:07:36 +0000</pubDate>
      <link>https://dev.to/apatel-ai/binary-search-decoded-navigating-search-algorithms-6nm</link>
      <guid>https://dev.to/apatel-ai/binary-search-decoded-navigating-search-algorithms-6nm</guid>
      <description>&lt;h2&gt;
  
  
  What is Binary Search &amp;amp; how does it work ?  🤔
&lt;/h2&gt;

&lt;p&gt;Binary Search is a searching algorithm that is applicable &lt;strong&gt;only to sorted arrays&lt;/strong&gt;. It operates by repeatedly dividing the search interval in half, narrowing down the potential locations of the target value with each iteration. This cycle of dividing and searching continues until the target value has been found or until it is determined that the element is not in the array.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is the Space &amp;amp; Time Complexity of Binary Search? ⏰
&lt;/h2&gt;

&lt;p&gt;The average time complexity of the Binary Search algorithm is O(log N), where N is the number of elements in the array. This logarithmic time complexity arises from the fact that with each step, the search interval is halved, leading to a rapid reduction in the number of remaining elements to search through.&lt;/p&gt;

&lt;p&gt;The space complexity of Binary Search is O(1), indicating constant space usage. The algorithm doesn't require additional memory that scales with the size of the input; it only uses a few variables to keep track of the indices and midpoints during the search.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4a7vipg84vpfgaiu7mjm.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4a7vipg84vpfgaiu7mjm.gif" alt="Image description" width="640" height="426"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Exploring Binary Search: A Deep Dive with Code Examples 🧑🏻‍💻
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Problem 1:
&lt;/h3&gt;

&lt;p&gt;Given a sorted array and a target integer value, find and return the index location of the target value.&lt;/p&gt;

&lt;p&gt;Example: &lt;/p&gt;

&lt;p&gt;array = [1,4,7,10,11,34,40,42]&lt;/p&gt;

&lt;p&gt;target = 34&lt;/p&gt;

&lt;p&gt;Technique &amp;amp; Approach being used:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;
&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;search&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;target&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
    &lt;span class="c1"&gt;// Initalize pointers&lt;/span&gt;

    &lt;span class="c1"&gt;// left: starts at the beginning of the array &lt;/span&gt;
    &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;left&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;  
    &lt;span class="c1"&gt;// right: starts at the end of the array&lt;/span&gt;
    &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;right&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 

    &lt;span class="c1"&gt;//condition: continue loop until left pointer is &amp;lt;= to the right pointer&lt;/span&gt;
    &lt;span class="k"&gt;while&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;left&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="nx"&gt;right&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;

        &lt;span class="c1"&gt;// calculate the midpoint of the current search interval&lt;/span&gt;
        &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;mid&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;floor&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;left&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;right&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 

        &lt;span class="c1"&gt;// if the mid point === the target value "we found the target's location"&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;mid&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="nx"&gt;target&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
                &lt;span class="c1"&gt;//return the index value of the mid point&lt;/span&gt;
                &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;mid&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="c1"&gt;// otherwise if the target value is less than the midpoint value. &lt;/span&gt;
        &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;target&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;mid&lt;/span&gt;&lt;span class="p"&gt;]){&lt;/span&gt;
        &lt;span class="c1"&gt;//narrow the search range to the left half&lt;/span&gt;
        &lt;span class="nx"&gt;right&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;mid&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; 
        &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="c1"&gt;// otherwise if the target is larger than the midpoint value&lt;/span&gt;
        &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="c1"&gt;// narrow the search range to the right half&lt;/span&gt;
        &lt;span class="nx"&gt;left&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;mid&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="c1"&gt;//if the loop completes without finding the target return -1. &lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; 
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;//Time complexity: O(logn)&lt;/span&gt;
&lt;span class="c1"&gt;//Space complexity: O(1)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Problem 2:
&lt;/h3&gt;

&lt;p&gt;There is an integer array &lt;code&gt;nums&lt;/code&gt; sorted in ascending order (with &lt;strong&gt;distinct&lt;/strong&gt; values).&lt;/p&gt;

&lt;p&gt;Prior to being passed to your function, &lt;code&gt;nums&lt;/code&gt; is &lt;strong&gt;possibly rotated&lt;/strong&gt; at an unknown pivot index &lt;code&gt;k&lt;/code&gt; (&lt;code&gt;1 &amp;lt;= k &amp;lt; nums.length&lt;/code&gt;) such that the resulting array is &lt;code&gt;[nums[k], nums[k+1], ..., nums[n-1], nums[0], nums[1], ..., nums[k-1]]&lt;/code&gt; (&lt;strong&gt;0-indexed&lt;/strong&gt;). For example, &lt;code&gt;[0,1,2,4,5,6,7]&lt;/code&gt; might be rotated at pivot index &lt;code&gt;3&lt;/code&gt; and become &lt;code&gt;[4,5,6,7,0,1,2]&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Given the array &lt;code&gt;nums&lt;/code&gt; &lt;strong&gt;after&lt;/strong&gt; the possible rotation and an integer &lt;code&gt;target&lt;/code&gt;, return &lt;em&gt;the index of&lt;/em&gt; &lt;code&gt;target&lt;/code&gt; &lt;em&gt;if it is in&lt;/em&gt; &lt;code&gt;nums&lt;/code&gt;&lt;em&gt;, or&lt;/em&gt; &lt;code&gt;-1&lt;/code&gt; &lt;em&gt;if it is not in&lt;/em&gt; &lt;code&gt;nums&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;You must write an algorithm with &lt;code&gt;O(log n)&lt;/code&gt; runtime complexity.&lt;/p&gt;

&lt;p&gt;Example 1: &lt;/p&gt;

&lt;p&gt;Input: nums = [4,5,6,7,0,1,2], target = 0&lt;br&gt;
Output: 4&lt;/p&gt;

&lt;p&gt;Example 2: &lt;/p&gt;

&lt;p&gt;Input: nums = [4,5,6,7,0,1,2], target = 3&lt;br&gt;
Output: -1&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;search&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;nums&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;target&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// Initalize pointers&lt;/span&gt;

    &lt;span class="c1"&gt;// left: starts at the beginning of the array &lt;/span&gt;
    &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;left&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="c1"&gt;// right: starts at the end of the array &lt;/span&gt;
    &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;right&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;nums&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="k"&gt;while &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;left&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="nx"&gt;right&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;mid&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;floor&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;left&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;right&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

        &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;nums&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;mid&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="nx"&gt;target&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;mid&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// Target found, return the index&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;

        &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;nums&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;left&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="nx"&gt;nums&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;mid&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="c1"&gt;// If the left part is sorted&lt;/span&gt;
            &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;nums&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;left&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="nx"&gt;target&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nx"&gt;target&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="nx"&gt;nums&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;mid&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="c1"&gt;// If the target is within the range of the sorted left part&lt;/span&gt;
                &lt;span class="nx"&gt;right&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;mid&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// Adjust the right pointer&lt;/span&gt;
            &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="nx"&gt;left&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;mid&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// Adjust the left pointer&lt;/span&gt;
            &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="c1"&gt;// If the right part is sorted&lt;/span&gt;
            &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;nums&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;mid&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="nx"&gt;target&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nx"&gt;target&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="nx"&gt;nums&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;right&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="c1"&gt;// If the target is within the range of the sorted right part&lt;/span&gt;
                &lt;span class="nx"&gt;left&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;mid&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// Adjust the left pointer (narrow to right half)&lt;/span&gt;
            &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="nx"&gt;right&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;mid&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// Adjust the right pointer (narrow to left half)&lt;/span&gt;
            &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// Target not found, return -1&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// Time Complexity: O(log n)&lt;/span&gt;
&lt;span class="c1"&gt;// Space Complexity: O(1)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  A short summary by Fireship:
&lt;/h2&gt;


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
      &lt;div class="c-embed__cover"&gt;
        &lt;a href="https://www.youtube.com/watch?si=rGgLvettlsbmZbQT&amp;amp;v=MFhxShGxHWc&amp;amp;feature=youtu.be" class="c-link s:max-w-50 align-middle" rel="noopener noreferrer"&gt;
          &lt;img alt="" src="https://res.cloudinary.com/practicaldev/image/fetch/s--qaQOadCy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://i.ytimg.com/vi/MFhxShGxHWc/maxresdefault.jpg" height="450" class="m-0" width="800"&gt;
        &lt;/a&gt;
      &lt;/div&gt;
    &lt;div class="c-embed__body"&gt;
      &lt;h2 class="fs-xl lh-tight"&gt;
        &lt;a href="https://www.youtube.com/watch?si=rGgLvettlsbmZbQT&amp;amp;v=MFhxShGxHWc&amp;amp;feature=youtu.be" rel="noopener noreferrer" class="c-link"&gt;
          Binary Search Algorithm in 100 Seconds - YouTube
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;p class="truncate-at-3"&gt;
          Binary Search is an algorithm that can find the index of an element in a sorted array data structure. You've likely used Binary Search it in everyday life wi...
        &lt;/p&gt;
      &lt;div class="color-secondary fs-s flex items-center"&gt;
          &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://res.cloudinary.com/practicaldev/image/fetch/s--znEy7ANa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.youtube.com/s/desktop/905763c7/img/favicon.ico" width="16" height="16"&gt;
        youtube.com
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;



&lt;p&gt;References: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.geeksforgeeks.org/complexity-analysis-of-binary-search/"&gt;https://www.geeksforgeeks.org/complexity-analysis-of-binary-search/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://leetcode.com/problems/search-in-rotated-sorted-array/"&gt;https://leetcode.com/problems/search-in-rotated-sorted-array/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=6ysjqCUv3K4"&gt;https://www.youtube.com/watch?v=6ysjqCUv3K4&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>javascript</category>
      <category>programming</category>
      <category>beginners</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Two Sum Problem</title>
      <dc:creator>Arpan Patel</dc:creator>
      <pubDate>Sun, 20 Aug 2023 19:37:29 +0000</pubDate>
      <link>https://dev.to/apatel-ai/two-sum-problem-2p0l</link>
      <guid>https://dev.to/apatel-ai/two-sum-problem-2p0l</guid>
      <description>&lt;h3&gt;
  
  
  Problem Description
&lt;/h3&gt;

&lt;p&gt;Given an array of integers nums and an integer target, return indices of the two numbers such that they add up to target.&lt;/p&gt;

&lt;p&gt;You may assume that each input would have exactly one solution, and you may not use the same element twice.&lt;/p&gt;

&lt;p&gt;You can return the answer in any order.&lt;/p&gt;

&lt;h3&gt;
  
  
  Difficulty Level: Easy
&lt;/h3&gt;

&lt;h4&gt;
  
  
  LeetCode Problem #1: &lt;a href="https://leetcode.com/problems/two-sum/"&gt;Link&lt;/a&gt;
&lt;/h4&gt;

&lt;p&gt;Approach 1: Brute Force Algorithm&lt;br&gt;
Time Complexity: O(n^2)&lt;br&gt;
Solution:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;var twoSum = function(nums, target) {
    for (let i = 0; i &amp;lt; nums.length; i++) {
        for (let j = i + 1; j &amp;lt; nums.length; j++) {
            if (nums[i] + nums[j] === target) {
                return [i, j];
            }
        }
    }
    return [];
};
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Approach 2: Hashing &amp;amp; Two-pointer Technique&lt;br&gt;
Time Complexity: O(n)&lt;br&gt;
Solution:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;var twoSum = function(nums, target) {
    const indexMap = new Map();

    for (let i = 0; i &amp;lt; nums.length; i++) {
        const complement = target - nums[i];

        if (indexMap.has(complement)) {
            return [indexMap.get(complement), i];
        }

        indexMap.set(nums[i], i);
    }

    return []; 
};

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Algorithm Explanation:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Initialize an empty Map called indexMap. This map will store each number encountered in the array as a key and its index as the corresponding value.&lt;/p&gt;

&lt;p&gt;Iterate through the input array nums using a for loop. For each element at index i, do the following:&lt;/p&gt;

&lt;p&gt;Calculate the complement by subtracting the current element (nums[i]) from the target. The complement is the value that, when added to nums[i], results in the target sum.&lt;/p&gt;

&lt;p&gt;Check if the map indexMap contains the calculated complement as a key. This is done using the .has(complement) method of the Map. If the complement exists in the map, it means that a pair of numbers has been found whose sum equals the target.&lt;/p&gt;

&lt;p&gt;In this case, return an array containing the indices of the two numbers. The first index is retrieved from the map using indexMap.get(complement) (since the map stores indices as values), and the second index is simply i.&lt;br&gt;
If the complement is not found in the map, it means that a matching pair has not been encountered yet. In this case, add the current number (nums[i]) to the map with its index as the value. This prepares the map for future lookups as the algorithm progresses through the array.&lt;/p&gt;

&lt;p&gt;If the loop completes without finding a valid pair that sums up to the target, return an empty array to indicate that no solution was found.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Time Complexity:&lt;/strong&gt;&lt;br&gt;
The algorithm performs a single pass through the array, performing constant-time operations (hash map lookups and inserts) at each step. Therefore, the time complexity is O(n), where n is the length of the input array.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj9mmfjvirslffj6toczm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj9mmfjvirslffj6toczm.png" alt="Example" width="800" height="388"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  References:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://leetcode.com/problems/two-sum/"&gt;LeetCODE&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.techinterviewhandbook.org/grind75"&gt;Grind 75&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://developer.mozilla.org/en-%20US/docs/Web/JavaScript/Reference/Global_Objects/Map/has"&gt;mdn web docs&lt;/a&gt; more about (.set, .get, .has)&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>javascript</category>
      <category>algorithms</category>
      <category>leetcode</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
