<?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: Piyush Baraskar</title>
    <description>The latest articles on DEV Community by Piyush Baraskar (@piyushnextgen).</description>
    <link>https://dev.to/piyushnextgen</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4060299%2F5d55c4ad-9b6f-4caa-b479-35e5ddc36af4.jpg</url>
      <title>DEV Community: Piyush Baraskar</title>
      <link>https://dev.to/piyushnextgen</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/piyushnextgen"/>
    <language>en</language>
    <item>
      <title>Vocab deck</title>
      <dc:creator>Piyush Baraskar</dc:creator>
      <pubDate>Wed, 14 Oct 2026 22:26:25 +0000</pubDate>
      <link>https://dev.to/piyushnextgen/vocab-deck-4gba</link>
      <guid>https://dev.to/piyushnextgen/vocab-deck-4gba</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjkncxu0ddwxjcvl3ilpr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjkncxu0ddwxjcvl3ilpr.png" alt=" " width="800" height="409"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F49dvvo80m839gckagn9n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F49dvvo80m839gckagn9n.png" alt=" " width="800" height="410"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F84hhp4g50cbk6mamctbn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F84hhp4g50cbk6mamctbn.png" alt=" " width="800" height="349"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Vocab Deck&lt;/p&gt;

&lt;p&gt;I've been revisiting my existing projects to improve them by adding features, refining the UI/UX, and making them more reliable. Vocab Deck is one of them.&lt;/p&gt;

&lt;p&gt;It's a vocabulary practice app that helps users learn words through different study modes and track their progress.&lt;/p&gt;

&lt;p&gt;Vocab Deck lets users choose a built-in or custom vocabulary deck and practice through flashcards, quizzes, typing exercises, or a matching game. The frontend validates vocabulary data and uses a pure-function game engine to generate randomized sessions, with features like answer checking, distractor generation, and real-time feedback. Built-in decks are served by the FastAPI backend, while custom decks and theme preferences are stored in the browser.  Study progress stays in memory and resets when the page reloads.&lt;/p&gt;

&lt;p&gt;FEATURES -&lt;/p&gt;

&lt;p&gt;Four Study Modes&lt;br&gt;
• 3D Flashcards - Review words and meanings.&lt;br&gt;
• Multiple-Choice Quizzes - Test your understanding.&lt;br&gt;
• Typing Practice - Practice active recall with accent-insensitive answer checking.&lt;br&gt;
• Matching Game -  Match words with their meanings&lt;/p&gt;

&lt;p&gt;Built-in Language Decks:&lt;br&gt;
• English → French&lt;br&gt;
• English → German&lt;br&gt;
• English → Japanese&lt;/p&gt;

&lt;p&gt;Custom Decks:&lt;br&gt;
Create and edit decks, with JSON and CSV import/export to manage and reuse vocabulary lists.&lt;/p&gt;

&lt;p&gt;Progress Tracking:&lt;br&gt;
Track study statistics, streaks, and time spent across different study modes.&lt;/p&gt;

&lt;p&gt;TECH STACK&lt;br&gt;
Backend -&lt;br&gt;
Python 3.11&lt;br&gt;
FastAPI 0.110+ &lt;br&gt;
Uvicorn &lt;br&gt;
Pydantic 2 &lt;/p&gt;

&lt;p&gt;Frontend -&lt;br&gt;
Node.js 18+ &lt;br&gt;
React 18 + TypeScript &lt;br&gt;
Vite&lt;/p&gt;

&lt;p&gt;Testing - &lt;br&gt;
Vitest + Testing Library &lt;br&gt;
Playwright &lt;/p&gt;

&lt;p&gt;The project is live, and contributions are welcome! You can contribute to the codebase or open an issue to report bugs, suggest improvements, or propose new features.&lt;/p&gt;

&lt;p&gt;Live Demo: &lt;a href="https://vocab-deck.vercel.app/" rel="noopener noreferrer"&gt;https://vocab-deck.vercel.app/&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/PIYUSH-NEXTGEN" rel="noopener noreferrer"&gt;
        PIYUSH-NEXTGEN
      &lt;/a&gt; / &lt;a href="https://github.com/PIYUSH-NEXTGEN/Vocab-Deck" rel="noopener noreferrer"&gt;
        Vocab-Deck
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Vocab Deck&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Vocab Deck&lt;/strong&gt; is a vocabulary practice application that helps language learners memorize words through four interactive study modes. It provides a modern React frontend backed by a FastAPI vocabulary service. Built-in decks cover English→French, English→German, and English→Japanese; users can also create, edit, import, and export custom decks entirely in the browser.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Features&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Four study modes&lt;/strong&gt;: Flashcards (with 3D flip), Multiple-choice Quiz, Typing (accent-insensitive option), Matching&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Three built-in language pairs&lt;/strong&gt;: English→French, English→German, English→Japanese (50 entries each, directly comparable)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Custom decks&lt;/strong&gt;: Create, edit, import (JSON/CSV), export; validated client-side with same rules as built-in decks&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Session tracking&lt;/strong&gt;: Per-mode stats (correct/incorrect, streaks, time) preserved across mode switches; reset on demand&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Theme support&lt;/strong&gt;: Light/dark with &lt;code&gt;prefers-color-scheme&lt;/code&gt; detection and &lt;code&gt;localStorage&lt;/code&gt; persistence, no flash on load&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Accessibility&lt;/strong&gt;: &lt;code&gt;prefers-reduced-motion&lt;/code&gt; swaps flip for instant face swap; focus-visible outlines; semantic HTML&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Offline-capable custom decks&lt;/strong&gt;: Stored in &lt;code&gt;localStorage&lt;/code&gt;, portable via JSON/CSV…&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/PIYUSH-NEXTGEN/Vocab-Deck" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Feel free to explore the project and share your feedback.&lt;/p&gt;

</description>
      <category>frontend</category>
      <category>learning</category>
      <category>ux</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Outdoor Nudge: One Small Mission to Get You Outside</title>
      <dc:creator>Piyush Baraskar</dc:creator>
      <pubDate>Sun, 11 Oct 2026 11:33:01 +0000</pubDate>
      <link>https://dev.to/piyushnextgen/outdoor-nudge-one-small-mission-to-get-you-outside-1agp</link>
      <guid>https://dev.to/piyushnextgen/outdoor-nudge-one-small-mission-to-get-you-outside-1agp</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week1-2026-10-05"&gt;Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;There is a particular kind of afternoon I wanted to build this for.&lt;/p&gt;

&lt;p&gt;You've been sitting at your desk for hours. Your brain feels a little fried, you're restless, and you know you probably need a break. You open another tab, check your phone, scroll for a while, and somehow another 20 minutes disappear.&lt;/p&gt;

&lt;p&gt;You know you should step outside. You just can't think of what to do once you get there.&lt;/p&gt;

&lt;p&gt;A walk sounds boring. The weather might be terrible. You don't have the energy for anything ambitious. And generic advice like "touch grass" isn't exactly helpful when you're already trying to figure out how.&lt;/p&gt;

&lt;p&gt;That small moment is what led me to build &lt;strong&gt;Outdoor Nudge&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The idea is simple: tell it how you feel, and it gives you one small outdoor mission to do for roughly 20 minutes. Something concrete enough that you can stop thinking about taking a break and actually take one.&lt;/p&gt;

&lt;p&gt;No endless recommendations. No motivational lecture. Just one nudge.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Outdoor Nudge is a local-first AI app that turns your mood and the current weather into one practical outdoor activity.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You might type:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;restless and stuck at my desk&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Outdoor Nudge considers your mood, local weather, and the time of day, then generates a mission that fits the situation.&lt;/p&gt;

&lt;p&gt;Instead of getting "go for a walk," you might get something like &lt;em&gt;Shadow Sprint Intervals&lt;/em&gt;: head outside, move briskly along the sunny side of your building, use nearby landmarks for a few short intervals, and finish with some shoulder rolls.&lt;/p&gt;

&lt;p&gt;The suggestion includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;A mission title&lt;/strong&gt; that gives the activity a little personality.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Step-by-step instructions&lt;/strong&gt; so you know exactly what to do.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Why it fits&lt;/strong&gt; your mood and the current conditions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What to bring&lt;/strong&gt;, if anything.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Duration, energy level, and activity category&lt;/strong&gt; to help you decide whether it feels manageable.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal isn't to turn a break into another productivity task. It's to make getting outside easier to start.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why not just ask a chatbot?
&lt;/h3&gt;

&lt;p&gt;Because generating an idea is the easy part. Making it useful in the real world is harder.&lt;/p&gt;

&lt;p&gt;A language model might suggest sitting on a park bench when there is no bench nearby, recommend an energetic activity when you're exhausted, or suggest something that makes no sense in the current weather.&lt;/p&gt;

&lt;p&gt;Outdoor Nudge is designed around that gap between a plausible-sounding answer and an activity someone can actually do.&lt;/p&gt;

&lt;p&gt;It checks the model's output against rules for safety, realism, energy level, activity category, and repetitive suggestions. If a suggestion fails those checks, the backend asks the model to try again rather than displaying the rejected result.&lt;/p&gt;

&lt;p&gt;The model comes up with the idea. The application has the final say on whether that idea passes its checks.&lt;/p&gt;

&lt;p&gt;That's an important distinction for an app whose suggestions are meant to be followed outside, not just read on a screen.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Try it yourself:&lt;/strong&gt; Start Outdoor Nudge locally using the instructions in the repository.&lt;/p&gt;

&lt;p&gt;Repository: &lt;a href="https://github.com/PIYUSH-NEXTGEN/Outdoor-Nudge" rel="noopener noreferrer"&gt;github.com/PIYUSH-NEXTGEN/Outdoor-Nudge&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The project currently runs locally, so I haven't included a public demo URL here. A short screen recording would be a good way to demonstrate the full experience, including mood input, weather, the generated mission, and the option to request an easier or different activity.&lt;/p&gt;

&lt;p&gt;A useful demo scenario:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Enter &lt;code&gt;restless and stuck at my desk&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Let the app fetch the weather, or enter weather conditions manually.&lt;/li&gt;
&lt;li&gt;Generate a mission and inspect the steps, energy level, and explanation.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Give me another&lt;/strong&gt; to get a different suggestion.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Make it easier&lt;/strong&gt; to request a lower-energy activity.&lt;/li&gt;
&lt;li&gt;Open the history panel to see previous nudges.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I'd especially show the last two interactions because they demonstrate that this is more than a single prompt sent to an LLM.&lt;/p&gt;

&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/PIYUSH-NEXTGEN" rel="noopener noreferrer"&gt;
        PIYUSH-NEXTGEN
      &lt;/a&gt; / &lt;a href="https://github.com/PIYUSH-NEXTGEN/Outdoor-Nudge" rel="noopener noreferrer"&gt;
        Outdoor-Nudge
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Outdoor Nudge&lt;/h1&gt;
&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;Tell it how you feel, get one small outdoor mission back. Built for those afternoons when you know you should step outside but can't think of what to actually do.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href="https://github.com/PIYUSH-NEXTGEN/Outdoor-Nudge/../../issues" rel="noopener noreferrer"&gt;Report a Bug&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Table of Contents&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/PIYUSH-NEXTGEN/Outdoor-Nudge#overview" rel="noopener noreferrer"&gt;Overview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/PIYUSH-NEXTGEN/Outdoor-Nudge#problem-statement" rel="noopener noreferrer"&gt;Problem Statement&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/PIYUSH-NEXTGEN/Outdoor-Nudge#features" rel="noopener noreferrer"&gt;Features&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/PIYUSH-NEXTGEN/Outdoor-Nudge#demo" rel="noopener noreferrer"&gt;Demo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/PIYUSH-NEXTGEN/Outdoor-Nudge#how-it-works" rel="noopener noreferrer"&gt;How It Works&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/PIYUSH-NEXTGEN/Outdoor-Nudge#architecture" rel="noopener noreferrer"&gt;Architecture&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/PIYUSH-NEXTGEN/Outdoor-Nudge#tech-stack" rel="noopener noreferrer"&gt;Tech Stack&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/PIYUSH-NEXTGEN/Outdoor-Nudge#codebase-structure" rel="noopener noreferrer"&gt;Codebase Structure&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/PIYUSH-NEXTGEN/Outdoor-Nudge#getting-started" rel="noopener noreferrer"&gt;Getting Started&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/PIYUSH-NEXTGEN/Outdoor-Nudge#usage" rel="noopener noreferrer"&gt;Usage&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/PIYUSH-NEXTGEN/Outdoor-Nudge#configuration-reference" rel="noopener noreferrer"&gt;Configuration Reference&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/PIYUSH-NEXTGEN/Outdoor-Nudge#testing" rel="noopener noreferrer"&gt;Testing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/PIYUSH-NEXTGEN/Outdoor-Nudge#security" rel="noopener noreferrer"&gt;Security&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/PIYUSH-NEXTGEN/Outdoor-Nudge#limitations" rel="noopener noreferrer"&gt;Limitations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/PIYUSH-NEXTGEN/Outdoor-Nudge#roadmap" rel="noopener noreferrer"&gt;Roadmap&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/PIYUSH-NEXTGEN/Outdoor-Nudge#contributing" rel="noopener noreferrer"&gt;Contributing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/PIYUSH-NEXTGEN/Outdoor-Nudge#license" rel="noopener noreferrer"&gt;License&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/PIYUSH-NEXTGEN/Outdoor-Nudge#acknowledgements" rel="noopener noreferrer"&gt;Acknowledgements&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Overview&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;Outdoor Nudge is a tiny local first web app. You type your mood in plain words
("restless and stuck at my desk"), it looks up the live weather for your spot
using Open-Meteo, and a local LLM (Ollama, &lt;code&gt;gemma3:4b&lt;/code&gt; by default) comes up with
exactly one concrete outdoor task of about 20 minutes.&lt;/p&gt;
&lt;p&gt;Each nudge has a title, step by step instructions, why it fits your mood and
weather, what to bring, an energy level, and a category. The front end is a
single page (…&lt;/p&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/PIYUSH-NEXTGEN/Outdoor-Nudge" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;The repository includes the application, prompt and validation logic, weather integration, local history, tests, and setup instructions.&lt;/p&gt;

&lt;p&gt;It's open source under the MIT license, so you're welcome to explore it, run it locally, report issues, or contribute improvements.&lt;/p&gt;

&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;I wanted the application to be small enough to run without a complicated setup, but I didn't want to sacrifice the logic that makes its suggestions useful.&lt;/p&gt;

&lt;p&gt;That led to a deliberately straightforward stack:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;Technology&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Frontend&lt;/td&gt;
&lt;td&gt;HTML, CSS, JavaScript&lt;/td&gt;
&lt;td&gt;Responsive interface, mood input, mission cards, history, and model comparison&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Backend&lt;/td&gt;
&lt;td&gt;Python, FastAPI, Uvicorn&lt;/td&gt;
&lt;td&gt;API endpoints, request handling, orchestration, and retry logic&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;Ollama + Gemma 3 4B&lt;/td&gt;
&lt;td&gt;Local generation of structured outdoor missions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Weather&lt;/td&gt;
&lt;td&gt;Open-Meteo&lt;/td&gt;
&lt;td&gt;Live weather conditions without an API key&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Validation&lt;/td&gt;
&lt;td&gt;Pydantic + custom Python rules&lt;/td&gt;
&lt;td&gt;Validate the output structure, activity constraints, and safety checks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Storage&lt;/td&gt;
&lt;td&gt;Local JSON file&lt;/td&gt;
&lt;td&gt;Save previous nudges and completion status&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Testing&lt;/td&gt;
&lt;td&gt;Playwright + Python tests&lt;/td&gt;
&lt;td&gt;Test the interface, quality checks, and validation rules&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;No React. No frontend build step. No hosted database. No paid AI API.&lt;/p&gt;

&lt;p&gt;I kept the stack intentionally boring because I wanted the interesting engineering to live in how the app makes decisions, not in how many dependencies it uses.&lt;/p&gt;

&lt;h3&gt;
  
  
  The architecture
&lt;/h3&gt;

&lt;p&gt;Here's how a request moves through the application:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                 USER
                   |
                   v
       +------------------------+
       |   Browser Interface    |
       |   static/index.html    |
       +------------------------+
                   |
          +--------+---------+
          |                  |
          v                  v
    GET /api/weather    POST /api/nudge
          |                  |
          v                  v
    +-------------+   +------------------+
    | Open-Meteo  |   | FastAPI Backend  |
    | Live Weather|   |                  |
    +-------------+   +------------------+
                             |
                             v
                  +----------------------+
                  | Mood + Weather +     |
                  | Time + Energy +       |
                  | Category + Exclusions|
                  +----------------------+
                             |
                             v
                  +----------------------+
                  | Prompt Construction  |
                  +----------------------+
                             |
                             v
                  +----------------------+
                  | Ollama + Gemma 3 4B  |
                  | Generate JSON        |
                  +----------------------+
                             |
                             v
                  +----------------------+
                  | Schema, Realism &amp;amp;    |
                  | Safety Validation   |
                  +----------------------+
                             |
                      +------+------+
                      |             |
                   Rejected      Accepted
                      |             |
                      v             v
                 Retry with     Save to local
                 feedback       history.json
                      |             |
                      +-----&amp;gt;       v
                              Return JSON
                                   |
                                   v
                            Render Mission
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The weather lookup is a separate part of the flow. The browser can request current conditions through the backend, which uses Open-Meteo. The nudge endpoint then uses the available weather information alongside the mood and other request settings.&lt;/p&gt;

&lt;p&gt;Let's look at the parts that make the application work.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Turn an ordinary sentence into useful constraints
&lt;/h3&gt;

&lt;p&gt;The user doesn't have to select a formal mood category or fill out a long questionnaire. They can write something natural, such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"I'm exhausted and don't want to do much."&lt;/li&gt;
&lt;li&gt;"Feeling restless after sitting all day."&lt;/li&gt;
&lt;li&gt;"I need a change of scenery."&lt;/li&gt;
&lt;li&gt;"I'm feeling lonely and could use some human interaction."&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The backend uses &lt;code&gt;energy_pool()&lt;/code&gt; to estimate whether the person needs a low-, medium-, or high-energy activity. It then uses &lt;code&gt;pick_category()&lt;/code&gt; to select an activity category, taking category limits and least-recently-used weighting into account.&lt;/p&gt;

&lt;p&gt;The request can also include the user's location, selected model, a manual weather override, previously excluded titles, and an easier-mode flag.&lt;/p&gt;

&lt;p&gt;This is useful because the model shouldn't have to infer every constraint from a sentence on its own. The application can make some decisions explicitly before generation begins.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Give the model the right context
&lt;/h3&gt;

&lt;p&gt;The prompt builder in &lt;code&gt;app/prompts.py&lt;/code&gt; combines the relevant information into a structured instruction for Gemma.&lt;/p&gt;

&lt;p&gt;Conceptually, the input looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Mood: Restless and stuck at my desk
Weather: Clear sky, 22°C
Time of day: Evening
Energy: High
Category: Movement
Previously used titles: [excluded titles]

Task:
Generate one specific outdoor mission.
Return the required JSON structure.
Follow the activity and safety constraints.
Avoid generic suggestions and repeated ideas.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is an illustrative representation of the context, not a literal dump of the application's complete system prompt.&lt;/p&gt;

&lt;p&gt;The model receives more than just the mood. It has conditions to work within, which helps make the resulting mission more relevant to the situation.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Use Gemma locally
&lt;/h3&gt;

&lt;p&gt;Outdoor Nudge uses &lt;strong&gt;Gemma 3 4B through Ollama&lt;/strong&gt; by default.&lt;/p&gt;

&lt;p&gt;Ollama provides the local model runtime. The backend sends the prompt to the configured Ollama server, receives the model's response, and extracts the JSON needed by the application.&lt;/p&gt;

&lt;p&gt;The important design choice is that the model is not accessed through a hosted AI API. Mood text is processed locally, and the app doesn't require an OpenAI or Gemini API key.&lt;/p&gt;

&lt;p&gt;Weather is the exception to the local-only approach: live weather requires an internet connection to Open-Meteo. If that service is unavailable, the user can enter the conditions manually.&lt;/p&gt;

&lt;p&gt;Local inference also comes with a practical trade-off. Generation speed depends on the machine and the model being used. On a CPU-only machine, a request can take a minute or two.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Don't trust the first answer just because it came from an LLM
&lt;/h3&gt;

&lt;p&gt;This is probably the part of the project I find most interesting.&lt;/p&gt;

&lt;p&gt;A model can return perfectly valid JSON and still give a terrible recommendation.&lt;/p&gt;

&lt;p&gt;For example, a response might be structurally correct but tell someone to climb somewhere, approach a road, touch unknown plants, or rely on an object that may not exist. A generic "go for a walk" answer can also satisfy a loose prompt while failing the actual purpose of the application.&lt;/p&gt;

&lt;p&gt;So I separated generation from validation.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;validate_nudge()&lt;/code&gt; function checks the response structure, category and energy consistency, instruction count, and banned verbs or venues. The &lt;code&gt;safety_violations()&lt;/code&gt; function applies additional checks to the proposed activity.&lt;/p&gt;

&lt;p&gt;The checks cover cases such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Climbing, roads, and water-related risks.&lt;/li&gt;
&lt;li&gt;Eating or tasting things found outside.&lt;/li&gt;
&lt;li&gt;Touching plants or litter with bare hands.&lt;/li&gt;
&lt;li&gt;Assuming a bench, bin, notebook, or other object is available.&lt;/li&gt;
&lt;li&gt;Generic suggestions that don't describe a concrete activity.&lt;/li&gt;
&lt;li&gt;Lonely-mood suggestions that fail to include meaningful human contact.&lt;/li&gt;
&lt;li&gt;Inappropriate activities after dark.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If a response fails, the application retries generation, providing feedback about what went wrong. It tries up to four times before returning an error rather than showing an invalid suggestion.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Generate mission
      |
      v
Parse JSON
      |
      v
Validate structure and constraints
      |
      +---- Pass? ---- Yes ----&amp;gt; Save and display
      |
      No
      |
      v
Explain failure to model
      |
      v
Retry (up to 4 attempts)
      |
      +---- Still invalid? ----&amp;gt; Return an error
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These checks are deterministic rules, not a guarantee that every suggestion is safe. The project is a small local application, and the user should still exercise common sense when following an outdoor activity.&lt;/p&gt;

&lt;p&gt;Still, separating these rules from the model is valuable: I can add a new restriction, write a test for it, and change the application's behavior without relying entirely on a better prompt.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Make the next suggestion different
&lt;/h3&gt;

&lt;p&gt;Another small problem: if you ask an AI for another idea, it can give you essentially the same answer with a different title.&lt;/p&gt;

&lt;p&gt;Outdoor Nudge tracks recent titles and excludes previously used ideas. It also limits repeated categories and uses least-recently-used weighting to encourage variety.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;Give me another&lt;/strong&gt; button carries those exclusions forward. &lt;strong&gt;Make it easier&lt;/strong&gt; requests a lower-energy option.&lt;/p&gt;

&lt;p&gt;There's also a model comparison mode, so you can select two locally available Ollama models and compare their suggestions side by side.&lt;/p&gt;

&lt;p&gt;That gives the application a little more depth than generating one answer and stopping there.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Keep history simple
&lt;/h3&gt;

&lt;p&gt;Accepted nudges are stored in &lt;code&gt;data/history.json&lt;/code&gt;, which is gitignored. The interface has a collapsible history panel and a way to mark a mission as completed.&lt;/p&gt;

&lt;p&gt;I chose a JSON file instead of introducing a database. This is a single-user, local-first application, so a database would add setup and maintenance without solving a problem I currently have.&lt;/p&gt;

&lt;p&gt;The history is written atomically, with a duplicate-title guard. It stays local rather than requiring an account or remote service.&lt;/p&gt;

&lt;h3&gt;
  
  
  7. Test the rules, not just the happy path
&lt;/h3&gt;

&lt;p&gt;For an application that recommends real-world activities, testing only whether the page loads isn't enough.&lt;/p&gt;

&lt;p&gt;The repository includes several layers of tests:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Offline safety tests:&lt;/strong&gt; Around 70 cases covering prohibited activities, assumed objects, nighttime restrictions, generic walks, and other edge cases.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Quality retests:&lt;/strong&gt; A 15-case harness covering different moods, weather conditions, time contexts, response structure, plausibility, clichés, and duplicates.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Browser tests:&lt;/strong&gt; Playwright tests covering 14 page flows, with screenshots for desktop, mobile, model comparison, history, and weather fallback.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The live quality and safety retests require the backend and Ollama to be running. The offline validator tests can run without a model.&lt;/p&gt;

&lt;p&gt;I wanted the rules to be testable independently of the AI, because changing a model or prompt shouldn't silently remove a safety constraint.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Does Open Innovation Matter?
&lt;/h2&gt;

&lt;p&gt;I could have built this around a hosted AI API. It might have been a simpler way to get started.&lt;/p&gt;

&lt;p&gt;But I wanted Outdoor Nudge to be something you could run on your own machine without an account, a paid API key, or sending your mood to a third-party AI service.&lt;/p&gt;

&lt;p&gt;Mood is personal information, even when someone is only typing that they're exhausted, lonely, or having a bad day. I didn't want getting a small outdoor suggestion to require sharing that information with a remote model provider.&lt;/p&gt;

&lt;p&gt;Using &lt;strong&gt;Gemma 3 4B through Ollama&lt;/strong&gt; made local inference practical. The model runs on the user's machine, and the application can work without a hosted AI service. Open-Meteo is still used for live weather, so the app needs internet access for that feature unless the user enters conditions manually.&lt;/p&gt;

&lt;p&gt;Open models also give us flexibility. We can try another model already supported by Ollama, compare outputs, adjust the prompt, and build our own validation around the model instead of depending on a single proprietary endpoint.&lt;/p&gt;

&lt;p&gt;That freedom is particularly useful for this project because the model isn't the whole product. The weather integration, category selection, safety rules, retry loop, and history all shape the final experience.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Open innovation gave me the freedom to build the AI around the experience I wanted, instead of building the experience around an AI provider's API.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And the end goal is deliberately small: help someone close their laptop for a little while and do something in the world around them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prize Categories
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Gemma:&lt;/strong&gt; Outdoor Nudge uses Gemma 3 4B as its default local model through Ollama. The model generates structured outdoor missions, while application-side validation checks each suggestion before it reaches the user.&lt;/p&gt;




&lt;p&gt;Outdoor Nudge isn't trying to replace a therapist, a fitness app, or a human friend.&lt;/p&gt;

&lt;p&gt;Sometimes you don't need another app telling you how to improve your life. You just need one good reason to step away from your screen.&lt;/p&gt;

&lt;p&gt;So that's what I built: one mood, one look at the weather, one small mission.&lt;/p&gt;

&lt;p&gt;Now close the tab and go try it.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>[Boost]</title>
      <dc:creator>Piyush Baraskar</dc:creator>
      <pubDate>Mon, 05 Oct 2026 17:01:03 +0000</pubDate>
      <link>https://dev.to/piyushnextgen/-4547</link>
      <guid>https://dev.to/piyushnextgen/-4547</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/0xna/daybook-a-private-ai-journal-that-learns-my-friend-habits-patterns-and-help-him-improve-powered-37kn" class="crayons-story__hidden-navigation-link"&gt;What if your journal could understand you? So I built DayBook&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
      &lt;a href="https://dev.to/0xna/daybook-a-private-ai-journal-that-learns-my-friend-habits-patterns-and-help-him-improve-powered-37kn" class="crayons-article__context-note crayons-article__context-note__feed"&gt;&lt;p&gt;Hacktoberfest Weekend Challenge: Build for a Friend Submission 🤝&lt;/p&gt;

&lt;/a&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/0xna" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4153858%2F6233b251-df5d-4acd-ad40-c602cbd73f2b.png" alt="0xna profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/0xna" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Jesus Chetia
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Jesus Chetia
                
                
              
              &lt;div id="story-author-preview-content-4797415" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/0xna" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4153858%2F6233b251-df5d-4acd-ad40-c602cbd73f2b.png" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Jesus Chetia&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/0xna/daybook-a-private-ai-journal-that-learns-my-friend-habits-patterns-and-help-him-improve-powered-37kn" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Oct 4&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/0xna/daybook-a-private-ai-journal-that-learns-my-friend-habits-patterns-and-help-him-improve-powered-37kn" id="article-link-4797415"&gt;
          What if your journal could understand you? So I built DayBook
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/devchallenge"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;devchallenge&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/weekendchallenge"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;weekendchallenge&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/hf26challenge"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;hf26challenge&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/opensource"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;opensource&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/0xna/daybook-a-private-ai-journal-that-learns-my-friend-habits-patterns-and-help-him-improve-powered-37kn" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/fire-f60e7a582391810302117f987b22a8ef04a2fe0df7e3258a5f49332df1cec71e.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;10&lt;span class="hidden s:inline"&gt;&amp;nbsp;reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/0xna/daybook-a-private-ai-journal-that-learns-my-friend-habits-patterns-and-help-him-improve-powered-37kn#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              2&lt;span class="hidden s:inline"&gt;&amp;nbsp;comments&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            8 min read
          &lt;/small&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
    </item>
    <item>
      <title>LUMEN - Full stack image analysis tool</title>
      <dc:creator>Piyush Baraskar</dc:creator>
      <pubDate>Sat, 29 Aug 2026 15:23:56 +0000</pubDate>
      <link>https://dev.to/piyushnextgen/lumen-full-stack-image-analysis-tool-1m39</link>
      <guid>https://dev.to/piyushnextgen/lumen-full-stack-image-analysis-tool-1m39</guid>
      <description>&lt;p&gt;Lemme share a half-baked project of mine  LUMEN, which I am currently working on.&lt;/p&gt;

&lt;p&gt;LUMEN - Full Stack Image Data Analyzer&lt;br&gt;
(will share the link after completing)&lt;/p&gt;

&lt;p&gt;It's primarily a learning project, not a platform/SaaS or something.&lt;/p&gt;

&lt;p&gt;The basic idea:&lt;br&gt;
The basic idea is simple: give LUMEN an image, and it extracts different properties from it and stores the analysis as structured data.&lt;/p&gt;

&lt;p&gt;Working:&lt;br&gt;
The image is first loaded using PIL and converted into a NumPy array. LUMEN then performs different types of analysis, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Image dimensions&lt;/li&gt;
&lt;li&gt;dtype, std&lt;/li&gt;
&lt;li&gt;min/max, mean&lt;/li&gt;
&lt;li&gt;RGB channel statistics&lt;/li&gt;
&lt;li&gt;Histograms and intensity distribution&lt;/li&gt;
&lt;li&gt;Perceptual brightness&lt;/li&gt;
&lt;li&gt;Contrast, Sharpness / blur&lt;/li&gt;
&lt;li&gt;Colorfulness, Dominant colors&lt;/li&gt;
&lt;li&gt;Exposure, Entropy&lt;/li&gt;
&lt;li&gt;Duplicate detection&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For duplicate detection, I use SHA-256 hashing. The image is hashed and the resulting hash can be used to identify identical files and group duplicates.&lt;/p&gt;

&lt;p&gt;Also using pytest to test the analysis functions.&lt;/p&gt;

&lt;p&gt;Database side -&lt;br&gt;
Made a persistence layer using PostgreSQL + SQLAlchemy.&lt;br&gt;
The idea is to store the analyzed images and their results as structured records.&lt;/p&gt;

&lt;p&gt;For example, an image can have information such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ID&lt;/li&gt;
&lt;li&gt;filename&lt;/li&gt;
&lt;li&gt;dimensions&lt;/li&gt;
&lt;li&gt;file information&lt;/li&gt;
&lt;li&gt;analysis timestamp&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And the analysis can contain things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;mean brightness&lt;/li&gt;
&lt;li&gt;standard deviation&lt;/li&gt;
&lt;li&gt;minimum / maximum values&lt;/li&gt;
&lt;li&gt;RGB channel statistics&lt;/li&gt;
&lt;li&gt;quality metrics&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;SQLAlchemy ORM is used to represent DB tables as Python models.&lt;/p&gt;

&lt;p&gt;Backend — (Work in progress)&lt;br&gt;
The backend is being built with FastAPI,&lt;/p&gt;

&lt;p&gt;FastAPI receives the image/request, the analysis engine processes it and the results are validated and structured, and the relevant data is persisted in PostgreSQL.&lt;/p&gt;

&lt;p&gt;And the frontend will be made later and then deployment......✌🏼&lt;/p&gt;

&lt;p&gt;Still work in progress, but this is where LUMEN is currently at, rn making the backend part :)&lt;/p&gt;

</description>
      <category>programming</category>
      <category>python</category>
      <category>api</category>
      <category>showdev</category>
    </item>
    <item>
      <title>Code and approach to solve Subarray sum equals</title>
      <dc:creator>Piyush Baraskar</dc:creator>
      <pubDate>Sat, 29 Aug 2026 09:49:44 +0000</pubDate>
      <link>https://dev.to/piyushnextgen/code-and-approach-to-solve-subarray-sum-equals-5bip</link>
      <guid>https://dev.to/piyushnextgen/code-and-approach-to-solve-subarray-sum-equals-5bip</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2F0b2900ed-c88d-497c-970c-4626b7f00fec" class="article-body-image-wrapper"&gt;&lt;img width="1919" height="718" alt="image" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2F0b2900ed-c88d-497c-970c-4626b7f00fec"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Solution&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;subarraySum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;nums&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;k&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;prefixsum&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
        &lt;span class="n"&gt;count&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
        &lt;span class="n"&gt;hashmap&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;

        &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;nums&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="n"&gt;prefixsum&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;

            &lt;span class="n"&gt;needed&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;prefixsum&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;k&lt;/span&gt;

            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;needed&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;hashmap&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                &lt;span class="n"&gt;count&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="n"&gt;hashmap&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;needed&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;prefixsum&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;hashmap&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                &lt;span class="n"&gt;hashmap&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;prefixsum&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
            &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                &lt;span class="n"&gt;hashmap&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;prefixsum&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;

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

&lt;/div&gt;



&lt;h2&gt;
  
  
  PROBLEM
&lt;/h2&gt;

&lt;p&gt;so in the ques we have given an array nums and an integer k and we have to return the total number of subarrays whose sum is equal to k.&lt;/p&gt;

&lt;p&gt;like here nums = [1,2,3] and k = 3.&lt;/p&gt;

&lt;p&gt;the subarrays whose sum is 3 are [1,2] and [3], so the answer will be 2.&lt;/p&gt;

&lt;h2&gt;
  
  
  APPROACH
&lt;/h2&gt;

&lt;p&gt;so here we use prefixsum and hashmap.&lt;/p&gt;

&lt;p&gt;first we calculate the prefixsum while looping through the array.&lt;/p&gt;

&lt;p&gt;then we use this formula:&lt;/p&gt;

&lt;p&gt;needed = prefixsum - k&lt;/p&gt;

&lt;p&gt;because if the current prefixsum is prefixsum and we want a subarray with sum k, then we need a previous prefixsum equal to prefixsum - k.&lt;/p&gt;

&lt;p&gt;like nums = [1,2,3] and k = 3.&lt;/p&gt;

&lt;p&gt;when we reach 2:&lt;/p&gt;

&lt;p&gt;prefixsum = 1 + 2 = 3&lt;/p&gt;

&lt;p&gt;so:&lt;/p&gt;

&lt;p&gt;needed = 3 - 3 = 0&lt;/p&gt;

&lt;p&gt;and 0 is already present in the hashmap, which means the subarray from the beginning [1,2] has sum 3.&lt;/p&gt;

&lt;p&gt;then we store the prefixsum in the hashmap and its frequency as the value.&lt;/p&gt;

&lt;p&gt;we store frequency instead of just the index because the same prefixsum can appear multiple times, and every previous occurrence can create a different subarray whose sum is k.&lt;/p&gt;

&lt;p&gt;also we start with hashmap = {0: 1} because prefixsum 0 exists once before the array starts. this helps us count subarrays that start from index 0.&lt;/p&gt;

&lt;p&gt;finally count contains the total number of subarrays whose sum is equal to k.&lt;/p&gt;

&lt;h2&gt;
  
  
  CODE EXPLAINATION
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;nums&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="n"&gt;k&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;

&lt;span class="n"&gt;prefixsum&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;    &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;prefixsum&lt;/span&gt; &lt;span class="ow"&gt;is&lt;/span&gt; &lt;span class="n"&gt;used&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;calculate&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;running&lt;/span&gt; &lt;span class="n"&gt;prefix&lt;/span&gt; &lt;span class="nb"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
&lt;span class="n"&gt;count&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;        &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;count&lt;/span&gt; &lt;span class="n"&gt;stores&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;total&lt;/span&gt; &lt;span class="n"&gt;number&lt;/span&gt; &lt;span class="n"&gt;of&lt;/span&gt; &lt;span class="n"&gt;subarrays&lt;/span&gt; &lt;span class="n"&gt;whose&lt;/span&gt; &lt;span class="nb"&gt;sum&lt;/span&gt; &lt;span class="ow"&gt;is&lt;/span&gt; &lt;span class="n"&gt;equal&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;k&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
&lt;span class="n"&gt;hashmap&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;hashmap&lt;/span&gt; &lt;span class="n"&gt;stores&lt;/span&gt; &lt;span class="n"&gt;prefixsum&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;key&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;its&lt;/span&gt; &lt;span class="n"&gt;frequency&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;


&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="n"&gt;means&lt;/span&gt; &lt;span class="n"&gt;prefixsum&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="n"&gt;has&lt;/span&gt; &lt;span class="n"&gt;appeared&lt;/span&gt; &lt;span class="n"&gt;once&lt;/span&gt; &lt;span class="n"&gt;before&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;array&lt;/span&gt; &lt;span class="n"&gt;started&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;nums&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;prefixsum&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;

&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;looping&lt;/span&gt; &lt;span class="n"&gt;through&lt;/span&gt; &lt;span class="n"&gt;every&lt;/span&gt; &lt;span class="n"&gt;element&lt;/span&gt; &lt;span class="n"&gt;of&lt;/span&gt; &lt;span class="n"&gt;nums&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;adding&lt;/span&gt; &lt;span class="n"&gt;it&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;prefixsum&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;nums&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;prefixsum&lt;/span&gt; &lt;span class="n"&gt;will&lt;/span&gt; &lt;span class="n"&gt;be&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;

&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;6&lt;/span&gt;

&lt;span class="n"&gt;needed&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;prefixsum&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;k&lt;/span&gt;

&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;calculating&lt;/span&gt; &lt;span class="n"&gt;which&lt;/span&gt; &lt;span class="n"&gt;previous&lt;/span&gt; &lt;span class="n"&gt;prefixsum&lt;/span&gt; &lt;span class="n"&gt;we&lt;/span&gt; &lt;span class="n"&gt;need&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;get&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;subarray&lt;/span&gt; &lt;span class="n"&gt;whose&lt;/span&gt; &lt;span class="nb"&gt;sum&lt;/span&gt; &lt;span class="ow"&gt;is&lt;/span&gt; &lt;span class="n"&gt;k&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;

&lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;formula&lt;/span&gt; &lt;span class="ow"&gt;is&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;

&lt;span class="n"&gt;previous&lt;/span&gt; &lt;span class="n"&gt;prefixsum&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;current&lt;/span&gt; &lt;span class="n"&gt;prefixsum&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;k&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;example&lt;/span&gt; &lt;span class="n"&gt;when&lt;/span&gt; &lt;span class="n"&gt;prefixsum&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;k&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;

&lt;span class="n"&gt;needed&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;

&lt;span class="n"&gt;so&lt;/span&gt; &lt;span class="n"&gt;we&lt;/span&gt; &lt;span class="n"&gt;check&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;prefixsum&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="n"&gt;was&lt;/span&gt; &lt;span class="n"&gt;seen&lt;/span&gt; &lt;span class="n"&gt;before&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;needed&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;hashmap&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;count&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="n"&gt;hashmap&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;needed&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;needed&lt;/span&gt; &lt;span class="ow"&gt;is&lt;/span&gt; &lt;span class="n"&gt;present&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;hashmap&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;it&lt;/span&gt; &lt;span class="n"&gt;means&lt;/span&gt; &lt;span class="n"&gt;there&lt;/span&gt; &lt;span class="n"&gt;are&lt;/span&gt; &lt;span class="n"&gt;previous&lt;/span&gt; &lt;span class="n"&gt;prefix&lt;/span&gt; &lt;span class="n"&gt;sums&lt;/span&gt; &lt;span class="n"&gt;that&lt;/span&gt; &lt;span class="n"&gt;can&lt;/span&gt; &lt;span class="n"&gt;create&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;subarray&lt;/span&gt; &lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="nb"&gt;sum&lt;/span&gt; &lt;span class="n"&gt;k&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;

&lt;span class="n"&gt;then&lt;/span&gt; &lt;span class="n"&gt;we&lt;/span&gt; &lt;span class="n"&gt;add&lt;/span&gt; &lt;span class="n"&gt;its&lt;/span&gt; &lt;span class="n"&gt;frequency&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;count&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;

&lt;span class="n"&gt;we&lt;/span&gt; &lt;span class="n"&gt;add&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;frequency&lt;/span&gt; &lt;span class="n"&gt;instead&lt;/span&gt; &lt;span class="n"&gt;of&lt;/span&gt; &lt;span class="n"&gt;just&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="n"&gt;because&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;same&lt;/span&gt; &lt;span class="n"&gt;prefixsum&lt;/span&gt; &lt;span class="n"&gt;might&lt;/span&gt; &lt;span class="n"&gt;have&lt;/span&gt; &lt;span class="n"&gt;appeared&lt;/span&gt; &lt;span class="n"&gt;multiple&lt;/span&gt; &lt;span class="n"&gt;times&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;prefixsum&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;hashmap&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;hashmap&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;prefixsum&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;hashmap&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;prefixsum&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;

&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;after&lt;/span&gt; &lt;span class="n"&gt;checking&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;needed&lt;/span&gt; &lt;span class="n"&gt;prefixsum&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;we&lt;/span&gt; &lt;span class="n"&gt;store&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;current&lt;/span&gt; &lt;span class="n"&gt;prefixsum&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;hashmap&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;prefixsum&lt;/span&gt; &lt;span class="n"&gt;already&lt;/span&gt; &lt;span class="n"&gt;exists&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;increase&lt;/span&gt; &lt;span class="n"&gt;its&lt;/span&gt; &lt;span class="n"&gt;frequency&lt;/span&gt; &lt;span class="n"&gt;by&lt;/span&gt; &lt;span class="mf"&gt;1.&lt;/span&gt;

&lt;span class="n"&gt;otherwise&lt;/span&gt; &lt;span class="n"&gt;create&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;new&lt;/span&gt; &lt;span class="n"&gt;key&lt;/span&gt; &lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="n"&gt;frequency&lt;/span&gt; &lt;span class="mf"&gt;1.&lt;/span&gt;

&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;count&lt;/span&gt;

&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;returns&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;total&lt;/span&gt; &lt;span class="n"&gt;number&lt;/span&gt; &lt;span class="n"&gt;of&lt;/span&gt; &lt;span class="n"&gt;subarrays&lt;/span&gt; &lt;span class="n"&gt;whose&lt;/span&gt; &lt;span class="nb"&gt;sum&lt;/span&gt; &lt;span class="ow"&gt;is&lt;/span&gt; &lt;span class="n"&gt;equal&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;k&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>algorithms</category>
      <category>dsa</category>
      <category>tutorial</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Code and approach to solve Contiguous array problem</title>
      <dc:creator>Piyush Baraskar</dc:creator>
      <pubDate>Sat, 29 Aug 2026 09:47:35 +0000</pubDate>
      <link>https://dev.to/piyushnextgen/code-and-approach-to-solve-contiguous-array-problem-4m28</link>
      <guid>https://dev.to/piyushnextgen/code-and-approach-to-solve-contiguous-array-problem-4m28</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2F815ea832-e168-4072-8c26-927d430924ce" class="article-body-image-wrapper"&gt;&lt;img width="1915" height="792" alt="image" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2F815ea832-e168-4072-8c26-927d430924ce"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Solution&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;findMaxLength&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;nums&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;arr2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;
        &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;nums&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;i&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="n"&gt;arr2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;
                &lt;span class="n"&gt;arr2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

        &lt;span class="n"&gt;prefixsum&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;
        &lt;span class="n"&gt;total&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;

        &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;arr2&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="n"&gt;total&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;
            &lt;span class="n"&gt;prefixsum&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;total&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

        &lt;span class="n"&gt;hashmap&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="n"&gt;max_length&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;

        &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;prefixsum&lt;/span&gt;&lt;span class="p"&gt;)):&lt;/span&gt;

            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;prefixsum&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;hashmap&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                &lt;span class="n"&gt;length&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;hashmap&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;prefixsum&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]]&lt;/span&gt;
                &lt;span class="n"&gt;max_length&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;max&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;max_length&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;length&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

            &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                &lt;span class="n"&gt;hashmap&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;prefixsum&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;

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

&lt;/div&gt;



&lt;p&gt;PROBLEM-&lt;br&gt;
so in the ques we have given a binary array and we have to return longest subarray of equal number of 0,1&lt;br&gt;
like here&lt;br&gt;
&lt;br&gt;
 &lt;code&gt;nums = [0,1,1,1,1,1,0,0,0]&lt;/code&gt;&lt;br&gt;
&lt;br&gt;
 the&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
 is the longest subarray the numbers are repeating like three ones and then three zeroes and it will return 6 cuz the total number of elements are six 

APPROACH -
so here we are first converting the 0 into -1 because it helps us to calculate the balanced subarray, because when the sum becomes 0 it means there are equal numbers of 0 and 1. like

 ```0,1```

 convert -&amp;gt;

 ```-1,1```

 -&amp;gt; sum = -1 + 1 = 0 -&amp;gt; length = 2

then we calc the prefixsum so we can store the prefixsum according to key value pairs in the hashmap
after that uses the hashmap

then we calc loop through prefix sum index
and if the element is present in hashmap it calc length from i- previous index
and update the max length

else remember its current index

# CODE EXPLAINATION

`nums = [0,1,1,1,1,1,0,0,0]`



```python
arr2 = []
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;-&amp;gt; creating a blank array to store -1 and 1.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;nums&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;i&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="n"&gt;arr2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;arr2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;-&amp;gt; loops through the nums. If element is 0, replace it with -1, otherwise keep it as 1. So &lt;code&gt;arr2&lt;/code&gt; becomes &lt;code&gt;[-1,1,1,1,1,1,-1,-1,-1]&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;prefixsum&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;
&lt;span class="n"&gt;total&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;arr2&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;total&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;
    &lt;span class="n"&gt;prefixsum&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;total&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;-&amp;gt; calculating the prefixsum by adding each element to &lt;code&gt;total&lt;/code&gt; and storing the result in &lt;code&gt;prefixsum&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;hashmap&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="n"&gt;max_length&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;-&amp;gt; creating a hashmap where prefixsum is the key and its first index is the value. &lt;code&gt;{0: -1}&lt;/code&gt; means prefixsum 0 was present before the array started.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;prefixsum&lt;/span&gt;&lt;span class="p"&gt;)):&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;-&amp;gt; looping through the prefixsum using its index and calclating the length = current index i - previous index i which is stored in hashmap&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;prefixsum&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;hashmap&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;length&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;hashmap&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;prefixsum&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]]&lt;/span&gt;
    &lt;span class="n"&gt;max_length&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;max&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;max_length&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;length&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;-&amp;gt; if the current prefixsum is already in the hashmap, it means the sum between the previous index and current index is 0, so the number of 0s and 1s is equal. Then calculate the length and update the max_length.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;hashmap&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;prefixsum&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;-&amp;gt; if the prefixsum is not already in the hashmap, store its current index. We store only the first index because it gives the longest possible subarray.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;max_length&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;-&amp;gt; returns the longest subarray length.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>tutorial</category>
      <category>python</category>
      <category>dsa</category>
    </item>
    <item>
      <title>Code and approach to solve Range sum query - immutable problem of leetcode</title>
      <dc:creator>Piyush Baraskar</dc:creator>
      <pubDate>Sat, 29 Aug 2026 09:44:20 +0000</pubDate>
      <link>https://dev.to/piyushnextgen/code-and-approach-to-solve-range-sum-query-immutable-problem-of-leetcode-5big</link>
      <guid>https://dev.to/piyushnextgen/code-and-approach-to-solve-range-sum-query-immutable-problem-of-leetcode-5big</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2Fc3ed9d4f-eb47-45b4-92c9-799152c71bbc" class="article-body-image-wrapper"&gt;&lt;img width="1899" height="782" alt="image" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2Fc3ed9d4f-eb47-45b4-92c9-799152c71bbc"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;NumArray&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;

    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;__init__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;nums&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;]):&lt;/span&gt;
        &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;prefix&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;
        &lt;span class="n"&gt;total&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
        &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;nums&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="n"&gt;total&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;
            &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;prefix&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;total&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;sumRange&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;right&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&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="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;prefix&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;right&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="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;prefix&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;right&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;prefix&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;left&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So in this problem, we first make a &lt;strong&gt;prefix array&lt;/strong&gt; from the given array. A prefix array stores the sum of all elements from the beginning up to the current index. For example, &lt;code&gt;[1, 2, 3]&lt;/code&gt; becomes &lt;code&gt;[1, 3, 6]&lt;/code&gt; because &lt;code&gt;1&lt;/code&gt;, &lt;code&gt;1+2 = 3&lt;/code&gt;, and &lt;code&gt;1+2+3 = 6&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why prefix sum?&lt;/strong&gt; Because we have to perform multiple range-sum queries. Instead of calculating the sum again and again for every query, we calculate the cumulative sums once and then use them to get each range sum in &lt;code&gt;O(1)&lt;/code&gt; time.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;prefix&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;→ Creates an empty array to store the prefix sums.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;total&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;→ Stores the &lt;strong&gt;running sum&lt;/strong&gt;. We start with &lt;code&gt;0&lt;/code&gt; because we haven't added anything yet.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;nums&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;→ Loops through every element in &lt;code&gt;nums&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;total&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;→ Adds the current element to the previous running sum. For &lt;code&gt;[-2, 0, 3, -5, 2, -1]&lt;/code&gt;, the totals become &lt;code&gt;-2, -2, 1, -4, -2, -3&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;prefix&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;total&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;→ Stores each running total in the prefix array, so we finally get &lt;code&gt;[-2, -2, 1, -4, -2, -3]&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;→ Checks if the requested range starts from index &lt;code&gt;0&lt;/code&gt;. For example, &lt;code&gt;sumRange(0, 2)&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;prefix&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;right&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;→ If &lt;code&gt;left&lt;/code&gt; is &lt;code&gt;0&lt;/code&gt;, we don't need to subtract anything. &lt;code&gt;prefix[2] = 1&lt;/code&gt;, which is &lt;code&gt;-2 + 0 + 3 = 1&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;→ If the range does not start from &lt;code&gt;0&lt;/code&gt;, we need to remove the elements before &lt;code&gt;left&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;prefix&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;right&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;prefix&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;left&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;→ &lt;code&gt;prefix[right]&lt;/code&gt; gives the sum from the beginning up to &lt;code&gt;right&lt;/code&gt;, while &lt;code&gt;prefix[left - 1]&lt;/code&gt; gives the unwanted part before &lt;code&gt;left&lt;/code&gt;. For &lt;code&gt;sumRange(2, 5)&lt;/code&gt;: &lt;code&gt;prefix[5] - prefix[1] = -3 - (-2) = -1&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  How does &lt;code&gt;self.prefix[right] - self.prefix[left - 1]&lt;/code&gt; work?
&lt;/h3&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;nums&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and the query is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="nf"&gt;sumRange&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;left = 2
right = 5
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We want:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;3 + (-5) + 2 + (-1) = -1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Our prefix array is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;prefix = [-2, -2, 1, -4, -2, -3]
index     0   1  2   3   4   5
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;prefix&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;right&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;→ Since &lt;code&gt;right = 5&lt;/code&gt;, &lt;code&gt;self.prefix[5] = -3&lt;/code&gt;. This gives the sum of everything from index &lt;code&gt;0&lt;/code&gt; to &lt;code&gt;5&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;-2 + 0 + 3 - 5 + 2 - 1 = -3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;But we only want the elements from index &lt;code&gt;2&lt;/code&gt; to &lt;code&gt;5&lt;/code&gt;, so we need to remove the elements before index &lt;code&gt;2&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;-2 + 0 = -2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;prefix&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;left&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;→ Since &lt;code&gt;left = 2&lt;/code&gt;, &lt;code&gt;left - 1 = 1&lt;/code&gt;, so &lt;code&gt;self.prefix[1] = -2&lt;/code&gt;. This gives the sum of everything before index &lt;code&gt;2&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Now subtract:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;self.prefix[5] - self.prefix[1]

= -3 - (-2)

= -1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And &lt;code&gt;-1&lt;/code&gt; is exactly:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;3 + (-5) + 2 + (-1) = -1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  In simple words
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;prefix[right]     → everything up to right
prefix[left - 1]  → unwanted part before left

everything - unwanted part = required range sum
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's why we use:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;prefix&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;right&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;prefix&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;left&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>programming</category>
      <category>tutorial</category>
      <category>python</category>
      <category>dsa</category>
    </item>
    <item>
      <title>Code and approach to solve Contains Duplicate problem of leetcode</title>
      <dc:creator>Piyush Baraskar</dc:creator>
      <pubDate>Sat, 29 Aug 2026 09:41:51 +0000</pubDate>
      <link>https://dev.to/piyushnextgen/code-and-approach-to-solve-contains-duplicate-problem-of-leetcode-497m</link>
      <guid>https://dev.to/piyushnextgen/code-and-approach-to-solve-contains-duplicate-problem-of-leetcode-497m</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2F320a6ac1-2344-482d-82b7-17683619261c" class="article-body-image-wrapper"&gt;&lt;img width="1919" height="791" alt="image" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2F320a6ac1-2344-482d-82b7-17683619261c"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Solution&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;containsDuplicate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;nums&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;bool&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;seen&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;set&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
        &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;nums&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;seen&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;
            &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;
                &lt;span class="n"&gt;seen&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

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

&lt;/div&gt;



&lt;h1&gt;
  
  
  PROBLEM
&lt;/h1&gt;

&lt;p&gt;so in the ques we have given an array &lt;code&gt;nums&lt;/code&gt; and we have to check if there is any duplicate element in the array or not.&lt;/p&gt;

&lt;p&gt;if any element appears more than one time then we have to return &lt;code&gt;True&lt;/code&gt;, otherwise we return &lt;code&gt;False&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;like here &lt;code&gt;nums = [1,2,3,1]&lt;/code&gt;, &lt;code&gt;1&lt;/code&gt; is present two times so it contains a duplicate and the answer will be &lt;code&gt;True&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;but if &lt;code&gt;nums = [1,2,3,4]&lt;/code&gt;, every element is unique so the answer will be &lt;code&gt;False&lt;/code&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  APPROACH
&lt;/h1&gt;

&lt;p&gt;so here we use a &lt;strong&gt;set&lt;/strong&gt; to keep track of the elements that we have already seen.&lt;/p&gt;

&lt;p&gt;first we create an empty set called &lt;code&gt;seen&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;then we loop through every element of &lt;code&gt;nums&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;for every element we check if it is already present in &lt;code&gt;seen&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;if it is already present, it means that we have seen this element before, so it is a duplicate and we immediately return &lt;code&gt;True&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;otherwise we add that element into &lt;code&gt;seen&lt;/code&gt; and continue the loop.&lt;/p&gt;

&lt;p&gt;if the complete array is checked and we never find a duplicate, then we return &lt;code&gt;False&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;for example &lt;code&gt;nums = [1,2,3,1]&lt;/code&gt;:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;1&lt;/code&gt; -&amp;gt; not in set -&amp;gt; add &lt;code&gt;1&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;2&lt;/code&gt; -&amp;gt; not in set -&amp;gt; add &lt;code&gt;2&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;3&lt;/code&gt; -&amp;gt; not in set -&amp;gt; add &lt;code&gt;3&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;1&lt;/code&gt; -&amp;gt; already in set -&amp;gt; duplicate found -&amp;gt; return &lt;code&gt;True&lt;/code&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  CODE EXPLAINATION
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
python
nums = [1,2,3,1]
seen = set()  -&amp;gt; creating an empty set called seen where we will store the elements that we have already seen.

for i in nums:  -&amp;gt; looping through every element of nums one by one.

if i in seen:
    return True  -&amp;gt; checking if the current element i is already present in seen.

if it is already present, it means the same element appeared before, so it is a duplicate and we return True.

else:
    seen.add(i) -&amp;gt; if the current element is not already present in seen, we add it to the set so we can check it against the upcoming elements.

return False    -&amp;gt; if the loop finishes without finding any duplicate element, it means every element is unique, so we return False.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
    </item>
    <item>
      <title>Code and approach to solve Concatenation of array</title>
      <dc:creator>Piyush Baraskar</dc:creator>
      <pubDate>Sat, 29 Aug 2026 09:40:27 +0000</pubDate>
      <link>https://dev.to/piyushnextgen/code-and-approach-to-solve-concatenation-of-array-2phl</link>
      <guid>https://dev.to/piyushnextgen/code-and-approach-to-solve-concatenation-of-array-2phl</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2Ffbca5d4d-bbc9-428f-9a75-3d68d2b2e3d7" class="article-body-image-wrapper"&gt;&lt;img width="1919" height="719" alt="image" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2Ffbca5d4d-bbc9-428f-9a75-3d68d2b2e3d7"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Solution&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;getConcatenation&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;nums&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
        &lt;span class="n"&gt;ans&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;

        &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;nums&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="n"&gt;ans&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

        &lt;span class="n"&gt;ans&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="n"&gt;nums&lt;/span&gt;

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

&lt;/div&gt;



&lt;h1&gt;
  
  
  PROBLEM
&lt;/h1&gt;

&lt;p&gt;so in the ques we have given an array &lt;code&gt;nums&lt;/code&gt; and we have to return the array with itself concatenated. like here &lt;code&gt;nums = [1,2,3]&lt;/code&gt; so we have to return &lt;code&gt;[1,2,3,1,2,3]&lt;/code&gt;. basically we have to put the same array two times one after another.&lt;/p&gt;

&lt;h1&gt;
  
  
  APPROACH
&lt;/h1&gt;

&lt;p&gt;so here we first create a blank array &lt;code&gt;ans&lt;/code&gt; where we will store the elements.&lt;/p&gt;

&lt;p&gt;then we loop through &lt;code&gt;nums&lt;/code&gt; and append every element into &lt;code&gt;ans&lt;/code&gt;. after that &lt;code&gt;ans&lt;/code&gt; already contains the original array.&lt;/p&gt;

&lt;p&gt;then we use &lt;code&gt;ans += nums&lt;/code&gt; which adds the complete &lt;code&gt;nums&lt;/code&gt; array again at the end of &lt;code&gt;ans&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;so if &lt;code&gt;nums = [1,2,3]&lt;/code&gt;:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ans = [1,2,3]&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;then &lt;code&gt;ans += nums&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ans = [1,2,3,1,2,3]&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;and finally we return &lt;code&gt;ans&lt;/code&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  CODE EXPLAINATION
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;nums&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

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

&lt;span class="n"&gt;creating&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;blank&lt;/span&gt; &lt;span class="n"&gt;array&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;store&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;elements&lt;/span&gt; &lt;span class="n"&gt;of&lt;/span&gt; &lt;span class="n"&gt;nums&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;nums&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;ans&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;looping&lt;/span&gt; &lt;span class="n"&gt;through&lt;/span&gt; &lt;span class="n"&gt;nums&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;adding&lt;/span&gt; &lt;span class="n"&gt;every&lt;/span&gt; &lt;span class="n"&gt;element&lt;/span&gt; &lt;span class="n"&gt;into&lt;/span&gt; &lt;span class="n"&gt;ans&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt; &lt;span class="n"&gt;So&lt;/span&gt; &lt;span class="n"&gt;after&lt;/span&gt; &lt;span class="n"&gt;this&lt;/span&gt; &lt;span class="n"&gt;loop&lt;/span&gt; &lt;span class="n"&gt;ans&lt;/span&gt; &lt;span class="n"&gt;becomes&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;

&lt;span class="n"&gt;ans&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="n"&gt;nums&lt;/span&gt;

&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;adding&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;complete&lt;/span&gt; &lt;span class="n"&gt;nums&lt;/span&gt; &lt;span class="n"&gt;array&lt;/span&gt; &lt;span class="n"&gt;again&lt;/span&gt; &lt;span class="n"&gt;at&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;end&lt;/span&gt; &lt;span class="n"&gt;of&lt;/span&gt; &lt;span class="n"&gt;ans&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt; &lt;span class="n"&gt;So&lt;/span&gt; &lt;span class="n"&gt;ans&lt;/span&gt; &lt;span class="n"&gt;becomes&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;

&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;ans&lt;/span&gt;

&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;returns&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;concatenated&lt;/span&gt; &lt;span class="n"&gt;array&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
    </item>
    <item>
      <title>Code and approach to so solve Longest common prefix</title>
      <dc:creator>Piyush Baraskar</dc:creator>
      <pubDate>Wed, 26 Aug 2026 22:40:28 +0000</pubDate>
      <link>https://dev.to/piyushnextgen/code-and-approach-to-so-solve-longest-common-prefix-44jo</link>
      <guid>https://dev.to/piyushnextgen/code-and-approach-to-so-solve-longest-common-prefix-44jo</guid>
      <description>&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Solution&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;longestCommonPrefix&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;strs&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;Longest_sum&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;""&lt;/span&gt;

        &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;strs&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;])):&lt;/span&gt;
            &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;j&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;strs&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;j&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="n"&gt;j&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="n"&gt;strs&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
                    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;Longest_sum&lt;/span&gt;

            &lt;span class="n"&gt;Longest_sum&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="n"&gt;strs&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

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

&lt;/div&gt;



&lt;h2&gt;
  
  
  PROBLEM
&lt;/h2&gt;

&lt;p&gt;so in the ques we have given an array of strings strs and we have to find the longest common prefix among all the strings.&lt;/p&gt;

&lt;p&gt;prefix means the characters that come at the starting of the string.&lt;/p&gt;

&lt;p&gt;like here strs = ["flower","flow","flight"].&lt;/p&gt;

&lt;p&gt;the common starting characters are f, l, so the longest common prefix is "fl".&lt;/p&gt;

&lt;p&gt;therefore the answer will be "fl".&lt;/p&gt;

&lt;h2&gt;
  
  
  APPROACH
&lt;/h2&gt;

&lt;p&gt;so here we create an empty string Longest_sum where we will store the common prefix.&lt;/p&gt;

&lt;p&gt;then we loop through the characters of the first string because we can use the first string as a reference and compare its characters with all the other strings.&lt;/p&gt;

&lt;p&gt;then inside that loop, we loop through every string in strs.&lt;/p&gt;

&lt;p&gt;for every string we check two conditions:&lt;/p&gt;

&lt;p&gt;i &amp;gt;= len(j)&lt;/p&gt;

&lt;p&gt;this checks if the current index i is outside the length of the current string. If it is, then there cannot be any common prefix at this position.&lt;/p&gt;

&lt;p&gt;and:&lt;/p&gt;

&lt;p&gt;j[i] != strs[0][i]&lt;/p&gt;

&lt;p&gt;this checks if the current character of the string is different from the character at the same position in the first string.&lt;/p&gt;

&lt;p&gt;if either condition is true, it means the common prefix has ended, so we return Longest_sum.&lt;/p&gt;

&lt;p&gt;if the character is the same in every string, we add that character to Longest_sum and continue checking the next character.&lt;/p&gt;

&lt;p&gt;for example:&lt;/p&gt;

&lt;p&gt;strs = ["flower","flow","flight"]&lt;/p&gt;

&lt;p&gt;first character:&lt;/p&gt;

&lt;p&gt;f == f == f -&amp;gt; add f&lt;/p&gt;

&lt;p&gt;second character:&lt;/p&gt;

&lt;p&gt;l == l == l -&amp;gt; add l&lt;/p&gt;

&lt;p&gt;third character:&lt;/p&gt;

&lt;p&gt;o == o but o != i -&amp;gt; stop&lt;/p&gt;

&lt;p&gt;so Longest_sum = "fl" and we return "fl".&lt;/p&gt;

&lt;h2&gt;
  
  
  CODE EXPLAINATION
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;strs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;flower&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;flow&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;flight&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="n"&gt;Longest_sum&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;""&lt;/span&gt;  &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;creating&lt;/span&gt; &lt;span class="n"&gt;an&lt;/span&gt; &lt;span class="n"&gt;empty&lt;/span&gt; &lt;span class="n"&gt;string&lt;/span&gt; &lt;span class="n"&gt;Longest_sum&lt;/span&gt; &lt;span class="n"&gt;where&lt;/span&gt; &lt;span class="n"&gt;we&lt;/span&gt; &lt;span class="n"&gt;will&lt;/span&gt; &lt;span class="n"&gt;store&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;common&lt;/span&gt; &lt;span class="n"&gt;prefix&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;strs&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;])):&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;looping&lt;/span&gt; &lt;span class="n"&gt;through&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;indices&lt;/span&gt; &lt;span class="n"&gt;of&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;first&lt;/span&gt; &lt;span class="n"&gt;string&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;

&lt;span class="n"&gt;we&lt;/span&gt; &lt;span class="n"&gt;use&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;first&lt;/span&gt; &lt;span class="n"&gt;string&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;reference&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;check&lt;/span&gt; &lt;span class="n"&gt;its&lt;/span&gt; &lt;span class="n"&gt;characters&lt;/span&gt; &lt;span class="n"&gt;against&lt;/span&gt; &lt;span class="nb"&gt;all&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;other&lt;/span&gt; &lt;span class="n"&gt;strings&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;strs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;flower&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;flow&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;flight&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;loop&lt;/span&gt; &lt;span class="n"&gt;checks&lt;/span&gt; &lt;span class="n"&gt;index&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;so&lt;/span&gt; &lt;span class="n"&gt;on&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;j&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;strs&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;  &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;looping&lt;/span&gt; &lt;span class="n"&gt;through&lt;/span&gt; &lt;span class="n"&gt;every&lt;/span&gt; &lt;span class="n"&gt;string&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;strs&lt;/span&gt; &lt;span class="n"&gt;so&lt;/span&gt; &lt;span class="n"&gt;we&lt;/span&gt; &lt;span class="n"&gt;can&lt;/span&gt; &lt;span class="n"&gt;compare&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;character&lt;/span&gt; &lt;span class="n"&gt;at&lt;/span&gt; &lt;span class="n"&gt;index&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;character&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;first&lt;/span&gt; &lt;span class="n"&gt;string&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;j&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="n"&gt;j&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="n"&gt;strs&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;Longest_sum&lt;/span&gt;  &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;checking&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;current&lt;/span&gt; &lt;span class="n"&gt;index&lt;/span&gt; &lt;span class="ow"&gt;is&lt;/span&gt; &lt;span class="n"&gt;outside&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;length&lt;/span&gt; &lt;span class="n"&gt;of&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;current&lt;/span&gt; &lt;span class="n"&gt;string&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;characters&lt;/span&gt; &lt;span class="n"&gt;are&lt;/span&gt; &lt;span class="n"&gt;different&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;

&lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;j&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;means&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;current&lt;/span&gt; &lt;span class="n"&gt;string&lt;/span&gt; &lt;span class="ow"&gt;is&lt;/span&gt; &lt;span class="n"&gt;shorter&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;does&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;have&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;character&lt;/span&gt; &lt;span class="n"&gt;at&lt;/span&gt; &lt;span class="n"&gt;index&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;

&lt;span class="n"&gt;j&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="n"&gt;strs&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="n"&gt;means&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;current&lt;/span&gt; &lt;span class="n"&gt;character&lt;/span&gt; &lt;span class="ow"&gt;is&lt;/span&gt; &lt;span class="n"&gt;different&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;character&lt;/span&gt; &lt;span class="n"&gt;at&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;same&lt;/span&gt; &lt;span class="n"&gt;position&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;first&lt;/span&gt; &lt;span class="n"&gt;string&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;either&lt;/span&gt; &lt;span class="n"&gt;condition&lt;/span&gt; &lt;span class="ow"&gt;is&lt;/span&gt; &lt;span class="n"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;common&lt;/span&gt; &lt;span class="n"&gt;prefix&lt;/span&gt; &lt;span class="n"&gt;ends&lt;/span&gt; &lt;span class="n"&gt;here&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;so&lt;/span&gt; &lt;span class="n"&gt;we&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;Longest_sum&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;

&lt;span class="n"&gt;Longest_sum&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="n"&gt;strs&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;  &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;current&lt;/span&gt; &lt;span class="n"&gt;character&lt;/span&gt; &lt;span class="ow"&gt;is&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;same&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;every&lt;/span&gt; &lt;span class="n"&gt;string&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;we&lt;/span&gt; &lt;span class="n"&gt;add&lt;/span&gt; &lt;span class="n"&gt;that&lt;/span&gt; &lt;span class="n"&gt;character&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;Longest_sum&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;example&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;

&lt;span class="n"&gt;Longest_sum&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;""&lt;/span&gt;

&lt;span class="n"&gt;then&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

&lt;span class="n"&gt;then&lt;/span&gt; &lt;span class="n"&gt;l&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;fl&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

&lt;span class="n"&gt;then&lt;/span&gt; &lt;span class="n"&gt;when&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;characters&lt;/span&gt; &lt;span class="n"&gt;don&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;t match, we return &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;fl&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;.

return Longest_sum  -&amp;gt; if we finish checking the first string without finding a mismatch, we return the complete Longest_sum as the longest common prefix.
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>programming</category>
      <category>tutorial</category>
      <category>python</category>
      <category>dsa</category>
    </item>
    <item>
      <title>My Code and approach to solve the two sum problem of leetcode</title>
      <dc:creator>Piyush Baraskar</dc:creator>
      <pubDate>Wed, 26 Aug 2026 22:36:40 +0000</pubDate>
      <link>https://dev.to/piyushnextgen/my-code-and-approach-to-solve-the-two-sum-problem-of-leetcode-40eb</link>
      <guid>https://dev.to/piyushnextgen/my-code-and-approach-to-solve-the-two-sum-problem-of-leetcode-40eb</guid>
      <description>&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Solution&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;twoSum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;nums&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;target&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
        &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;nums&lt;/span&gt;&lt;span class="p"&gt;)):&lt;/span&gt;
            &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;j&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;nums&lt;/span&gt;&lt;span class="p"&gt;)):&lt;/span&gt;
                &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="n"&gt;j&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;nums&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;nums&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;j&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="n"&gt;target&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;j&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  PROBLEM
&lt;/h2&gt;

&lt;p&gt;so in the ques we have given an array nums and an integer target and we have to find two different elements whose sum is equal to target.&lt;/p&gt;

&lt;p&gt;we have to return the indices of those two elements.&lt;/p&gt;

&lt;p&gt;like here nums = [2,7,11,15] and target = 9.&lt;/p&gt;

&lt;p&gt;here 2 + 7 = 9, so the indices are 0 and 1, therefore the answer will be [0,1].&lt;/p&gt;

&lt;h2&gt;
  
  
  APPROACH
&lt;/h2&gt;

&lt;p&gt;so here we use two loops to check every possible pair of elements in the array.&lt;/p&gt;

&lt;p&gt;first loop takes one element using index i.&lt;/p&gt;

&lt;p&gt;then second loop takes another element using index j.&lt;/p&gt;

&lt;p&gt;we check two conditions:&lt;/p&gt;

&lt;p&gt;i != j&lt;/p&gt;

&lt;p&gt;this makes sure that we are not using the same element twice.&lt;/p&gt;

&lt;p&gt;and:&lt;/p&gt;

&lt;p&gt;nums[i] + nums[j] == target&lt;/p&gt;

&lt;p&gt;this checks if the sum of the two elements is equal to the target.&lt;/p&gt;

&lt;p&gt;if both conditions are true, we return their indices [i,j].&lt;/p&gt;

&lt;p&gt;for example nums = [2,7,11,15] and target = 9:&lt;/p&gt;

&lt;p&gt;2 + 2 -&amp;gt; not allowed because i == j&lt;/p&gt;

&lt;p&gt;2 + 7 = 9 -&amp;gt; target found&lt;/p&gt;

&lt;p&gt;so we return [0,1].&lt;/p&gt;

&lt;h2&gt;
  
  
  CODE EXPLAINATION
&lt;/h2&gt;

&lt;p&gt;``&lt;br&gt;
nums = [2,7,11,15]&lt;/p&gt;

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

&lt;p&gt;for i in range(len(nums)): -&amp;gt; first loop through the indices of nums.&lt;/p&gt;

&lt;p&gt;for nums = [2,7,11,15], i will be 0, 1, 2, and 3.&lt;/p&gt;

&lt;p&gt;for j in range(len(nums)): -&amp;gt; second loop also goes through all the indices of nums,this allows us to check every possible pair of elements.&lt;/p&gt;

&lt;p&gt;if i != j and nums[i] + nums[j] == target: -&amp;gt; checking two conditions.&lt;/p&gt;

&lt;p&gt;i != j means the two indices must be different, so we don't use the same element twice.&lt;/p&gt;

&lt;p&gt;nums[i] + nums[j] == target checks if the sum of the two elements is equal to target.&lt;/p&gt;

&lt;p&gt;return [i, j] -&amp;gt; if we find two elements whose sum is equal to the target, we return their indices.&lt;/p&gt;

&lt;p&gt;for example:&lt;/p&gt;

&lt;p&gt;nums[0] + nums[1]&lt;/p&gt;

&lt;p&gt;2 + 7 = 9&lt;/p&gt;

&lt;p&gt;so it returns [0,1].&lt;br&gt;
``&lt;/p&gt;

</description>
      <category>programming</category>
      <category>tutorial</category>
      <category>python</category>
      <category>dsa</category>
    </item>
    <item>
      <title>WHAT'S HISTOGRAM ?
A histogram shows how pixel intensity is distributed in image.
I calculate it to understand how much of image is dark, mid-tone or bright
Using NumPy to count pixel val into 256 bins then convert those regions into % for easier analysis</title>
      <dc:creator>Piyush Baraskar</dc:creator>
      <pubDate>Thu, 20 Aug 2026 20:25:45 +0000</pubDate>
      <link>https://dev.to/piyushnextgen/whats-histogram-a-histogram-shows-how-pixel-intensity-is-distributed-in-image-i-calculate-it-3kmd</link>
      <guid>https://dev.to/piyushnextgen/whats-histogram-a-histogram-shows-how-pixel-intensity-is-distributed-in-image-i-calculate-it-3kmd</guid>
      <description></description>
    </item>
  </channel>
</rss>
