Using Notion to help grind Leetcode

Luke Jennings

--

Like many engineers trying to break into FAANG (or MANGA I guess) I am spending a lot of time studying DSA topics and patterns.

As a lot of readers may know already, there are a TON of resources out there to aid with this, essays, books, videos and lists upon lists of material to go through. Sometimes it can be a bit overwhelming.

Sites like https://neetcode.io/ do a fantastic job at categorizing common Leetcode problems, often called the Blind 75, and offer ways of tracking which questions you’ve done.

However I found myself completing questions and then moving on the next without really taking in the solution or committing to memory. This is a downside of me wanting to complete a todo list just for the satisfaction.

The Solution

I’ve always maintained that if you cannot explain a concept clearly and concisely to a non technical person, the chances are you do not fully understand the concept yourself.

What I was missing from my study plan was the act of explaining the solution to the problem. Sure I can use a hashmap to solve it, but why was a hashmap the best practise. Why did that data structure work best over others?

When studying in isolation I was missing the stage where I would explain the solution.

With this in mind I created a Leetcode Question board using Notion and it has been fantastic in helping me lock in the knowledge.

The Setup

Using Notions Kanban board I created a template task which contains the following

Every new task I create in this board will use this template which cuts down a lot of time.

Difficulty

Here I can quickly choose a difficulty associated with the Leetcode question. This allows me to filter the board quickly for a certain level.

Tags

Notion Leetcode Tag list

The tags multiselect field lets me select one or more matching tags for the question. This is the most useful I find as it allows me to quickly filter the whole list if I want to focus on a specific area, for example Recursion

How I use it

Practise and Redo

These are questions I am not confident with. They either contain areas I am not too familiar with, or perhaps just questions I don’t quite understand the trick for just yet. This is where all new tasks go.

The majority of these tasks are ones I’ve only done once, or ones where I make too many logical errors, and in some circumstances I am unable to produce an optimal solution within the timeframe of 30–40 minutes.

Kinda Confident

These are questions that I can usually solve first time within 20–30 minutes, I might get a couple of syntax or logical errors but I can still produce an optimal solution.

Very Confident

These are questions I can create optimal solutions for without any hassle. These are usually questions that I understand deeply and can produce clean code and discuss the time complexity confidently.

After I complete a new task I write a small summary on its card with notes for my solution, along with time complexity analysis. I also provide a working solution just in case I need a little hint in the future

Best time to buy and sell stocks card

At the end of each week I go through the list working from left to right and attempt the questions again. I pick a handful from each column and adjust their places based on whether or not I feel like I have improved or perhaps regressed.

Every time I solve a new question I will update the card containing in depth details on the solution, as well as the time complexities.

Making this into a habit really has helped me solidify knowledge and identify areas where I need to improve.

Let me know your study plans! I’d love to know how others tackle the grind

--

--

Responses (2)