<?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: Alex Mateo</title>
    <description>The latest articles on DEV Community by Alex Mateo (@expora).</description>
    <link>https://dev.to/expora</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3890393%2F271643fa-4171-46e0-9272-0a884bd474a5.png</url>
      <title>DEV Community: Alex Mateo</title>
      <link>https://dev.to/expora</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/expora"/>
    <language>en</language>
    <item>
      <title>Why LeetCode is So Hard — and Why Grinding More Problems Won't Help</title>
      <dc:creator>Alex Mateo</dc:creator>
      <pubDate>Tue, 21 Apr 2026 08:23:18 +0000</pubDate>
      <link>https://dev.to/expora/why-leetcode-is-so-hard-and-why-grinding-more-problems-wont-help-18oc</link>
      <guid>https://dev.to/expora/why-leetcode-is-so-hard-and-why-grinding-more-problems-wont-help-18oc</guid>
      <description>&lt;p&gt;Here's why grinding leads to memorization, not understanding, and what to do instead.&lt;/p&gt;

&lt;p&gt;You've solved 150 problems. You read the editorial. You watched the NeetCode video.&lt;/p&gt;

&lt;p&gt;And then a slightly different problem appears in the interview and you blank.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It's not you. It's what you've been practicing.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The real reason LeetCode feels impossible
&lt;/h2&gt;

&lt;p&gt;When developers say LeetCode is hard, they usually mean the problems are tricky or&lt;br&gt;
they can't figure out the right approach. But there's a third reason nobody talks&lt;br&gt;
about — &lt;strong&gt;LeetCode only shows you the answer, not the thinking&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Submit a solution. Green checkmark. Move on.&lt;/p&gt;

&lt;p&gt;What the platform doesn't show you is what happened &lt;em&gt;inside&lt;/em&gt; the algorithm: which&lt;br&gt;
variable changed, why a pointer moved, what the data structure looked like at step 3.&lt;br&gt;
You only ever see the output.&lt;/p&gt;

&lt;p&gt;This matters because coding interviews don't test if you know the answer.&lt;br&gt;
They test if you can &lt;strong&gt;explain the reasoning&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;When an interviewer asks "why did you use a hashmap here?", the correct answer&lt;br&gt;
isn't the solution — it's the thought process behind it. LeetCode trains you to&lt;br&gt;
produce solutions. It doesn't train you to understand them.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;What LeetCode shows you&lt;/th&gt;
&lt;th&gt;What you actually need&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;✗ Input and output&lt;/td&gt;
&lt;td&gt;✓ What the algorithm does at each step&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;✗ Runtime and memory stats&lt;/td&gt;
&lt;td&gt;✓ Why a specific data structure was chosen&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;✗ Green or red checkmark&lt;/td&gt;
&lt;td&gt;✓ How the state changes with each decision&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;✗ The accepted solution (after you fail)&lt;/td&gt;
&lt;td&gt;✓ The intuition that transfers to new problems&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;That gap between "submitting a solution" and "understanding an algorithm" is why&lt;br&gt;
LeetCode feels hard even after hundreds of problems.&lt;/p&gt;


&lt;h2&gt;
  
  
  What grinding actually does to your brain
&lt;/h2&gt;

&lt;p&gt;The conventional advice is: do more problems. Grind 75, then 150, then 300.&lt;br&gt;
The theory is that pattern recognition emerges from volume.&lt;/p&gt;

&lt;p&gt;Here's the problem: &lt;strong&gt;pattern recognition requires understanding, not repetition&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;You can't recognize that a problem needs a sliding window if you only know that a&lt;br&gt;
previous problem that &lt;em&gt;looked similar&lt;/em&gt; used a sliding window. That's memorization.&lt;/p&gt;

&lt;p&gt;It breaks the moment the problem is phrased differently.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;The grinding trap:&lt;/strong&gt; You solve problem #47 and feel like you understand&lt;br&gt;
two pointers. Three weeks later, a different two-pointer problem appears and&lt;br&gt;
you can't start it. You go back and re-solve problem #47. The cycle repeats.&lt;br&gt;
You're not building understanding — you're fighting the Ebbinghaus forgetting&lt;br&gt;
curve with repetition instead of comprehension.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The developers who pass FAANG interviews typically haven't solved &lt;em&gt;more&lt;/em&gt; problems&lt;br&gt;
than the ones who fail. They've understood &lt;em&gt;fewer&lt;/em&gt; problems more deeply.&lt;/p&gt;


&lt;h2&gt;
  
  
  The difference between memorizing and understanding
&lt;/h2&gt;

&lt;p&gt;Here's a concrete example. Most developers who have done LeetCode know Two Sum.&lt;/p&gt;

&lt;p&gt;Ask them to solve it: they'll write a hashmap solution in two minutes.&lt;/p&gt;

&lt;p&gt;Now ask them: "If the input array is &lt;strong&gt;sorted&lt;/strong&gt;, which approach is better?"&lt;/p&gt;

&lt;p&gt;Many will still reach for the hashmap — because that's what they practiced.&lt;br&gt;
They memorized the solution, not the reasoning behind choosing it.&lt;/p&gt;

&lt;p&gt;Understanding means being able to trace through the algorithm at each step:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;nums = [2, 7, 11, 15], target = 9

Step 1: L=0, R=3 → sum = 2+15 = 17 &amp;gt; 9
        → Too large. Move R left.
        → WHY: sorted array, moving R left always decreases sum.

Step 2: L=0, R=2 → sum = 2+11 = 13 &amp;gt; 9
        → Still too large. Move R left again.

Step 3: L=0, R=1 → sum = 2+7 = 9 ✓
        → Found it.

Key insight: sorted input makes two pointers strictly better than hashmap.
O(n) time, O(1) space vs O(n) space. The code is almost identical —
the understanding is completely different.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The difference isn't the code. It's being able to explain &lt;em&gt;why&lt;/em&gt; the approach&lt;br&gt;
changes when the input is sorted.&lt;/p&gt;




&lt;h2&gt;
  
  
  Understanding an algorithm means answering 3 questions at any step
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;What is the current state?&lt;/strong&gt; Where are the pointers, what's in the queue,&lt;br&gt;
what does the data structure look like right now?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Why did the last step happen?&lt;/strong&gt; What condition triggered this move,&lt;br&gt;
this push, this comparison?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;What will happen next?&lt;/strong&gt; Given the current state, can you predict the&lt;br&gt;
algorithm's next decision &lt;em&gt;before it happens&lt;/em&gt;?&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You can't answer any of these by reading the accepted solution. You need to&lt;br&gt;
&lt;em&gt;see&lt;/em&gt; the algorithm run.&lt;/p&gt;




&lt;h2&gt;
  
  
  What to do instead of grinding
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Learn patterns, not solutions&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Most coding interview problems are variations of 7-10 core patterns: Sliding Window,&lt;br&gt;
Two Pointers, BFS, DFS, Binary Search, DP, and Dijkstra. Learn them at the&lt;br&gt;
pattern level — not the problem level. When you recognize the pattern, the&lt;br&gt;
solution follows.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. See execution, not just code&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Before writing anything, trace through the algorithm manually. Watch the state&lt;br&gt;
change. Understand why each step happens. Only then write the code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Solve fewer problems, more deeply&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;One deeply understood problem — where you can explain every step, every decision,&lt;br&gt;
every tradeoff — is worth more than 10 memorized solutions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Practice explaining out loud&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;After solving, close the editor and explain the solution as if talking to an&lt;br&gt;
interviewer. If you can't explain why each line exists, you memorized it.&lt;/p&gt;




&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Is LeetCode worth it?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;LeetCode is worth it if you use it to build understanding, not just to accumulate&lt;br&gt;
solved problems. Used correctly — slowly, with deliberate tracing — it's a useful&lt;br&gt;
problem bank. Used as a grinding machine, it builds recall that breaks under&lt;br&gt;
interview pressure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How many LeetCode problems do I need for Google or Meta?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;There's no magic number. Being able to trace 50 algorithms step by step and explain&lt;br&gt;
every decision beats having memorized 300 solutions. Interviewers evaluate your&lt;br&gt;
reasoning, not your problem count.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is grinding LeetCode?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Grinding LeetCode means solving a high volume of problems (150-300+) with the goal&lt;br&gt;
that pattern recognition emerges from volume. It's the dominant prep approach, but&lt;br&gt;
it fails when problems are phrased differently or when interviewers ask you to&lt;br&gt;
explain your reasoning.&lt;/p&gt;




&lt;p&gt;I built &lt;a href="https://tryexpora.com" rel="noopener noreferrer"&gt;Expora&lt;/a&gt; specifically because I was that developer —&lt;br&gt;
I had Grokking Algorithms, the algorithm bible, three courses, and 200 LeetCode&lt;br&gt;
problems solved. I still froze in interviews because I was memorizing, not&lt;br&gt;
understanding.&lt;/p&gt;

&lt;p&gt;Expora's visual debuggers let you step through algorithms one operation at a time —&lt;br&gt;
watching the graph update, the queue fill, the dp table populate — with your own&lt;br&gt;
code. It's the difference between reading about an algorithm and watching it think.&lt;/p&gt;

&lt;p&gt;If you've ever felt like grinding isn't working, you're probably right.&lt;br&gt;
The problem isn't your intelligence — it's the feedback loop you're practicing in.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://tryexpora.com/blog/why-leetcode-is-hard" rel="noopener noreferrer"&gt;tryexpora.com/blog/why-leetcode-is-hard&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>algorithms</category>
      <category>programming</category>
      <category>career</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
