My Path to Algorithms & Data Structures: Part 1

Seyi Kanagui
4 min readMar 15, 2021

I’m excited to finally announce that I am a FlatIron Software Engineer grad! Although I feel proud of completing of my 5 month program, there are many challenges that lie ahead of me. I’m talking applications, networking, resume/cover letter writing, outreach to prospective employers, and of course cultural and technical interviewing! Someone wants to actually test my knowledge in very specific areas and they expect some pretty good answers in an area I am not too familiar with — Algorithms and Data Structures. I hope by sharing my findings you can sharpen your problem solving abilities!

What is an Algorithm?

An algorithm is a process or steps to accomplish a certain task — I know, a bit underwhelming of a definition. At its core, that’s all it is. It can be something as simple as calculating the first 10 even numbers of an array to something as complicated as Instagrams algorithm to suggest influencers to your feed from photos you’ve liked. Why is this important? Almost everything you do in programming revolves around using some sort of algorithm. This is why tech companies want to see how savvy you are at problem solving in your technical interviews.

A Few Examples

Okay, this can escalate pretty quickly but I promise there are patterns to solving problems like this. Here are a few examples from LeetCode:

“Easy”

Not too bad right? What about this problem?

WTF right?

Don’t worry, this is just an intro to Introductory Algo and DS

If your heart dropped at the thought of creating a function that could return the floor at which your egg could or could not break but all you were thinking about was lost breakfast, you’re most likely in the right place. This sh*t is tough but not impossible. Baby steps baby bear.

First Thing Last- Understand the Problem

Before we even dive into code, we can analyze these problems and reduce the anxiety attack. It really is all about having a plan of attack. I have found that breaking down these problems into steps can really help improve the probability of getting started in the right direction . I have derived the first questions to ask yourself in these situations from online courses, public forums, and other wonderful developers:

  1. Can I restate the prompt in my own words?
  2. What are the inputs that may go into the problem?
  3. What outputs can be expected?
  4. Are there edge cases? Will we always have a solution or is this a trick question?
  5. How can I label the vital pieces of data that are important parts of the problem in a way that will help me stay organized?

Next week, we will use these questions to break down an algorithm prompt and also introduce other tools to help us with our first technical interview style question. I hope you were able to grasp the challenge that lies ahead, it will be tough but it will be worth it! Stay tuned as I continue to share my insights!

--

--

Seyi Kanagui

Full-Time Software Engineering Student at Flatiron School, avid golfer, and wannabe chef.