Neo. The Only. The One.
THE ONE
Start with knowing the basic data structures: array, linked lists, trees, tries, etc. and the space/time complexities for each of them.
Neetcode has a good course on it. Learn them as you go. Another decent paid one is Algoexpert. As far as free this guy and playlist is pretty much very thorough:
That playlist is probably the gold standard imo. May have to rewind a few times and he goes fast (and you got to fight an accent every now and then), but if you get that material you can pretty much go into most heavy data structures books and know you've seen it before.
After that familiarize yourself with the patterns that these questions take:
![]()
14 Patterns to Ace Any Coding Interview Question | HackerNoon
The process of preparing for coding interviews is anxiety-inducing for many developers. There’s so much material to cover, and often much of it feels irrelevant to what devs are doing in their day jobs, which only adds to the stress.hackernoon.com
In place reversal of a linked list (like part of what your problem you stated is) is one of those patterns.
The thing is, there are "tricks" to these problems. If you don't know the trick, most likely you ain't solving them unless you're pretty much rare-tier or extremely fortunate to have stumbled on the solution:
I had a really good understanding of data structures and time complexities after I took some courses when I was in college, but still would get my ass handed to me with Leetcode. It wasn't until I learned that there were patterns and general groupings to these questions that I was able to solve these things much easier. For example, all the theory and data structure books I've worked through, I didn't know there was such a thing as a Sliding Window pattern, yet it's a common strategy to solving a certain class of problems and show up in Leetcode often.
From there you can double check your solutions on places like the discussion forums, Neetcode's site/youtube videos, etc. If you don't understand the data structures and algorithm, don't get bogged down where you feel like you have to learn them all upfront before you tackle problems and simply learn them as you go instead (like from some of the links I mentioned).
My rule: try a problem for 30 minutes, if I can't solve it within that time I'll look at the solution and learn what it's doing. No sense spending more time on it because it's not something for work, it's an algorithm question that thousands, maybe millions of people are going to look up the solution for anyways. No sense struggling though a question for a days to weeks and falling behind something they may not even ask in an interview when you can get experience doing another 30 problems within that time. Even problems where I don't understand the solution to 100%, I'll skip so it won't hold me up from solving and learning from all the other ones.
After you learn the solution, go back to it and see if you can solve it again after a few days. Then change something up about the problem and see if you can solve that version of it.
Brehs in the 6 Certs thread clowned me cause I didn't know what a sliding window pattern was


