<?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: Rakesh Reddy Peddamallu</title>
    <description>The latest articles on DEV Community by Rakesh Reddy Peddamallu (@rakeshreddy512).</description>
    <link>https://dev.to/rakeshreddy512</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%2F1107828%2F367c29b4-28b9-4e24-8008-998700b62ef8.png</url>
      <title>DEV Community: Rakesh Reddy Peddamallu</title>
      <link>https://dev.to/rakeshreddy512</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/rakeshreddy512"/>
    <language>en</language>
    <item>
      <title># Fat Loss Diet Guide (My Reference)</title>
      <dc:creator>Rakesh Reddy Peddamallu</dc:creator>
      <pubDate>Tue, 28 Jul 2026 02:50:28 +0000</pubDate>
      <link>https://dev.to/rakeshreddy512/-fat-loss-diet-guide-my-reference-3663</link>
      <guid>https://dev.to/rakeshreddy512/-fat-loss-diet-guide-my-reference-3663</guid>
      <description>&lt;h2&gt;
  
  
  Goal
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Lose fat while retaining as much muscle as possible.&lt;/li&gt;
&lt;li&gt;Continue strength training and eat enough protein.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  My Daily Targets
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Calories:&lt;/strong&gt; ~2,000 kcal&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Protein:&lt;/strong&gt; 150 g&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fat:&lt;/strong&gt; 60 g&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Carbohydrates:&lt;/strong&gt; ~185 g&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Step 1: Know My Daily Target
&lt;/h1&gt;

&lt;p&gt;Every day, aim to stay close to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ 2,000 kcal&lt;/li&gt;
&lt;li&gt;✅ 150 g protein&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Protein is the highest priority for muscle retention.&lt;/p&gt;




&lt;h1&gt;
  
  
  Step 2: Understand Calories
&lt;/h1&gt;

&lt;p&gt;Each macronutrient has a fixed calorie value:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Protein = &lt;strong&gt;4 kcal/g&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Carbohydrates = &lt;strong&gt;4 kcal/g&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Fat = &lt;strong&gt;9 kcal/g&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;25 g protein = 100 kcal&lt;/li&gt;
&lt;li&gt;50 g carbs = 200 kcal&lt;/li&gt;
&lt;li&gt;10 g fat = 90 kcal&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Step 3: Weigh Food
&lt;/h1&gt;

&lt;p&gt;Use a digital kitchen scale.&lt;/p&gt;

&lt;p&gt;Weigh foods before eating and track them in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Healthify&lt;/li&gt;
&lt;li&gt;MyFitnessPal&lt;/li&gt;
&lt;li&gt;Cronometer&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Tracking removes guessing.&lt;/p&gt;




&lt;h1&gt;
  
  
  Common Food Values
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Protein
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;1 Egg = ~6 g protein&lt;/li&gt;
&lt;li&gt;100 g Chicken Breast = ~31 g protein&lt;/li&gt;
&lt;li&gt;100 g Fish = ~22–25 g protein&lt;/li&gt;
&lt;li&gt;1 Scoop Whey = ~24–25 g protein&lt;/li&gt;
&lt;li&gt;100 g Paneer = ~18 g protein&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Carbs
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;100 g Cooked Rice = ~28 g carbs&lt;/li&gt;
&lt;li&gt;100 g Oats = ~66 g carbs&lt;/li&gt;
&lt;li&gt;Banana = ~27 g carbs&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Fats
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;1 Egg = ~5 g fat&lt;/li&gt;
&lt;li&gt;1 tbsp Oil = ~14 g fat&lt;/li&gt;
&lt;li&gt;Almonds (30 g) = ~15 g fat&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Sample Day
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Breakfast
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;4 Eggs&lt;/li&gt;
&lt;li&gt;Oats&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Lunch
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Chicken&lt;/li&gt;
&lt;li&gt;Rice&lt;/li&gt;
&lt;li&gt;Vegetables&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Snack
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Whey Protein&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Dinner
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Chicken/Fish&lt;/li&gt;
&lt;li&gt;Rice&lt;/li&gt;
&lt;li&gt;Vegetables&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Before Bed (Optional)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Curd or Paneer (if calories allow)&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Daily Checklist
&lt;/h1&gt;

&lt;p&gt;☐ Calories around 2,000 kcal&lt;/p&gt;

&lt;p&gt;☐ Protein around 150 g&lt;/p&gt;

&lt;p&gt;☐ Lift weights&lt;/p&gt;

&lt;p&gt;☐ Drink enough water&lt;/p&gt;

&lt;p&gt;☐ Sleep 7–9 hours&lt;/p&gt;




&lt;h1&gt;
  
  
  Weekly Progress
&lt;/h1&gt;

&lt;p&gt;Every morning:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Weigh yourself after using the bathroom.&lt;/li&gt;
&lt;li&gt;Before eating or drinking anything.&lt;/li&gt;
&lt;li&gt;Wear similar clothing (or none).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Do &lt;strong&gt;not&lt;/strong&gt; judge progress from one day's weight.&lt;/p&gt;

&lt;p&gt;Calculate the &lt;strong&gt;weekly average&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Healthy fat loss:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;0.4–0.7 kg per week&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If weight doesn't decrease for &lt;strong&gt;2 weeks&lt;/strong&gt;, reduce calories by &lt;strong&gt;100–150 kcal/day&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  Important Rules
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;Never crash diet.&lt;/li&gt;
&lt;li&gt;Prioritise protein every day.&lt;/li&gt;
&lt;li&gt;Keep lifting heavy.&lt;/li&gt;
&lt;li&gt;Be consistent rather than perfect.&lt;/li&gt;
&lt;li&gt;Trust weekly trends, not daily fluctuations.&lt;/li&gt;
&lt;/ol&gt;




&lt;h1&gt;
  
  
  The Golden Rule
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Calories determine whether I lose fat.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Protein and strength training determine whether I keep my muscle.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If I consistently hit my calorie and protein targets while continuing my workouts, fat loss will happen and muscle loss will be minimised.&lt;/p&gt;

</description>
    </item>
    <item>
      <title># My Body Composition Analysis (15 May 2026)</title>
      <dc:creator>Rakesh Reddy Peddamallu</dc:creator>
      <pubDate>Tue, 28 Jul 2026 02:41:32 +0000</pubDate>
      <link>https://dev.to/rakeshreddy512/-my-body-composition-analysis-15-may-2026-h6g</link>
      <guid>https://dev.to/rakeshreddy512/-my-body-composition-analysis-15-may-2026-h6g</guid>
      <description>&lt;p&gt;&lt;strong&gt;Name:&lt;/strong&gt; Rakesh&lt;br&gt;
&lt;strong&gt;Age:&lt;/strong&gt; 26&lt;br&gt;
&lt;strong&gt;Height:&lt;/strong&gt; 169 cm&lt;br&gt;
&lt;strong&gt;Date:&lt;/strong&gt; 15 May 2026&lt;/p&gt;




&lt;h1&gt;
  
  
  Overview
&lt;/h1&gt;

&lt;p&gt;This report represents my starting point before several months of consistent gym training.&lt;/p&gt;

&lt;p&gt;Although the machine classifies me as a &lt;strong&gt;"Fat Muscle"&lt;/strong&gt; body type, this is actually a good place to begin because I already have a decent amount of muscle. My biggest challenge is reducing body fat while preserving and gradually building muscle.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Current Stats&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Height: &lt;strong&gt;169 cm&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Weight: &lt;strong&gt;68.3 kg&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;BMI: &lt;strong&gt;23.9&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Body Fat: &lt;strong&gt;27.3%&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Fat Mass: &lt;strong&gt;18.7 kg&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Muscle Mass: &lt;strong&gt;46.2 kg&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Skeletal Muscle: &lt;strong&gt;27.5 kg&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;BMR: &lt;strong&gt;1441 kcal&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Body Score: &lt;strong&gt;66/100&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  What the Numbers Mean
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Weight
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;68.3 kg&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;My weight is within the normal range for my height. The issue isn't my weight—it's how much of that weight is fat versus muscle.&lt;/p&gt;




&lt;h2&gt;
  
  
  BMI
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;23.9&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;BMI places me near the upper end of the normal range.&lt;/p&gt;

&lt;p&gt;BMI is only a rough screening tool because it doesn't distinguish between muscle and fat, so body fat percentage is much more useful.&lt;/p&gt;




&lt;h2&gt;
  
  
  Body Fat Percentage
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;27.3%&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is my biggest weakness.&lt;/p&gt;

&lt;p&gt;For men:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;10–15% = Athletic&lt;/li&gt;
&lt;li&gt;15–20% = Fit&lt;/li&gt;
&lt;li&gt;20–25% = Average&lt;/li&gt;
&lt;li&gt;Above 25% = High body fat&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At 27.3%, much of my muscle definition is hidden.&lt;/p&gt;




&lt;h2&gt;
  
  
  Fat Mass
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;18.7 kg&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This means nearly 19 kg of my body weight is fat.&lt;/p&gt;

&lt;p&gt;Reducing this while maintaining muscle will dramatically improve my appearance.&lt;/p&gt;




&lt;h2&gt;
  
  
  Muscle Mass
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;46.2 kg&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is encouraging.&lt;/p&gt;

&lt;p&gt;It means I already have a solid muscle foundation.&lt;/p&gt;

&lt;p&gt;My focus should be on revealing this muscle by reducing body fat rather than trying to gain weight.&lt;/p&gt;




&lt;h2&gt;
  
  
  Skeletal Muscle
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;27.5 kg&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Normal range:&lt;br&gt;
&lt;strong&gt;26.7–32.7 kg&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I'm already inside the healthy range.&lt;/p&gt;

&lt;p&gt;This confirms that I don't have a muscle deficiency—I simply need better muscle definition through fat loss.&lt;/p&gt;




&lt;h2&gt;
  
  
  Water
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;36.4 kg&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Within the healthy range.&lt;/p&gt;

&lt;p&gt;Hydration appears normal.&lt;/p&gt;




&lt;h2&gt;
  
  
  Protein
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;9.8 kg&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Within the healthy range.&lt;/p&gt;

&lt;p&gt;This indicates adequate lean tissue.&lt;/p&gt;




&lt;h2&gt;
  
  
  Bone &amp;amp; Minerals
&lt;/h2&gt;

&lt;p&gt;Bone Mass:&lt;br&gt;
&lt;strong&gt;2.7 kg&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Mineral:&lt;br&gt;
&lt;strong&gt;3.4 kg&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Both are within the expected range.&lt;/p&gt;




&lt;h2&gt;
  
  
  Basal Metabolic Rate (BMR)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1441 kcal/day&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is the approximate number of calories my body burns at complete rest.&lt;/p&gt;

&lt;p&gt;My actual daily calorie needs are much higher after including activity.&lt;/p&gt;




&lt;h1&gt;
  
  
  Machine Suggestions
&lt;/h1&gt;

&lt;p&gt;The machine recommends:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Lose &lt;strong&gt;9.2 kg of fat&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Gain &lt;strong&gt;3.7 kg of muscle&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This represents an ideal long-term goal rather than something to achieve quickly.&lt;/p&gt;




&lt;h1&gt;
  
  
  My Biggest Strengths
&lt;/h1&gt;

&lt;p&gt;✅ Healthy muscle mass&lt;/p&gt;

&lt;p&gt;✅ Normal skeletal muscle&lt;/p&gt;

&lt;p&gt;✅ Healthy hydration&lt;/p&gt;

&lt;p&gt;✅ Good foundation for body recomposition&lt;/p&gt;




&lt;h1&gt;
  
  
  My Biggest Weaknesses
&lt;/h1&gt;

&lt;p&gt;❌ High body fat (27.3%)&lt;/p&gt;

&lt;p&gt;❌ High subcutaneous fat&lt;/p&gt;

&lt;p&gt;❌ Limited muscle definition due to excess fat&lt;/p&gt;




&lt;h1&gt;
  
  
  My Goal
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Short-Term (3–6 Months)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Reduce body fat below &lt;strong&gt;22%&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Preserve all current muscle&lt;/li&gt;
&lt;li&gt;Improve strength in compound lifts&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Medium-Term (6–12 Months)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Reach &lt;strong&gt;15–18% body fat&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Build noticeably larger shoulders, chest, back and legs&lt;/li&gt;
&lt;li&gt;Develop visible upper abs&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Long-Term
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Reach &lt;strong&gt;12–15% body fat&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Maintain muscle year-round&lt;/li&gt;
&lt;li&gt;Achieve an athletic physique with visible muscle definition&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  My Strategy
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Training
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Push–Pull–Legs routine&lt;/li&gt;
&lt;li&gt;Progressive overload&lt;/li&gt;
&lt;li&gt;Train each muscle group twice per week&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Nutrition
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;High-protein diet (110–150 g/day)&lt;/li&gt;
&lt;li&gt;Moderate calorie deficit (300–500 kcal/day)&lt;/li&gt;
&lt;li&gt;Mostly whole foods&lt;/li&gt;
&lt;li&gt;Stay hydrated&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Cardio
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Daily walking&lt;/li&gt;
&lt;li&gt;Light jogging when appropriate&lt;/li&gt;
&lt;li&gt;Increase daily activity instead of excessive cardio&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Recovery
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Sleep 7–8 hours&lt;/li&gt;
&lt;li&gt;Manage stress&lt;/li&gt;
&lt;li&gt;Stay consistent&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Important Lesson
&lt;/h1&gt;

&lt;p&gt;This report taught me something important:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;My problem isn't that I don't have muscle. My problem is that I have too much body fat covering the muscle I already have.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Trying to lose weight as fast as possible would risk losing muscle.&lt;/p&gt;

&lt;p&gt;The smarter approach is to lose fat slowly while continuing to build strength.&lt;/p&gt;




&lt;h1&gt;
  
  
  Future Comparison
&lt;/h1&gt;

&lt;p&gt;This report will serve as my baseline.&lt;/p&gt;

&lt;p&gt;When I take another body composition scan, I will compare:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Weight&lt;/li&gt;
&lt;li&gt;Body fat %&lt;/li&gt;
&lt;li&gt;Fat mass&lt;/li&gt;
&lt;li&gt;Skeletal muscle&lt;/li&gt;
&lt;li&gt;Muscle mass&lt;/li&gt;
&lt;li&gt;Waist size&lt;/li&gt;
&lt;li&gt;Strength levels&lt;/li&gt;
&lt;li&gt;Progress photos&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal isn't simply to weigh less—it's to become leaner, stronger, and healthier over time.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>B12 Deficiency – Finding the Cause of Malabsorption</title>
      <dc:creator>Rakesh Reddy Peddamallu</dc:creator>
      <pubDate>Sun, 26 Jul 2026 12:32:09 +0000</pubDate>
      <link>https://dev.to/rakeshreddy512/b12-deficiency-finding-the-cause-of-malabsorption-566i</link>
      <guid>https://dev.to/rakeshreddy512/b12-deficiency-finding-the-cause-of-malabsorption-566i</guid>
      <description>&lt;h2&gt;
  
  
  Step 1 – Confirm B12 Deficiency
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Vitamin B12&lt;/li&gt;
&lt;li&gt;CBC + MCV + Peripheral Smear&lt;/li&gt;
&lt;li&gt;Methylmalonic Acid (MMA)&lt;/li&gt;
&lt;li&gt;Serum Folate&lt;/li&gt;
&lt;li&gt;Iron Studies (Ferritin, Iron, TIBC, Transferrin Saturation)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 2 – Check for Intrinsic Factor Problems
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Intrinsic Factor Antibody ⭐ (Most important)&lt;/li&gt;
&lt;li&gt;Parietal Cell Antibody&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 3 – Check for Other Absorption Disorders
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Celiac Disease Panel&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tissue Transglutaminase IgA (tTG-IgA)&lt;/li&gt;
&lt;li&gt;Total IgA&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Gastroscopy (Endoscopy) with biopsy (if advised by gastroenterologist)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 4 – If Symptoms Suggest Other Causes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;SIBO Breath Test&lt;/li&gt;
&lt;li&gt;Fecal Calprotectin&lt;/li&gt;
&lt;li&gt;Colonoscopy (if indicated)&lt;/li&gt;
&lt;li&gt;Small Bowel Imaging (if indicated)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Additional Helpful Tests
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Vitamin D&lt;/li&gt;
&lt;li&gt;TSH (Thyroid Profile)&lt;/li&gt;
&lt;li&gt;Comprehensive Metabolic Panel (CMP)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  My Testing Priority
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Vitamin B12&lt;/li&gt;
&lt;li&gt;CBC + MCV&lt;/li&gt;
&lt;li&gt;Methylmalonic Acid (MMA)&lt;/li&gt;
&lt;li&gt;Intrinsic Factor Antibody&lt;/li&gt;
&lt;li&gt;Parietal Cell Antibody&lt;/li&gt;
&lt;li&gt;Folate&lt;/li&gt;
&lt;li&gt;Iron Studies&lt;/li&gt;
&lt;li&gt;Celiac Panel&lt;/li&gt;
&lt;li&gt;Gastroscopy (if needed)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Key Point:&lt;/strong&gt; If B12 intake is adequate (eggs, meat, fish) but deficiency persists, think &lt;strong&gt;malabsorption rather than low intake&lt;/strong&gt;. Start with blood tests before moving to invasive investigations.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Abs Routine (Personal Reference)</title>
      <dc:creator>Rakesh Reddy Peddamallu</dc:creator>
      <pubDate>Sun, 26 Jul 2026 11:22:08 +0000</pubDate>
      <link>https://dev.to/rakeshreddy512/abs-routine-personal-reference-4co8</link>
      <guid>https://dev.to/rakeshreddy512/abs-routine-personal-reference-4co8</guid>
      <description>&lt;h2&gt;
  
  
  Goal
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Build thick abs&lt;/li&gt;
&lt;li&gt;Get a visible six-pack&lt;/li&gt;
&lt;li&gt;Improve core strength&lt;/li&gt;
&lt;li&gt;Train abs like any other muscle&lt;/li&gt;
&lt;li&gt;Stay consistent&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Frequency
&lt;/h2&gt;

&lt;p&gt;✅ Train &lt;strong&gt;2 times per week&lt;/strong&gt;&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Leg Day + Abs&lt;/li&gt;
&lt;li&gt;Leg Day + Abs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Workout Duration:&lt;/strong&gt; 15–20 minutes&lt;/p&gt;




&lt;h1&gt;
  
  
  Workout A
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Reverse Crunch
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;3 Sets × 12–15 Reps&lt;/li&gt;
&lt;li&gt;Lift hips off the floor&lt;/li&gt;
&lt;li&gt;Slow and controlled&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Lying Leg Raise
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;3 Sets × 10–15 Reps&lt;/li&gt;
&lt;li&gt;Keep lower back pressed to the floor&lt;/li&gt;
&lt;li&gt;Lower slowly&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Plank
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;3 Sets × 45–60 Seconds&lt;/li&gt;
&lt;li&gt;Tight core&lt;/li&gt;
&lt;li&gt;Straight body&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Hollow Body Hold
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;3 Sets × 20–40 Seconds&lt;/li&gt;
&lt;li&gt;Lower back on the floor&lt;/li&gt;
&lt;li&gt;Don't arch the back&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Workout B
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Bicycle Crunch
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;3 Sets × 20 Reps&lt;/li&gt;
&lt;li&gt;Twist the torso&lt;/li&gt;
&lt;li&gt;Don't rush&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Flutter Kicks
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;3 Sets × 30 Seconds&lt;/li&gt;
&lt;li&gt;Small controlled kicks&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Side Plank
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;3 Sets × 30–45 Seconds Each Side&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Mountain Climbers
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;3 Sets × 30–40 Seconds&lt;/li&gt;
&lt;li&gt;Keep core tight&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Weekly Rotation
&lt;/h1&gt;

&lt;p&gt;Week after week:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Session 1&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Workout A&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Session 2&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Workout B&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Progressive Overload
&lt;/h1&gt;

&lt;p&gt;Every week:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add 1–2 reps &lt;strong&gt;or&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Hold planks 5–10 seconds longer &lt;strong&gt;or&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Improve form &lt;strong&gt;or&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Slow down each rep&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Never sacrifice form just to increase reps.&lt;/p&gt;




&lt;h1&gt;
  
  
  Rest Between Sets
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;45–60 seconds&lt;/li&gt;
&lt;li&gt;Up to 90 seconds if needed&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Things to Remember
&lt;/h1&gt;

&lt;p&gt;✅ Slow, controlled reps&lt;/p&gt;

&lt;p&gt;✅ Feel the abs working&lt;/p&gt;

&lt;p&gt;✅ Breathe normally&lt;/p&gt;

&lt;p&gt;✅ Focus on quality, not speed&lt;/p&gt;

&lt;p&gt;✅ Recover for at least 48 hours before the next ab workout&lt;/p&gt;




&lt;h1&gt;
  
  
  Nutrition Reminder
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Eat enough protein&lt;/li&gt;
&lt;li&gt;Stay in a calorie deficit if the goal is visible abs&lt;/li&gt;
&lt;li&gt;Drink plenty of water&lt;/li&gt;
&lt;li&gt;Sleep 7–9 hours&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Biggest Reminder
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Train abs to build them.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lose body fat to reveal them.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;No amount of crunches will show a six-pack if body fat is too high. Consistency with training and nutrition is what makes the difference.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>15-Minute Daily Routine to Break the Mouth Breathing Habit</title>
      <dc:creator>Rakesh Reddy Peddamallu</dc:creator>
      <pubDate>Wed, 22 Jul 2026 01:01:59 +0000</pubDate>
      <link>https://dev.to/rakeshreddy512/15-minute-daily-routine-to-break-the-mouth-breathing-habit-2kk0</link>
      <guid>https://dev.to/rakeshreddy512/15-minute-daily-routine-to-break-the-mouth-breathing-habit-2kk0</guid>
      <description>&lt;h2&gt;
  
  
  🌅 Morning (5 minutes)
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Belly Breathing
&lt;/h3&gt;

&lt;p&gt;⏱️ 2 minutes&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Lips closed&lt;/li&gt;
&lt;li&gt;Inhale through the nose for 4 seconds&lt;/li&gt;
&lt;li&gt;Belly expands&lt;/li&gt;
&lt;li&gt;Exhale through the nose for 6 seconds&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  2. Tongue Posture Hold
&lt;/h3&gt;

&lt;p&gt;⏱️ 2 minutes&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Lips gently closed&lt;/li&gt;
&lt;li&gt;Entire tongue on the roof of the mouth&lt;/li&gt;
&lt;li&gt;Breathe only through the nose&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  3. Slow Nasal Breathing
&lt;/h3&gt;

&lt;p&gt;⏱️ 1 minute&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Slow inhale&lt;/li&gt;
&lt;li&gt;Slow exhale&lt;/li&gt;
&lt;li&gt;Stay relaxed&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  🚶 During the Day
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Nasal Walking
&lt;/h2&gt;

&lt;p&gt;⏱️ 15–20 minutes&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Walk at a comfortable pace&lt;/li&gt;
&lt;li&gt;Nose breathing only&lt;/li&gt;
&lt;li&gt;If you feel short of breath, &lt;strong&gt;slow down instead of opening your mouth&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  ⏰ Every Hour (30 seconds)
&lt;/h1&gt;

&lt;p&gt;When you notice you're mouth breathing:&lt;/p&gt;

&lt;p&gt;✅ Close your lips&lt;/p&gt;

&lt;p&gt;✅ Tongue on the roof of the mouth&lt;/p&gt;

&lt;p&gt;✅ Take 5 slow breaths through your nose&lt;/p&gt;




&lt;h1&gt;
  
  
  🌙 Before Bed (5 minutes)
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Belly Breathing
&lt;/h3&gt;

&lt;p&gt;⏱️ 3 minutes&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Inhale through the nose&lt;/li&gt;
&lt;li&gt;Belly expands&lt;/li&gt;
&lt;li&gt;Exhale slowly through the nose&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Tongue Posture
&lt;/h3&gt;

&lt;p&gt;⏱️ 2 minutes&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Lips closed&lt;/li&gt;
&lt;li&gt;Tongue on the roof of the mouth&lt;/li&gt;
&lt;li&gt;Relax your jaw&lt;/li&gt;
&lt;li&gt;Continue breathing through your nose&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Weekly Progress
&lt;/h1&gt;

&lt;p&gt;☐ Less mouth breathing while working&lt;/p&gt;

&lt;p&gt;☐ Less mouth breathing while watching TV&lt;/p&gt;

&lt;p&gt;☐ Waking up with mouth closed more often&lt;/p&gt;

&lt;p&gt;☐ Nose breathing feels more natural&lt;/p&gt;




</description>
    </item>
    <item>
      <title>The Complete React Learning Roadmap for Developers with 3–5 Years of Experience</title>
      <dc:creator>Rakesh Reddy Peddamallu</dc:creator>
      <pubDate>Tue, 14 Jul 2026 12:48:55 +0000</pubDate>
      <link>https://dev.to/rakeshreddy512/the-complete-react-learning-roadmap-for-developers-with-3-5-years-of-experience-bfb</link>
      <guid>https://dev.to/rakeshreddy512/the-complete-react-learning-roadmap-for-developers-with-3-5-years-of-experience-bfb</guid>
      <description>&lt;p&gt;Every few months, I see the same question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"I already have a few years of React experience. What's the best way to become an advanced React developer?"&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Most roadmaps either start from absolute basics or jump straight into advanced concepts without explaining &lt;em&gt;why&lt;/em&gt; you should learn them.&lt;/p&gt;

&lt;p&gt;This article is the roadmap I wish I had. It's designed for developers who already know React but want to reach the next level.&lt;/p&gt;




&lt;h1&gt;
  
  
  Phase 1 – Revisit React the Right Way
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Resource:&lt;/strong&gt; &lt;a href="https://react.dev" rel="noopener noreferrer"&gt;https://react.dev&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Don't read React.dev from start to finish.&lt;/p&gt;

&lt;p&gt;You already know how to create components and use &lt;code&gt;useState&lt;/code&gt;. Instead, focus on understanding React's &lt;strong&gt;mental model&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Must Read
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Thinking in React
&lt;/h3&gt;

&lt;p&gt;Learn how React applications should be designed.&lt;/p&gt;

&lt;p&gt;You'll understand:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Component decomposition&lt;/li&gt;
&lt;li&gt;Single source of truth&lt;/li&gt;
&lt;li&gt;State ownership&lt;/li&gt;
&lt;li&gt;Data flow&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  2. State as a Snapshot
&lt;/h3&gt;

&lt;p&gt;Probably the most important article for understanding React.&lt;/p&gt;

&lt;p&gt;It explains why state behaves the way it does.&lt;/p&gt;




&lt;h3&gt;
  
  
  3. Queueing a Series of State Updates
&lt;/h3&gt;

&lt;p&gt;Understand batching and functional updates.&lt;/p&gt;




&lt;h3&gt;
  
  
  4. Render and Commit
&lt;/h3&gt;

&lt;p&gt;Learn what React actually does during rendering.&lt;/p&gt;

&lt;p&gt;This is the foundation for performance optimization.&lt;/p&gt;




&lt;h3&gt;
  
  
  5. Keeping Components Pure
&lt;/h3&gt;

&lt;p&gt;Understand why React expects components to be pure functions.&lt;/p&gt;




&lt;h3&gt;
  
  
  6. Synchronizing with Effects
&lt;/h3&gt;

&lt;p&gt;Learn the correct purpose of &lt;code&gt;useEffect&lt;/code&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  7. You Might Not Need an Effect ⭐
&lt;/h3&gt;

&lt;p&gt;This article alone can eliminate many unnecessary &lt;code&gt;useEffect&lt;/code&gt;s.&lt;/p&gt;




&lt;h3&gt;
  
  
  8. Lifecycle of Reactive Effects
&lt;/h3&gt;

&lt;p&gt;Understand dependencies, cleanup, and effect execution.&lt;/p&gt;




&lt;h3&gt;
  
  
  9. Escape Hatches
&lt;/h3&gt;

&lt;p&gt;Learn when to use:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;refs&lt;/li&gt;
&lt;li&gt;DOM manipulation&lt;/li&gt;
&lt;li&gt;imperative APIs&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  10. Hooks Reference
&lt;/h3&gt;

&lt;p&gt;Read carefully:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;useState&lt;/li&gt;
&lt;li&gt;useReducer&lt;/li&gt;
&lt;li&gt;useRef&lt;/li&gt;
&lt;li&gt;useContext&lt;/li&gt;
&lt;li&gt;useMemo&lt;/li&gt;
&lt;li&gt;useCallback&lt;/li&gt;
&lt;li&gt;useTransition&lt;/li&gt;
&lt;li&gt;useDeferredValue&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  11. React Compiler
&lt;/h3&gt;

&lt;p&gt;Understand where React is heading.&lt;/p&gt;




&lt;h3&gt;
  
  
  12. Server Components
&lt;/h3&gt;

&lt;p&gt;You don't need mastery yet.&lt;/p&gt;

&lt;p&gt;Just understand:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Why they exist&lt;/li&gt;
&lt;li&gt;Their advantages&lt;/li&gt;
&lt;li&gt;Their limitations&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Phase 2 – Learn How React Works Internally
&lt;/h1&gt;

&lt;p&gt;Once you understand the APIs, start learning the engine behind them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Topics
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Virtual DOM&lt;/li&gt;
&lt;li&gt;Diffing Algorithm&lt;/li&gt;
&lt;li&gt;Reconciliation&lt;/li&gt;
&lt;li&gt;Fiber Architecture&lt;/li&gt;
&lt;li&gt;Scheduler&lt;/li&gt;
&lt;li&gt;Concurrent Rendering&lt;/li&gt;
&lt;li&gt;Hydration&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Resources
&lt;/h2&gt;

&lt;h3&gt;
  
  
  React GitHub
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/facebook/react" rel="noopener noreferrer"&gt;https://github.com/facebook/react&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Read selected files and discussions—not every line.&lt;/p&gt;




&lt;h3&gt;
  
  
  Dan Abramov's Blog
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://overreacted.io" rel="noopener noreferrer"&gt;https://overreacted.io&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Excellent explanations of React's philosophy.&lt;/p&gt;




&lt;h3&gt;
  
  
  Josh Comeau
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.joshwcomeau.com" rel="noopener noreferrer"&gt;https://www.joshwcomeau.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Outstanding articles on React, JavaScript, CSS, and browser rendering.&lt;/p&gt;




&lt;h1&gt;
  
  
  Phase 3 – Master State Management
&lt;/h1&gt;

&lt;p&gt;A common mistake is trying to solve every state problem with Context.&lt;/p&gt;

&lt;p&gt;Instead, understand that different kinds of state need different tools.&lt;/p&gt;

&lt;h2&gt;
  
  
  Learn
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Context API&lt;/li&gt;
&lt;li&gt;useReducer&lt;/li&gt;
&lt;li&gt;Zustand&lt;/li&gt;
&lt;li&gt;Redux Toolkit&lt;/li&gt;
&lt;li&gt;TanStack Query&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Resource
&lt;/h2&gt;

&lt;p&gt;TanStack Query Docs&lt;/p&gt;

&lt;p&gt;&lt;a href="https://tanstack.com/query/latest" rel="noopener noreferrer"&gt;https://tanstack.com/query/latest&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You'll learn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;caching&lt;/li&gt;
&lt;li&gt;optimistic updates&lt;/li&gt;
&lt;li&gt;retries&lt;/li&gt;
&lt;li&gt;mutations&lt;/li&gt;
&lt;li&gt;invalidation&lt;/li&gt;
&lt;li&gt;pagination&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Modern React applications rely heavily on these concepts.&lt;/p&gt;




&lt;h1&gt;
  
  
  Phase 4 – Master Performance
&lt;/h1&gt;

&lt;p&gt;Performance isn't about adding &lt;code&gt;useMemo&lt;/code&gt; everywhere.&lt;/p&gt;

&lt;p&gt;It's about understanding &lt;strong&gt;why components render&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Learn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;React.memo&lt;/li&gt;
&lt;li&gt;useMemo&lt;/li&gt;
&lt;li&gt;useCallback&lt;/li&gt;
&lt;li&gt;Lazy Loading&lt;/li&gt;
&lt;li&gt;Code Splitting&lt;/li&gt;
&lt;li&gt;Suspense&lt;/li&gt;
&lt;li&gt;React Profiler&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Profile first, optimize second.&lt;/p&gt;




&lt;h1&gt;
  
  
  Phase 5 – Learn Modern Routing
&lt;/h1&gt;

&lt;p&gt;Resource&lt;/p&gt;

&lt;p&gt;&lt;a href="https://reactrouter.com" rel="noopener noreferrer"&gt;https://reactrouter.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Study:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Nested Routes&lt;/li&gt;
&lt;li&gt;Loaders&lt;/li&gt;
&lt;li&gt;Actions&lt;/li&gt;
&lt;li&gt;Error Boundaries&lt;/li&gt;
&lt;li&gt;Deferred Loading&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Modern routing is much more than page navigation.&lt;/p&gt;




&lt;h1&gt;
  
  
  Phase 6 – Learn Advanced React Patterns
&lt;/h1&gt;

&lt;p&gt;Study these design patterns.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Compound Components&lt;/li&gt;
&lt;li&gt;Custom Hooks&lt;/li&gt;
&lt;li&gt;Provider Pattern&lt;/li&gt;
&lt;li&gt;Controlled Components&lt;/li&gt;
&lt;li&gt;Uncontrolled Components&lt;/li&gt;
&lt;li&gt;Headless Components&lt;/li&gt;
&lt;li&gt;Render Props&lt;/li&gt;
&lt;li&gt;Higher Order Components (historical)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These patterns appear in almost every mature React codebase.&lt;/p&gt;




&lt;h1&gt;
  
  
  Phase 7 – Learn TypeScript Properly
&lt;/h1&gt;

&lt;p&gt;One of the biggest skill gaps among React developers is TypeScript.&lt;/p&gt;

&lt;p&gt;Resource&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.totaltypescript.com" rel="noopener noreferrer"&gt;https://www.totaltypescript.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Focus on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Generics&lt;/li&gt;
&lt;li&gt;Utility Types&lt;/li&gt;
&lt;li&gt;Infer&lt;/li&gt;
&lt;li&gt;Mapped Types&lt;/li&gt;
&lt;li&gt;Component Typing&lt;/li&gt;
&lt;li&gt;Hook Typing&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Phase 8 – Learn Testing
&lt;/h1&gt;

&lt;p&gt;Resource&lt;/p&gt;

&lt;p&gt;&lt;a href="https://testing-library.com" rel="noopener noreferrer"&gt;https://testing-library.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Learn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;React Testing Library&lt;/li&gt;
&lt;li&gt;User Events&lt;/li&gt;
&lt;li&gt;Mocking&lt;/li&gt;
&lt;li&gt;Async Testing&lt;/li&gt;
&lt;li&gt;Integration Testing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Test behavior, not implementation.&lt;/p&gt;




&lt;h1&gt;
  
  
  Phase 9 – Learn Accessibility
&lt;/h1&gt;

&lt;p&gt;Accessibility separates good frontend developers from great ones.&lt;/p&gt;

&lt;p&gt;Learn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Semantic HTML&lt;/li&gt;
&lt;li&gt;Keyboard Navigation&lt;/li&gt;
&lt;li&gt;Focus Management&lt;/li&gt;
&lt;li&gt;ARIA&lt;/li&gt;
&lt;li&gt;Screen Readers&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Phase 10 – Learn Modern React Frameworks
&lt;/h1&gt;

&lt;p&gt;React itself isn't enough anymore.&lt;/p&gt;

&lt;p&gt;Choose one framework and learn it deeply.&lt;/p&gt;

&lt;p&gt;Recommended:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Next.js&lt;/li&gt;
&lt;li&gt;Remix&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Understand:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SSR&lt;/li&gt;
&lt;li&gt;CSR&lt;/li&gt;
&lt;li&gt;SSG&lt;/li&gt;
&lt;li&gt;ISR&lt;/li&gt;
&lt;li&gt;Server Components&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Phase 11 – Learn Browser Internals
&lt;/h1&gt;

&lt;p&gt;Most React problems are actually browser problems.&lt;/p&gt;

&lt;p&gt;Study:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Event Loop&lt;/li&gt;
&lt;li&gt;Call Stack&lt;/li&gt;
&lt;li&gt;Rendering Pipeline&lt;/li&gt;
&lt;li&gt;Layout&lt;/li&gt;
&lt;li&gt;Paint&lt;/li&gt;
&lt;li&gt;Composite&lt;/li&gt;
&lt;li&gt;Reflow&lt;/li&gt;
&lt;li&gt;Repaint&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These concepts explain many UI performance issues.&lt;/p&gt;




&lt;h1&gt;
  
  
  Phase 12 – Become Better at JavaScript
&lt;/h1&gt;

&lt;p&gt;React is just JavaScript.&lt;/p&gt;

&lt;p&gt;Master:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Closures&lt;/li&gt;
&lt;li&gt;Prototypes&lt;/li&gt;
&lt;li&gt;Execution Context&lt;/li&gt;
&lt;li&gt;Event Loop&lt;/li&gt;
&lt;li&gt;Promises&lt;/li&gt;
&lt;li&gt;Async/Await&lt;/li&gt;
&lt;li&gt;Memory Management&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A strong JavaScript foundation makes React much easier.&lt;/p&gt;




&lt;h1&gt;
  
  
  Phase 13 – Read One Premium Course
&lt;/h1&gt;

&lt;p&gt;If you only buy one React course, I'd recommend:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Epic React – Kent C. Dodds&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://epicreact.dev" rel="noopener noreferrer"&gt;https://epicreact.dev&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It's practical, in-depth, and focused on how experienced developers build production-quality React applications.&lt;/p&gt;




&lt;h1&gt;
  
  
  Suggested Reading Order
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Week 1–2
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;React.dev (Mental Model)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Week 3
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Dan Abramov&lt;/li&gt;
&lt;li&gt;Josh Comeau&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Week 4
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;React Fiber&lt;/li&gt;
&lt;li&gt;Reconciliation&lt;/li&gt;
&lt;li&gt;Concurrent Rendering&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Week 5
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;TanStack Query&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Week 6
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;React Router&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Week 7
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;TypeScript&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Week 8
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Testing&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Week 9
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Accessibility&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Week 10
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Next.js&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Ongoing
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;JavaScript Internals&lt;/li&gt;
&lt;li&gt;Browser Internals&lt;/li&gt;
&lt;li&gt;System Design for Frontend&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  My Advice
&lt;/h1&gt;

&lt;p&gt;Many developers spend years learning more React APIs.&lt;/p&gt;

&lt;p&gt;I think that's the wrong goal.&lt;/p&gt;

&lt;p&gt;Instead, focus on four layers:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Learn the API&lt;/strong&gt; – Understand what React provides.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Learn the Mental Model&lt;/strong&gt; – Understand why React behaves the way it does.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Learn the Architecture&lt;/strong&gt; – Build scalable applications with the right patterns and tools.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Learn the Internals&lt;/strong&gt; – Understand Fiber, reconciliation, rendering, and the browser itself.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Once you understand these layers, React stops feeling like a collection of hooks and starts feeling like a well-designed system. That's the point where debugging gets easier, architecture decisions become more deliberate, and senior-level interviews feel much more natural.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Push Pull Legs</title>
      <dc:creator>Rakesh Reddy Peddamallu</dc:creator>
      <pubDate>Thu, 30 Apr 2026 02:23:59 +0000</pubDate>
      <link>https://dev.to/rakeshreddy512/push-pull-legs-2hb8</link>
      <guid>https://dev.to/rakeshreddy512/push-pull-legs-2hb8</guid>
      <description>&lt;p&gt;Given your stats (≈67 kg, ~26% body fat), the goal isn’t just muscle—it’s &lt;strong&gt;recomposition&lt;/strong&gt;: lose fat &lt;em&gt;while&lt;/em&gt; gaining muscle. So this plan balances volume, recovery, and progression.&lt;/p&gt;




&lt;h1&gt;
  
  
  🧠 Philosophy (why this works)
&lt;/h1&gt;

&lt;p&gt;Push/Pull/Legs is popular for a reason:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Push&lt;/strong&gt; → chest, shoulders, triceps&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pull&lt;/strong&gt; → back, biceps&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Legs&lt;/strong&gt; → lower body + core&lt;/li&gt;
&lt;li&gt;Each muscle gets trained &lt;strong&gt;2x/week&lt;/strong&gt; → optimal growth&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We’ll keep it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Simple (so you stick to it)&lt;/li&gt;
&lt;li&gt;Progressive (so you improve)&lt;/li&gt;
&lt;li&gt;Efficient (no junk volume)&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  📅 Weekly Structure
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Day 1 → Push&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Day 2 → Pull&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Day 3 → Legs + Abs&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Day 4 → Rest / Cardio&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Day 5 → Push&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Day 6 → Pull&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Day 7 → Legs + Abs (light)&lt;/strong&gt;&lt;/p&gt;


&lt;h1&gt;
  
  
  🔴 PUSH DAY (Chest + Shoulders + Triceps)
&lt;/h1&gt;
&lt;h3&gt;
  
  
  1. Bench Press (foundation lift)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;4 sets × 6–8 reps
👉 Strength builder
  &lt;iframe src="https://www.youtube.com/embed/rT7DgCr-3pg"&gt;
  &lt;/iframe&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  2. Incline Dumbbell Press
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;3 sets × 8–10
👉 Upper chest (aesthetic shelf)
  &lt;iframe src="https://www.youtube.com/embed/8iPEnn-ltC8"&gt;
  &lt;/iframe&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  3. Shoulder Press (Dumbbell or Machine)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;3 sets × 8–10
  &lt;iframe src="https://www.youtube.com/embed/Wqq43dKW1TU?start=23"&gt;
  &lt;/iframe&gt;

  &lt;iframe src="https://www.youtube.com/embed/qEwKCR5JCog"&gt;
  &lt;/iframe&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  4. Lateral Raises
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;3 sets × 12–15
👉 Don’t ego lift—strict form
  &lt;iframe src="https://www.youtube.com/embed/3VcKaXpzqRo"&gt;
  &lt;/iframe&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  5. Pec Deck
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;3 sets × 12–15&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  6. Tricep Pushdown
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;3 sets × 10–12
  &lt;iframe src="https://www.youtube.com/embed/2-LAMcpzODU"&gt;
  &lt;/iframe&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  7. Overhead Tricep Extension
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;2–3 sets × 10–12
  &lt;iframe src="https://www.youtube.com/embed/-Vyt2QdsR7E"&gt;
  &lt;/iframe&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;h1&gt;
  
  
  🔵 PULL DAY (Back + Biceps)
&lt;/h1&gt;
&lt;h3&gt;
  
  
  1. Pull-ups / Assisted Pull-ups
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;4 sets (max reps)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/ylVmNQlKdAI"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Lat Pulldown
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;3 sets × 10–12&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/CAwf7n6Luuc"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Seated Cable Row
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;3 sets × 10–12&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/GZbfZ033f74"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Face Pulls (Week A)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;3 sets × 12–15&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/rep-qVOkqgk"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Face Pulls (Week B)
&lt;/h3&gt;

&lt;p&gt;Seated Wrist Curl — 2 × 12–15&lt;br&gt;
  &lt;iframe src="https://www.youtube.com/embed/qMtmHwaCmYI"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Seated Reverse Wrist Curl — 2 × 12–15&lt;br&gt;
  &lt;iframe src="https://www.youtube.com/embed/FW7URAaC-vE"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Reverse Pec Deck
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;3 sets × 12–15
  &lt;iframe src="https://www.youtube.com/embed/6yMdhi2DVao"&gt;
  &lt;/iframe&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  6. Barbell Curl
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;3 sets × 10–12&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/QZEqB6wUPxQ"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  7. Hammer Curl
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;2–3 sets × 10&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/8XLxfXROrTo"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;




&lt;h1&gt;
  
  
  🟢 LEGS + ABS DAY
&lt;/h1&gt;

&lt;h3&gt;
  
  
  1. Squats (king of legs 👑)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;4 sets × 6–8&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/1oed-UmAxFs"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Leg Press
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;3 sets × 10–12&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/oujca3_Shgw"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Romanian Deadlift
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;3 sets × 8–10&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/JCXUYuzwNrM?start=17"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Leg Curl (Hamstrings)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;3 sets × 10–12&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/ELOCsoDSmrg"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Calf Raises
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;4 sets × 12–15&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/YMmgqO8Jo-k"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Plank
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;3 × 45 sec&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/pSHjTRCQxIw"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  7. Hanging Leg Raises
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;3 × 10–15&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/CU2-V80_JsA"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  8. Cable Crunch
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;3 × 12–15&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/2fbujeH3F0E"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;




&lt;h1&gt;
  
  
  ⚡ Progression Rule (this is where most fail)
&lt;/h1&gt;

&lt;p&gt;Every week:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Try to increase &lt;strong&gt;weight OR reps&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Even +1 rep = progress&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you just repeat same weights → no growth&lt;br&gt;
Gym is not attendance-based, it’s &lt;strong&gt;progress-based&lt;/strong&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  🥗 Nutrition (quick truth)
&lt;/h1&gt;

&lt;p&gt;You won’t out-train bad eating.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Protein → ~1.6–2g per kg (~110–130g for you)&lt;/li&gt;
&lt;li&gt;Slight calorie deficit&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  * Water, sleep = underrated steroids
&lt;/h2&gt;

</description>
    </item>
    <item>
      <title>complete path to becoming a professional UI engineer</title>
      <dc:creator>Rakesh Reddy Peddamallu</dc:creator>
      <pubDate>Tue, 14 Apr 2026 06:55:18 +0000</pubDate>
      <link>https://dev.to/rakeshreddy512/complete-path-to-becoming-a-professional-ui-engineer-1bcl</link>
      <guid>https://dev.to/rakeshreddy512/complete-path-to-becoming-a-professional-ui-engineer-1bcl</guid>
      <description>&lt;p&gt;Here's your complete path to becoming a professional UI engineer, broken down into phases:&lt;/p&gt;




&lt;h2&gt;
  
  
  Phase 1 — Foundations (2–3 months)
&lt;/h2&gt;

&lt;p&gt;This is non-negotiable ground. Everything else builds on this. Don't rush it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;HTML:&lt;/strong&gt; Semantic elements, forms and validation, accessibility basics, ARIA roles, the DOM structure, data attributes, meta tags.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CSS:&lt;/strong&gt; The box model, specificity and the cascade, Flexbox, CSS Grid, positioning (static, relative, absolute, fixed, sticky), units (px, rem, em, %, vh/vw), pseudo-classes and pseudo-elements.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Vanilla JavaScript:&lt;/strong&gt; Variables, functions, loops, arrays, objects, DOM manipulation, event handling, the basics of async (callbacks → promises → async/await).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project to build:&lt;/strong&gt; A fully static multi-page personal portfolio site — no frameworks, just HTML, CSS, and vanilla JS.&lt;/p&gt;




&lt;h2&gt;
  
  
  Phase 2 — Core JavaScript Depth (1–2 months)
&lt;/h2&gt;

&lt;p&gt;You need to actually understand JS before jumping into React, or you'll be copy-pasting code you don't understand.&lt;/p&gt;

&lt;p&gt;Closures, scope, and the &lt;code&gt;this&lt;/code&gt; keyword. The event loop and how the browser executes code. Promises and &lt;code&gt;async/await&lt;/code&gt; in depth. The Fetch API and working with REST APIs. ES modules (&lt;code&gt;import&lt;/code&gt;/&lt;code&gt;export&lt;/code&gt;). Array methods: &lt;code&gt;map&lt;/code&gt;, &lt;code&gt;filter&lt;/code&gt;, &lt;code&gt;reduce&lt;/code&gt;, &lt;code&gt;find&lt;/code&gt;. Error handling with &lt;code&gt;try/catch&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project to build:&lt;/strong&gt; A weather app or movie search app that fetches real data from a public API, displays results, handles loading and error states — all in vanilla JS.&lt;/p&gt;




&lt;h2&gt;
  
  
  Phase 3 — React &amp;amp; Component Thinking (2–3 months)
&lt;/h2&gt;

&lt;p&gt;React is the industry standard. Learn it deeply, not just the surface.&lt;/p&gt;

&lt;p&gt;JSX syntax. Components, props, and state with &lt;code&gt;useState&lt;/code&gt;. Side effects with &lt;code&gt;useEffect&lt;/code&gt;. Conditional rendering and lists. Lifting state up and prop drilling. &lt;code&gt;useContext&lt;/code&gt; for shared state. &lt;code&gt;useRef&lt;/code&gt; for DOM access. Custom hooks. React Router for multi-page apps. Fetching data inside components, handling loading and error states.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project to build:&lt;/strong&gt; A full CRUD app — something like a task manager or expense tracker — with multiple routes, persistent data via &lt;code&gt;localStorage&lt;/code&gt;, and clean component structure.&lt;/p&gt;




&lt;h2&gt;
  
  
  Phase 4 — Styling Systems &amp;amp; Design (1–2 months)
&lt;/h2&gt;

&lt;p&gt;This is what separates developers who can code from developers who can build beautiful products.&lt;/p&gt;

&lt;p&gt;CSS variables and theming. Responsive design and media queries properly. Mobile-first thinking. Tailwind CSS — understand the utility-first approach. CSS Modules for scoped styles. Basic design principles: spacing, typography scale, color contrast, visual hierarchy. Dark mode implementation. How to read and implement a Figma design accurately.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project to build:&lt;/strong&gt; Rebuild an existing well-designed website (like Stripe's landing page or a popular SaaS product) as a pixel-faithful clone using React and Tailwind.&lt;/p&gt;




&lt;h2&gt;
  
  
  Phase 5 — Professional Tooling &amp;amp; TypeScript (1–2 months)
&lt;/h2&gt;

&lt;p&gt;This is what makes you functional in a real team codebase.&lt;/p&gt;

&lt;p&gt;TypeScript: types, interfaces, generics, typing React components and hooks. Vite as a build tool — understand what bundlers do. ESLint and Prettier — linting and formatting. npm and managing dependencies. Environment variables. Git beyond the basics: branching, rebasing, pull requests, resolving merge conflicts. Writing readable commit messages.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project to build:&lt;/strong&gt; Convert your Phase 3 CRUD app entirely to TypeScript. Fix every type error without using &lt;code&gt;any&lt;/code&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Phase 6 — State Management &amp;amp; Data Fetching (1 month)
&lt;/h2&gt;

&lt;p&gt;Once apps grow, local state isn't enough.&lt;/p&gt;

&lt;p&gt;When you need global state and when you don't. Zustand as a lightweight state manager — learn this before Redux. React Query (TanStack Query) for server state — caching, refetching, pagination, optimistic updates. The difference between client state and server state. Basic GraphQL concepts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project to build:&lt;/strong&gt; A more complex app with real API integration — like a GitHub profile explorer or a Hacker News clone — using React Query for all data fetching.&lt;/p&gt;




&lt;h2&gt;
  
  
  Phase 7 — Performance &amp;amp; Quality (1–2 months)
&lt;/h2&gt;

&lt;p&gt;This is where junior ends and mid/senior begins.&lt;/p&gt;

&lt;p&gt;Core Web Vitals: LCP, CLS, FID/INP — know what they measure and how to improve them. Lazy loading images and components with &lt;code&gt;React.lazy&lt;/code&gt; and &lt;code&gt;Suspense&lt;/code&gt;. &lt;code&gt;useMemo&lt;/code&gt; and &lt;code&gt;useCallback&lt;/code&gt; — know when they help and when they're overkill. List virtualization for large datasets. Debouncing and throttling. Code splitting and bundle analysis. Using Chrome DevTools to profile and find bottlenecks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Testing:&lt;/strong&gt; Unit testing with Vitest/Jest. Component testing with React Testing Library. End-to-end testing with Playwright. The testing pyramid: know what to test at each level.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project to build:&lt;/strong&gt; Audit one of your previous projects using Chrome DevTools and Lighthouse. Fix every performance issue you find. Add a full test suite.&lt;/p&gt;




&lt;h2&gt;
  
  
  Phase 8 — Next.js &amp;amp; Production Thinking (1–2 months)
&lt;/h2&gt;

&lt;p&gt;Most professional React jobs use Next.js or a similar framework.&lt;/p&gt;

&lt;p&gt;SSR vs SSG vs CSR — know the tradeoffs deeply. The Next.js App Router. Server Components vs Client Components. Route handlers and API routes. Image optimization. Environment configuration. Deployment to Vercel. SEO basics: meta tags, Open Graph, structured data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project to build:&lt;/strong&gt; A full-stack Next.js app deployed to production — a blog with a CMS, or a SaaS landing page with a contact form backed by a real database.&lt;/p&gt;




&lt;h2&gt;
  
  
  Phase 9 — Accessibility &amp;amp; Security (ongoing)
&lt;/h2&gt;

&lt;p&gt;Most developers ignore these. Mastering them makes you stand out.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Accessibility:&lt;/strong&gt; WCAG AA compliance. Keyboard navigation and focus management. Screen reader testing (use VoiceOver or NVDA). Color contrast requirements. Accessible forms, modals, and custom components.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Security:&lt;/strong&gt; XSS prevention — never trust user input. CORS and why it exists. Authentication patterns: JWT, sessions, OAuth flows. Content Security Policy headers. CSRF basics.&lt;/p&gt;




&lt;h2&gt;
  
  
  Phase 10 — Collaboration &amp;amp; Career Skills (ongoing)
&lt;/h2&gt;

&lt;p&gt;The skills that actually get you hired and promoted.&lt;/p&gt;

&lt;p&gt;Reading other people's code without getting lost. Writing clear pull request descriptions. Giving and receiving code review feedback. Breaking a vague design into a component tree. Estimating tasks (badly at first, then less badly). Communicating blockers early. Writing documentation that future-you will thank present-you for.&lt;/p&gt;




&lt;h2&gt;
  
  
  Honest timeline
&lt;/h2&gt;

&lt;p&gt;If you study and build consistently (3–4 hours a day): &lt;strong&gt;12–18 months&lt;/strong&gt; to be genuinely hireable as a junior-to-mid UI engineer. Phases 1–6 get you to hireable. Phases 7–10 get you to strong mid-level.&lt;/p&gt;

&lt;p&gt;The single biggest mistake people make is spending too long in tutorial mode and not enough time building real things that break in ways tutorials don't prepare you for. After Phase 2, every phase should be 40% learning and 60% building.&lt;/p&gt;

&lt;p&gt;Want me to go deep on any specific phase?&lt;/p&gt;

</description>
    </item>
    <item>
      <title>concepts to learn</title>
      <dc:creator>Rakesh Reddy Peddamallu</dc:creator>
      <pubDate>Sat, 11 Apr 2026 17:43:29 +0000</pubDate>
      <link>https://dev.to/rakeshreddy512/concepts-to-learn-2f4i</link>
      <guid>https://dev.to/rakeshreddy512/concepts-to-learn-2f4i</guid>
      <description>&lt;h1&gt;
  
  
  🧠 1. JavaScript (your real foundation — React is just a layer)
&lt;/h1&gt;

&lt;p&gt;If this is shaky, everything collapses.&lt;/p&gt;

&lt;h3&gt;
  
  
  Core concepts
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Closures (not definition — real use cases)&lt;/li&gt;
&lt;li&gt;Scope chain&lt;/li&gt;
&lt;li&gt;Hoisting (functions vs variables vs let/const)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;this&lt;/code&gt; (call, apply, bind)&lt;/li&gt;
&lt;li&gt;Prototypes &amp;amp; inheritance&lt;/li&gt;
&lt;li&gt;Event loop (microtasks vs macrotasks)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;👉 You should be able to explain:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Why does Promise run before setTimeout?”&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  Async mastery
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Promises chaining&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;async/await&lt;/code&gt; vs &lt;code&gt;.then&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Error handling patterns&lt;/li&gt;
&lt;li&gt;Parallel vs sequential execution (&lt;code&gt;Promise.all&lt;/code&gt;, etc.)&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Advanced JS (this is where mid-level → senior happens)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Debouncing &amp;amp; throttling (implement from scratch)&lt;/li&gt;
&lt;li&gt;Deep vs shallow copy&lt;/li&gt;
&lt;li&gt;Currying&lt;/li&gt;
&lt;li&gt;Memoization&lt;/li&gt;
&lt;li&gt;Immutability (why it matters in React)&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  ⚛️ 2. React Core (but &lt;em&gt;deep&lt;/em&gt;, not surface level)
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Rendering &amp;amp; lifecycle
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;What triggers re-render?&lt;/li&gt;
&lt;li&gt;Parent → child render flow&lt;/li&gt;
&lt;li&gt;Reconciliation algorithm (high level is fine)&lt;/li&gt;
&lt;li&gt;Keys (why index is bad — but also when it's okay)&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Hooks (this is where interviews focus heavily)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;useEffect&lt;/code&gt; (timing, cleanup, dependency traps)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;useState&lt;/code&gt; batching behavior&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;useRef&lt;/code&gt; (why it doesn’t trigger re-render)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;useMemo&lt;/code&gt; vs &lt;code&gt;useCallback&lt;/code&gt; vs &lt;code&gt;React.memo&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;👉 You should clearly answer:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Why is my useEffect running twice?” (React 18 Strict Mode)&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  Advanced patterns
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Controlled vs uncontrolled components&lt;/li&gt;
&lt;li&gt;Compound components pattern&lt;/li&gt;
&lt;li&gt;Render props&lt;/li&gt;
&lt;li&gt;Higher Order Components (HOC)&lt;/li&gt;
&lt;li&gt;Custom hooks (design clean APIs)&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  ⚡ 3. React Performance (high signal topic)
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Avoiding unnecessary re-renders&lt;/li&gt;
&lt;li&gt;Memoization strategy (not overusing it)&lt;/li&gt;
&lt;li&gt;List rendering optimization&lt;/li&gt;
&lt;li&gt;Virtualization (like &lt;code&gt;react-window&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Code splitting (&lt;code&gt;React.lazy&lt;/code&gt;, Suspense)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;👉 Strong answer:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“How do you debug performance issues in React?”&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  🏗️ 4. State Management (you need opinions here)
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Local vs global state&lt;/li&gt;
&lt;li&gt;Context API (and its limitations)&lt;/li&gt;
&lt;li&gt;Redux (why, when, when NOT)&lt;/li&gt;
&lt;li&gt;Zustand / lightweight stores&lt;/li&gt;
&lt;li&gt;Server state vs client state (React Query mindset)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;👉 You should say:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“I wouldn’t use Redux here because…”&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  🌐 5. API &amp;amp; Data Layer
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;REST vs GraphQL (basic tradeoffs)&lt;/li&gt;
&lt;li&gt;Caching strategies&lt;/li&gt;
&lt;li&gt;Error handling patterns&lt;/li&gt;
&lt;li&gt;Request cancellation (AbortController)&lt;/li&gt;
&lt;li&gt;Pagination / infinite scroll&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  🎨 6. Browser &amp;amp; UI Fundamentals (people ignore this and suffer)
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Browser internals
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;DOM vs Virtual DOM&lt;/li&gt;
&lt;li&gt;Reflow &amp;amp; Repaint&lt;/li&gt;
&lt;li&gt;CSS specificity&lt;/li&gt;
&lt;li&gt;Layout systems (Flexbox, Grid)&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Performance basics
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Critical rendering path&lt;/li&gt;
&lt;li&gt;Lazy loading images/components&lt;/li&gt;
&lt;li&gt;Debouncing user input (search bars etc.)&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  🧩 7. System Design (frontend version)
&lt;/h1&gt;

&lt;p&gt;This is your &lt;strong&gt;SDE-2 differentiator&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You should be able to design:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Dashboard UI (you literally built one — use it)&lt;/li&gt;
&lt;li&gt;Chat app (you’re working on it — perfect)&lt;/li&gt;
&lt;li&gt;Data-heavy table (filters, sorting, pagination)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Focus on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Component structure&lt;/li&gt;
&lt;li&gt;State flow&lt;/li&gt;
&lt;li&gt;API handling&lt;/li&gt;
&lt;li&gt;Performance tradeoffs&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  🧪 8. Testing (at least decent level)
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Unit testing (Jest)&lt;/li&gt;
&lt;li&gt;React Testing Library&lt;/li&gt;
&lt;li&gt;Mocking APIs&lt;/li&gt;
&lt;li&gt;Testing user behavior (not implementation)&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  🔐 9. Auth &amp;amp; Security (VERY underrated)
&lt;/h1&gt;

&lt;p&gt;Since you worked on IAM — use it.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;JWT vs session&lt;/li&gt;
&lt;li&gt;Token refresh flow&lt;/li&gt;
&lt;li&gt;Secure storage (cookies vs localStorage)&lt;/li&gt;
&lt;li&gt;XSS / CSRF basics&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  🧱 10. Architecture &amp;amp; Real-world Thinking
&lt;/h1&gt;

&lt;p&gt;This is where you stand out.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Folder structure&lt;/li&gt;
&lt;li&gt;Reusable components&lt;/li&gt;
&lt;li&gt;Separation of concerns&lt;/li&gt;
&lt;li&gt;API abstraction layer&lt;/li&gt;
&lt;li&gt;Microfrontends (you’ve touched this — leverage it)&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  ⚠️ Brutal truth (you’ll appreciate this)
&lt;/h1&gt;

&lt;p&gt;Most 4-year devs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Know hooks ✅&lt;/li&gt;
&lt;li&gt;Can build UI ✅&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cannot explain WHY things work ❌&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That’s exactly what interviews test.&lt;/p&gt;




&lt;h1&gt;
  
  
  🧭 Simple way to check yourself
&lt;/h1&gt;

&lt;p&gt;If you can confidently answer questions like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;“Why does React re-render?”&lt;/li&gt;
&lt;li&gt;“How does event loop work?”&lt;/li&gt;
&lt;li&gt;“When would you NOT use useEffect?”&lt;/li&gt;
&lt;li&gt;“How would you design a scalable table?”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;👉 You’re in top ~15%.&lt;/p&gt;




&lt;h1&gt;
  
  
  💥 My opinion on you (based on your work)
&lt;/h1&gt;

&lt;p&gt;You already have an edge:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Dashboard work&lt;/li&gt;
&lt;li&gt;IAM flow&lt;/li&gt;
&lt;li&gt;Complex UI&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you package that into &lt;strong&gt;clear explanations&lt;/strong&gt;, you’ll crack strong companies.&lt;/p&gt;




&lt;p&gt;If you want next level:&lt;br&gt;
I can give you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🔥 30 &lt;strong&gt;real interview questions&lt;/strong&gt; (React + JS + design)&lt;/li&gt;
&lt;li&gt;🎯 or do a &lt;strong&gt;mock interview and expose gaps&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Just tell me what you want.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Leetcode - 23. Merge k Sorted Lists</title>
      <dc:creator>Rakesh Reddy Peddamallu</dc:creator>
      <pubDate>Mon, 15 Sep 2025 16:29:19 +0000</pubDate>
      <link>https://dev.to/rakeshreddy512/leetcode-23-merge-k-sorted-lists-28hf</link>
      <guid>https://dev.to/rakeshreddy512/leetcode-23-merge-k-sorted-lists-28hf</guid>
      <description>&lt;p&gt;When working with linked lists, a classic problem you’ll encounter is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;“Given &lt;code&gt;k&lt;/code&gt; sorted linked lists, merge them into one sorted linked list and return it.”&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This problem is a favorite in interviews (especially LeetCode #23) because it combines understanding of linked lists, divide-and-conquer, and complexity trade-offs. Let’s dive in step by step.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧩 Problem Breakdown
&lt;/h2&gt;

&lt;p&gt;We’re given &lt;code&gt;k&lt;/code&gt; linked lists, each individually sorted. Our task is to merge them into one sorted linked list.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Input:
lists = [
  1 -&amp;gt; 4 -&amp;gt; 5,
  1 -&amp;gt; 3 -&amp;gt; 4,
  2 -&amp;gt; 6
]

Output:
1 -&amp;gt; 1 -&amp;gt; 2 -&amp;gt; 3 -&amp;gt; 4 -&amp;gt; 4 -&amp;gt; 5 -&amp;gt; 6
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  💡 Approach
&lt;/h2&gt;

&lt;p&gt;There are multiple ways to solve this problem:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Brute Force:&lt;/strong&gt; Put all nodes into an array, sort, then rebuild a linked list.&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Simple, but sorting all nodes takes &lt;strong&gt;O(N log N)&lt;/strong&gt; time, where N is the total number of nodes.&lt;/li&gt;
&lt;li&gt;Not very elegant.&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Min-Heap / Priority Queue:&lt;/strong&gt; Keep all heads of the lists in a heap, repeatedly pop the smallest.&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Efficient (&lt;strong&gt;O(N log k)&lt;/strong&gt;) but requires a heap implementation.&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Divide and Conquer (our approach):&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Repeatedly merge pairs of lists (like merge sort).&lt;/li&gt;
&lt;li&gt;Each merge is linear, and we keep halving the number of lists until one remains.&lt;/li&gt;
&lt;li&gt;Clean and efficient without extra data structures.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We’ll use &lt;strong&gt;divide and conquer&lt;/strong&gt; here.&lt;/p&gt;




&lt;h2&gt;
  
  
  🛠 Step 1: Merging Two Sorted Lists
&lt;/h2&gt;

&lt;p&gt;We first need a helper to merge &lt;strong&gt;two sorted linked lists&lt;/strong&gt;. This is like the merge step of merge sort.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;merge_two_lists&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;list1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;list2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;dummy&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;ListNode&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;head&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;dummy&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="k"&gt;while &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;list1&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nx"&gt;list2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;list1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;val&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="nx"&gt;list2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;val&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nx"&gt;head&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;next&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;list1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nx"&gt;list1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;list1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;next&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nx"&gt;head&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;next&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;list2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nx"&gt;list2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;list2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;next&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="nx"&gt;head&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;head&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;next&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;list1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nx"&gt;head&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;next&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;list1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;list2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nx"&gt;head&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;next&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;list2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;dummy&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;next&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This runs in &lt;strong&gt;O(n + m)&lt;/strong&gt; where &lt;code&gt;n&lt;/code&gt; and &lt;code&gt;m&lt;/code&gt; are the lengths of the two lists.&lt;/p&gt;




&lt;h2&gt;
  
  
  🛠 Step 2: Merging K Lists Using Divide and Conquer
&lt;/h2&gt;

&lt;p&gt;We now merge lists &lt;strong&gt;pair by pair&lt;/strong&gt; until only one list remains.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;mergeKLists&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;function &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;lists&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;lists&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nx"&gt;lists&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="k"&gt;while &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;lists&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;mergedLists&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="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&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="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="nx"&gt;lists&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&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="p"&gt;{&lt;/span&gt;
            &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;l1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;lists&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
            &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;l2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="nx"&gt;lists&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="nx"&gt;lists&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nx"&gt;mergedLists&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;push&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;merge_two_lists&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;l1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;l2&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;

        &lt;span class="nx"&gt;lists&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;mergedLists&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;lists&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="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  📊 Complexity Analysis
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Merging Two Lists:&lt;/strong&gt; O(n + m)&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Merging K Lists (Divide &amp;amp; Conquer):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Each round halves the number of lists.&lt;/li&gt;
&lt;li&gt;We perform &lt;code&gt;log k&lt;/code&gt; rounds.&lt;/li&gt;
&lt;li&gt;Each node is processed in every merge step, so total work is &lt;strong&gt;O(N log k)&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Where:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;N&lt;/code&gt; = total number of nodes across all lists&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;k&lt;/code&gt; = number of lists&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Space Complexity
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;We only use a few pointers and a dummy node.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;O(1)&lt;/strong&gt; extra space (not counting recursion stack if you write a recursive merge).&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  ✅ Key Takeaways
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;strong&gt;divide and conquer approach&lt;/strong&gt; is elegant, efficient, and doesn’t require additional data structures.&lt;/li&gt;
&lt;li&gt;Time complexity: &lt;strong&gt;O(N log k)&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Space complexity: &lt;strong&gt;O(1)&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you need &lt;strong&gt;even faster performance in practice&lt;/strong&gt;, a &lt;strong&gt;priority queue (min-heap)&lt;/strong&gt; is often used, especially when &lt;code&gt;k&lt;/code&gt; is very large. But for clean code and interviews, this divide-and-conquer approach is a winner.&lt;/p&gt;




</description>
      <category>leetcode</category>
    </item>
    <item>
      <title>Leetcode - 427. Construct Quad Tree</title>
      <dc:creator>Rakesh Reddy Peddamallu</dc:creator>
      <pubDate>Tue, 09 Sep 2025 16:26:18 +0000</pubDate>
      <link>https://dev.to/rakeshreddy512/leetcode-427-construct-quad-tree-5eej</link>
      <guid>https://dev.to/rakeshreddy512/leetcode-427-construct-quad-tree-5eej</guid>
      <description>&lt;p&gt;QuadTrees are a fascinating data structure, often used in &lt;strong&gt;image compression, spatial indexing, and graphics&lt;/strong&gt;. In this blog, we’ll solve the &lt;strong&gt;LeetCode 427 – Construct Quad Tree&lt;/strong&gt; problem, step by step.&lt;/p&gt;




&lt;h2&gt;
  
  
  📌 Problem Statement
&lt;/h2&gt;

&lt;p&gt;You are given an &lt;code&gt;n x n&lt;/code&gt; binary grid (only &lt;code&gt;0&lt;/code&gt; and &lt;code&gt;1&lt;/code&gt; values).&lt;/p&gt;

&lt;p&gt;Your task is to construct a &lt;strong&gt;QuadTree&lt;/strong&gt; based on this grid:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Each node in the tree represents a sub-square of the grid.&lt;/li&gt;
&lt;li&gt;If the sub-square contains all the same values (&lt;code&gt;0&lt;/code&gt; or &lt;code&gt;1&lt;/code&gt;), it becomes a &lt;strong&gt;leaf node&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Otherwise, it splits into &lt;strong&gt;four children&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;topLeft&lt;/li&gt;
&lt;li&gt;topRight&lt;/li&gt;
&lt;li&gt;bottomLeft&lt;/li&gt;
&lt;li&gt;bottomRight&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;




&lt;h2&gt;
  
  
  📖 What is a QuadTree?
&lt;/h2&gt;

&lt;p&gt;A &lt;strong&gt;QuadTree&lt;/strong&gt; recursively divides a 2D space into four quadrants.&lt;/p&gt;

&lt;p&gt;For example, take this &lt;code&gt;4x4&lt;/code&gt; binary grid:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;The top-left 2x2 block is all &lt;code&gt;1&lt;/code&gt; → becomes a &lt;strong&gt;leaf node&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;The top-right 2x2 block is all &lt;code&gt;0&lt;/code&gt; → another &lt;strong&gt;leaf node&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;The bottom-left 2x2 block is all &lt;code&gt;0&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;The bottom-right 2x2 block is all &lt;code&gt;1&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So the root node will &lt;strong&gt;split into four leaves&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  🛠️ Approach
&lt;/h2&gt;

&lt;p&gt;We’ll use &lt;strong&gt;DFS (divide and conquer)&lt;/strong&gt; to recursively build the tree:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Check if the current sub-square is uniform&lt;/strong&gt; (all values are the same).&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;If yes → return a &lt;strong&gt;leaf node&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;If not → split into four quadrants.&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Recursive Subdivision&lt;/strong&gt;:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Divide the current square of size &lt;code&gt;n&lt;/code&gt; into four &lt;code&gt;n/2&lt;/code&gt; quadrants.&lt;/li&gt;
&lt;li&gt;Recursively construct the QuadTree for each.&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Build the Node&lt;/strong&gt;:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;If it’s a leaf → &lt;code&gt;isLeaf = true&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;If not → &lt;code&gt;isLeaf = false&lt;/code&gt; and link four children.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  ✅ Solution Code
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="cm"&gt;/**
 * // Definition for a QuadTree node.
 * function Node(val, isLeaf, topLeft, topRight, bottomLeft, bottomRight) {
 *    this.val = val;
 *    this.isLeaf = isLeaf;
 *    this.topLeft = topLeft;
 *    this.topRight = topRight;
 *    this.bottomLeft = bottomLeft;
 *    this.bottomRight = bottomRight;
 * };
 */&lt;/span&gt;

&lt;span class="cm"&gt;/**
 * @param {number[][]} grid
 * @return {Node}
 */&lt;/span&gt;
&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;construct&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;function &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;grid&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;

    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;dfs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;n&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;r&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;c&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;isAllSame&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;firstVal&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;grid&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;r&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="nx"&gt;c&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;

        &lt;span class="c1"&gt;// check if all values in current n x n block are the same&lt;/span&gt;
        &lt;span class="k"&gt;for &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&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="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="nx"&gt;n&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="k"&gt;for &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;j&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="nx"&gt;j&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="nx"&gt;n&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;j&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;grid&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;r&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="nx"&gt;c&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;j&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;!==&lt;/span&gt; &lt;span class="nx"&gt;firstVal&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                    &lt;span class="nx"&gt;isAllSame&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
                    &lt;span class="k"&gt;break&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
                &lt;span class="p"&gt;}&lt;/span&gt;
            &lt;span class="p"&gt;}&lt;/span&gt;
            &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;isAllSame&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;break&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;

        &lt;span class="c1"&gt;// case 1: all same → leaf node&lt;/span&gt;
        &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;isAllSame&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Node&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;firstVal&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="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;

        &lt;span class="c1"&gt;// case 2: not uniform → divide into 4 parts&lt;/span&gt;
        &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;half&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;floor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;n&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="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;topLeftNode&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;dfs&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;half&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;r&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;c&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;topRightNode&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;dfs&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;half&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;r&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;c&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;half&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;bottomLeftNode&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;dfs&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;half&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;r&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;half&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;c&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;bottomRightNode&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;dfs&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;half&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;r&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;half&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;c&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;half&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Node&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;topLeftNode&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;topRightNode&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;bottomLeftNode&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;bottomRightNode&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;};&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;dfs&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;grid&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  ⏱️ Complexity Analysis
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Time Complexity
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;At each level, we scan an &lt;code&gt;n x n&lt;/code&gt; block to check if it’s uniform.&lt;/li&gt;
&lt;li&gt;Then we split into &lt;strong&gt;4 subproblems&lt;/strong&gt; of size &lt;code&gt;n/2&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;T(n) = 4T(n/2) + O(n^2)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This looks like &lt;strong&gt;O(n^2 log n)&lt;/strong&gt; in the worst case.&lt;br&gt;
But since each cell is checked only once in practice, the overall complexity simplifies to &lt;strong&gt;O(n^2)&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;👉 This is optimal since we must inspect every cell at least once.&lt;/p&gt;

&lt;h3&gt;
  
  
  Space Complexity
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;The recursion depth is &lt;code&gt;O(log n)&lt;/code&gt; (each time we halve &lt;code&gt;n&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;The QuadTree itself can take up to &lt;code&gt;O(n^2)&lt;/code&gt; nodes in the worst case (checkerboard pattern).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So space complexity is &lt;strong&gt;O(n^2)&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  🎯 Key Takeaways
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;QuadTrees are great for representing &lt;strong&gt;2D uniform data&lt;/strong&gt; efficiently.&lt;/li&gt;
&lt;li&gt;If a subgrid is uniform, we don’t need to store every cell → compression.&lt;/li&gt;
&lt;li&gt;Divide &amp;amp; conquer makes this problem elegant and intuitive.&lt;/li&gt;
&lt;/ul&gt;




</description>
      <category>leetcode</category>
    </item>
    <item>
      <title>Leetcode - 148. Sort List</title>
      <dc:creator>Rakesh Reddy Peddamallu</dc:creator>
      <pubDate>Mon, 01 Sep 2025 11:41:18 +0000</pubDate>
      <link>https://dev.to/rakeshreddy512/leetcode-148-sort-list-3ln6</link>
      <guid>https://dev.to/rakeshreddy512/leetcode-148-sort-list-3ln6</guid>
      <description>&lt;p&gt;Sorting a linked list isn’t as straightforward as sorting an array. With arrays, we can do quick sort or heap sort thanks to random access. But linked lists only allow &lt;strong&gt;sequential access&lt;/strong&gt;, making those methods inefficient.&lt;/p&gt;

&lt;p&gt;That’s where &lt;strong&gt;merge sort&lt;/strong&gt; shines. It works beautifully on linked lists because splitting and merging can be done in-place with pointers. Let’s dive in.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔹 Problem Statement
&lt;/h2&gt;

&lt;p&gt;Given the head of a linked list, return the list sorted in ascending order.&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Input:  4 → 2 → 1 → 3
Output: 1 → 2 → 3 → 4
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🔹 Approach: Divide and Conquer
&lt;/h2&gt;

&lt;p&gt;We apply the merge sort strategy:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Divide&lt;/strong&gt;: Use the slow–fast pointer trick to find the middle and split the list into two halves.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Conquer&lt;/strong&gt;: Recursively sort both halves.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Combine&lt;/strong&gt;: Merge the two sorted halves back together.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  🔹 Step 1: Find the Middle
&lt;/h2&gt;

&lt;p&gt;We use two pointers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;slow&lt;/code&gt; moves one step at a time.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;fast&lt;/code&gt; moves two steps at a time.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When &lt;code&gt;fast&lt;/code&gt; reaches the end, &lt;code&gt;slow&lt;/code&gt; will be at the &lt;strong&gt;middle&lt;/strong&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;getMid&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;head&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;slow&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;head&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;fast&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;head&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;next&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// ensures we stop at the "first middle" for even length&lt;/span&gt;

    &lt;span class="k"&gt;while &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;fast&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nx"&gt;fast&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;next&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;slow&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;slow&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;next&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nx"&gt;fast&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;fast&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;next&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;next&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;slow&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// returns middle node&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🔹 Step 2: Merge Two Sorted Lists
&lt;/h2&gt;

&lt;p&gt;This step is similar to merging two sorted arrays:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;merge&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;list1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;list2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;dummy&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;ListNode&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="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;tail&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;dummy&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="k"&gt;while &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;list1&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nx"&gt;list2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;list1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;val&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="nx"&gt;list2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;val&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nx"&gt;tail&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;next&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;list1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nx"&gt;list1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;list1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;next&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nx"&gt;tail&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;next&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;list2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nx"&gt;list2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;list2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;next&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="nx"&gt;tail&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;tail&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;next&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="c1"&gt;// attach the remaining part&lt;/span&gt;
    &lt;span class="nx"&gt;tail&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;next&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;list1&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nx"&gt;list2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;dummy&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;next&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🔹 Step 3: Recursive Merge Sort
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;sortList&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;function &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;head&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;head&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;head&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;next&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;head&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// base case&lt;/span&gt;

    &lt;span class="c1"&gt;// 1. Split into two halves&lt;/span&gt;
    &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;mid&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;getMid&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;head&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;right&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;mid&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;next&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;mid&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;next&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// break the link&lt;/span&gt;
    &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;left&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;head&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="c1"&gt;// 2. Recursively sort both halves&lt;/span&gt;
    &lt;span class="nx"&gt;left&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;sortList&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;left&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nx"&gt;right&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;sortList&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;right&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="c1"&gt;// 3. Merge the sorted halves&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;merge&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;left&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;right&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🔹 Walkthrough Example: &lt;code&gt;4 → 2 → 1 → 3&lt;/code&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1: Initial Split
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Mid = &lt;code&gt;2&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Left = &lt;code&gt;4 → 2&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Right = &lt;code&gt;1 → 3&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Step 2: Sort Left (&lt;code&gt;4 → 2&lt;/code&gt;)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Mid = &lt;code&gt;4&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Left = &lt;code&gt;4&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Right = &lt;code&gt;2&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Merge → &lt;code&gt;2 → 4&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Step 3: Sort Right (&lt;code&gt;1 → 3&lt;/code&gt;)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Mid = &lt;code&gt;1&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Left = &lt;code&gt;1&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Right = &lt;code&gt;3&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Merge → &lt;code&gt;1 → 3&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Step 4: Merge the Halves
&lt;/h3&gt;

&lt;p&gt;Merge &lt;code&gt;2 → 4&lt;/code&gt; and &lt;code&gt;1 → 3&lt;/code&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Compare 2 vs 1 → pick 1&lt;/li&gt;
&lt;li&gt;Compare 2 vs 3 → pick 2&lt;/li&gt;
&lt;li&gt;Compare 4 vs 3 → pick 3&lt;/li&gt;
&lt;li&gt;Leftover → 4&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Result: &lt;code&gt;1 → 2 → 3 → 4&lt;/code&gt; ✅&lt;/p&gt;




&lt;h3&gt;
  
  
  Recursion Tree
&lt;/h3&gt;



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

Merges:
(4,2) → (2 4)
(1,3) → (1 3)
(2 4) + (1 3) → (1 2 3 4)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🔹 Complexity Analysis
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Time Complexity:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Splitting takes &lt;code&gt;O(log n)&lt;/code&gt; levels.&lt;/li&gt;
&lt;li&gt;Each merge across levels costs &lt;code&gt;O(n)&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Overall: &lt;strong&gt;O(n log n)&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Space Complexity:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Merge happens in-place with pointers → &lt;code&gt;O(1)&lt;/code&gt; extra space.&lt;/li&gt;
&lt;li&gt;Recursion depth = &lt;code&gt;O(log n)&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔹 Why Merge Sort Works Best for Linked Lists?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Quick sort needs random access (bad for linked lists).&lt;/li&gt;
&lt;li&gt;Merge sort only needs sequential traversal (perfect fit).&lt;/li&gt;
&lt;li&gt;Splitting and merging are pointer operations, so memory overhead is minimal.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  ✅ Final Takeaway
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Use &lt;strong&gt;slow–fast pointers&lt;/strong&gt; to find the middle.&lt;/li&gt;
&lt;li&gt;Recursively sort both halves.&lt;/li&gt;
&lt;li&gt;Merge with pointer juggling.&lt;/li&gt;
&lt;li&gt;Achieve &lt;strong&gt;O(n log n)&lt;/strong&gt; efficiency with minimal space overhead.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;👉 Next time someone asks “How do you sort a linked list?”, you’ve got a clean, interview-ready answer. 🚀&lt;/p&gt;




</description>
      <category>leetcode</category>
    </item>
  </channel>
</rss>
