Data Structures Part: Solving the MOST FREQUENT FAANG interview problems from LeetCode
Welcome to one of the unique and special Coding Interviews courses.
This course is all about algorithmic problem-solving for problems mainly from the Leetcode website. Specifically, the medium level frequent interview problems. The goal of this course is to sharpen your problem-solving skills to aid you in ACEing Coding Interviews from FAANG companies. During the course, you won't only be provided with a problem and its solution, but a series of hints and thinking approaches to tackle the problems.
I don't teach data structures or algorithms in this course. You must study these courses from high-quality sources and solve many problems to gain basic problem-solving skills. The problems in this course are of medium level. Without proper background and skills, the materials will be hard to learn.
Part 1 content
Part one covers the data structures:
Arrays: Prefix Sum, Sliding Window (fixed and variable size) 2 Pointers, and Permutations.
Tutorials are provided for these topics only, as they are not covered in DSA courses.
Stack and Priority Queue
Linked List and Binary Trees
The scope of the topics: Interviews coverage.
Note: You are expected to solve the implementation problems over these topics during a data structure course. For example, reversing a linked list is a common interview question. I won't cover it. It is mainly an implementation task. The same for the basic binary tree DFS problems. I do cover such questions in my data structure and algorithms course. This course is about problem-solving challenges.
Although the focus of this part is Data Structures, but still your background in Algorithms is needed.
Major: Complexity, Recursion and Sorting
Minor: A few times I refer to: Binary Search, Divide and Conquer and Dynamic Programming
Generally, most of the problems require serious algorithmic skills
The course level:
Most of the problems in this course are Leetcode MEDIUM level, which represent 85-90% of real interview questions.
To be more effective, the questions are mainly the most frequent interview questions according to the LeetCode website.
This means; in addition to gaining problem-solving skills, you increase the chance of meeting problems you already solved in the interviews!
Without proper background & skills ⇒ the course will be hard to learn
Strong programming skills & DSA knowledge/skills (from 3 courses)
A high-quality programming course consisting of:
Good coverage for programming + many exercises on learned topics
Proper understanding/using for built-in algorithms/DS (e.g. C++ STL / Java Collections)
Optional: Several projects to be comfortable with long coding
A high-Quality Data Structure course: good coverage + many exercises
A high-Quality Algorithms course: good coverage + many exercises
This implies: you already solved and coded a lot. It is time to move to medium challenges.
Don't join this course if you lack basic problem-solving skills
The course programming language
All slides codes are based on C++
Mainly C++11. I intend to not use the very modern C++
Many people don't study after C++11
It will be easier for other programming languages to understand the code
The LeetCode discussion tab has solutions for many other languages
80% of the problems: I will download solutions for some other languages (Python, Java) .
As the code is downloaded, expect differences in the code structure. You must understand fully the lecture first.
The course natural language:
The course is only in English with an Egyptian accent
English subtitles are provided to make it easy in case. it is easy to adapt the Egyptian accent
Videos problem-solving cycle:
Presenting a problem
Verifying assumptions and test cases
Trying to brute-force the problem
Optimizing the brute force if possible
Or analyzing the problem and test cases
Several iterative hints are provided; a missing educational key in other resources
2 training styles are possible with the materials.
A topics-based style where you focus on a specific topic and solving many of its problems. This style has a great disadvantage; you know the solution category (e.g. a stack problem), which is a big hint.
A blind-based style where sprints of problems are provided. Each sprint is 10 problems to solve.
You don’t know the category of the problem.
This is a more matching experience to the real interviews experience.
This style is the recommended one.
After the course, you will be provided with more problems to solve on your own to keep enhancing your skills.
You must solve a lot to increase your chance of passing the interviews.
A problem name starts with
E for easy-level from 1 to 3
M for medium-level from 4 to 7
H for hard-level from 8 to 10
The course is taught by one of the seniors in Competitive Programming where complex Data structures and Algorithms questions are asked. In addition, long experience with algorithmic interviews in the software engineering industry.
Acknowledgement: “I’d like to extend my gratitude towards Robert Bogan for his help with proofreading the slides for this course”