After completing the first version of this website in early 2026, I was looking for my next project.
I decided now was a good time to level up my engineering skills and dive into Data Structures and Algorithms (DSA).
I knew how to code, but I felt like I was really lacking fundamental DSA knowledge...
Let's do this.
The Beginning: LeetCode
I made a LeetCode account and started coding.
It was actually quite intimidating at first. 😅 There are thousands of problems, and even though I had experience with game dev, Arduino, and web dev, my raw problem-solving abilities weren't sharp enough yet.
I simply did not know the basic patterns & tricks. At the start, I could rarely solve a "Medium" problem without assistance. 💀
But with AI as my guide, I started tackling them one by one.
The Concepts
I went from topic to topic, which helped me see how these concepts connect together. I explored many concepts in over a short period of time:
- Arrays & Strings: Two Pointers, Sliding Window, Prefix Sums, Kadane's Algorithm, Greedy Algorithms
- Search & Sort: Binary Search, Quick Sort, Merge Sort.
- Graph Theory: Breadth-First Search (BFS), Depth-First Search (DFS), Dijkstra's Algorithm
- Data Structures: Linked Lists, Stacks, Queues, Binary Trees, Heaps.
- Low Level: Bit Manipulation (Logic gates, toggling bits).
Before this, if you told me something had to run in O(n) time, I would have looked at you blankly. Now, I know that Space & Time Complexity (Big O) is actually straightforward... implementing the algorithm is the hard part!
Encountering New Structures
I did a modified version of the Blind 75 to start.
- Binary Trees: I had seen pictures of them, but never wrote code for one. It was actually so cool to see how Recursion is used to parse these complex structures (e.g., Inverting a Binary Tree).
- Linked Lists: Reversing a linked list felt like voodoo magic the first time I did it, but now it seems so simple. Same thing for using fast & slow pointers.
- Bit Manipulation: This was surprisingly chill. Since I've done circuit work before, I understood the logic gates (AND, OR, XOR). Though I did learn a few tricks like checking if a number is a power of two or getting the lowest set bit.
- Dynamic Programming: Some of my favorite problems involved dynamic programming, like: Climbing Stairs, House Robber, Unique Paths, and Dungeon Game.
The Virtual Contest 🏆
As I got more confident, I attempted my first Virtual Contest. I had no idea what to expect.
- The Challenge: 4 Questions (3 Mediums, 1 Hard).
- The Result: I solved the first two Mediums!
- The Wall: I ran out of time on the third question, even though I correctly identified it as a BFS problem.
It was a humbling reality check, but also proof of progress. I still have much to learn...
My Favorite Problems So Far
Some problems are just satisfying to solve. Here are my top picks:
- Build a Full Adder: Super cool low-level logic.
- Dungeon Game: The first "Hard" problem I ever completed.
- Number of Islands: One of the first times I successfully applied DFS on a grid.
- Invert Binary Tree: My "aha!" moment with recursion.
What's Next?
I eventually discovered AlgoMaster, a curated collection of LeetCode questions presented in a specific order so you learn incrementally.
I switched to this track because it provides a more structure than jumping around problems randomly.
My plan is simple:
- Continue grinding through the AlgoMaster curriculum.
- Use AI to explain the deeper concepts after I solve (or fail) a problem.
- Do weekly contests to benchmark my speed and accuracy.
I'm taking it one problem at a time. Let's do it.
