The Bible Of Algorithms And Interview Questions

Build the foundation in Algorithms and Data Structures to ace Competitive Programming & Coding Interviews

Last updated 2022-01-10 | 4.5

- Build a solid foundation to become a Competitive Programming wizard
- Master revolutionary data structures and various types of problems using each of them
- Learn fundamental algorithms and solve classical problems

What you'll learn

Build a solid foundation to become a Competitive Programming wizard
Master revolutionary data structures and various types of problems using each of them
Learn fundamental algorithms and solve classical problems
Strengthen your problem solving and coding skill

* Requirements

* Just basic knowledge of C/C++ language (variables
* loops
* statements)

Description

This course is going to be your bible on solving each coding interview question and competitive programming challenge. The content is based on my 6 year experience of struggling to find and solve a wide range of problems and develop the system for mastering this skill. I cover the exact same content that has helped my students' performance skyrocket and got them offers at top companies like Google, Facebook and Amazon and solid results in the International Competitive Programming Contests.

We start from basics such as Mathematics Fundamentals: Prime Numbers, Sieve of Eratosthenes, Fast Modular Exponentiation. Then we dive into interesting challenges and gold tricks on arrays and matrices, followed by Binary Search, Recursion and Divide and Conquer. We continue by exploring fundamental data structures such as Stack, Queue, Deque, Heap and Hash Table. Then, after building a solid foundation, we explore complex topics such as Greedy and Dynamic Programming, in which I reveal bulletproof formulas that guide you in solving every single problem of that specific type.


Here's what make this course amazing:

  • I guide you through the line of my thought when solving each problem, focusing on building the general approach for any type of problem you can encounter in competitive programming contests or software developing interviews.

  • You will learn all the theory needed, but our main focus here is on practical applications.

  • I share with you problem solving tricks and good coding practises that took me years and hundreds of problems to figure out.

  • It's interactive and engaging: I try to keep the theory as simple and natural as possible and we work as a team in solving any problem.

Do you think it's finally the time to get the Software Developer Job or the results in Competitive Programming you deserve? Follow me!

Who this course is for:

  • Anyone wishing to crush Competitive Programming
  • Anyone wishing to get their dream job

Course content

18 sections • 124 lectures

How to take this Course Preview 04:07

Discord Channel Link Preview 00:00

What are Algorithms? Preview 10:39

What are Data Structures? Preview 11:16

Complexity Analysis Preview 14:27

Prime Number Test Preview 04:47

Prime Number Test - Implementation Preview 08:44

Homework: Change the for loop in the code in order for our program to run in O( sqrt(n) ) time complexity.

The solution is in the source code.

Prime Factorization Preview 10:06

Prime Factorization - Implementation Preview 06:56

Sieve of Eratosthenes Preview 07:24

Sieve of Eratosthenes - Implementation Preview 07:14

Fast Modular Exponentiation Preview 07:33

Fast Modular Exponentiation - Recursive Implementation Preview 07:02

Fast Modular Exponentiation - Iterative Implementation Preview 12:20

Pigeonhole Principle Problem Preview 06:15

Pigeonhole Principle - Implementation Preview 02:35

Mathematics - Homework

Some problems to practice on this section

Partial Sums Preview 06:13

Partial Sums - Implementation Preview 01:08

Range Update Trick Preview 10:41

Frequency Array Preview 05:20

Maximum Sum Subarray - Greedy Approach Preview 12:11

Maximum Sum Subarray - Greedy Approach Implementation Preview 02:26

Maximum Sum Subarray - Partial Sums Approach Preview 08:28

Maximum Sum Subarray - Partial Sums Approach Implementation Preview 04:49

Longest Consecutive Numbers Subarray Preview 09:44

Longest Consecutive Numbers Subarray - Implementation Preview 06:33

Introduction to Sliding Window Technique + Problem Example Preview 06:03

Sliding Window Technique Solution Preview 09:18

Sliding Window Technique Solution - Implementation Preview 13:50

Introduction to the STL Vector Preview 18:33

Arrays - Homework

Some problems to practice on Arrays.

Partial Sums Preview 19:02

Range Update Trick Preview 12:10

Maximum Sum Submatrix Preview 12:28

Maximum Sum Submatrix - Implementation Preview 07:30

Maximum size square full of 1's Preview 08:09

Maximum size square full of 1's - Implementation Preview 08:05

Matrices - Homework

Some problems to practice on Matrices.

Introduction to Binary Search Preview 09:34

Binary Search - Implementation Preview 02:17

Minimum Capacity Transportation Problem Preview 13:16

Minimum Capacity Transportation - Implementation Preview 07:39

Maximum Number of Groups Problem Preview 13:37

Maximum Number of Groups - Implementation Preview 01:56

Maximum Special Distance Problem Preview 12:58

Maximum Special Distance - Implementation Preview 04:39

Binary Search - Homework

Problems to practice on Binary Search

Introduction to Recursion Preview 06:11

Fill Algorithm Preview 12:42

Fill Algorithm - Implementation Preview 15:00

Recursion - Homework

Problems to practice on Recursion

Merge Sort - Sorting Algorithm Preview 07:44

Merge Sort - Merging two arrays + Implementation Preview 08:21

Merge Sort - Time Complexity Preview 04:47

Maximum Sum Subarray Preview 12:43

Z-Traversal Problem Preview 13:14

Z-Traversal - Implementation Preview 05:56

Divide and Conquer - Homework

Problems to practice on Divide and Conquer

Introduction to Stack Preview 06:55

Valid Parentheses Problem Preview 06:03

Valid Parentheses - Implementation Preview 04:34

First Greater Element Problem Preview 09:16

First Greater Element - Implementation Preview 04:53

Largest Rectangular Area in a Histogram Preview 09:31

Largest Rectangular Area in a Histogram - Implementation Preview 04:55

Maximum area rectangle full of 1's Preview 12:52

Maximum area rectangle full of 1's - Implementation Preview 01:46

Stack - Homework

Problems to practic on Stack

Introduction to Queue Preview 07:53

Lee's Algorithm Preview 09:24

Lee's Algorithm - Implementation Preview 05:42

Introduction to Deque Preview 05:28

Minimum of K-length subarrays Preview 09:20

Minimum of K-length subarrays - Implementation Preview 02:58

Maximum Sum Subarray with length in given range Preview 10:50

Maximum Sum Subarray with length in given range - Implementation Preview 03:38

Introduction to Hash Table Preview 09:00

Hash Table - Implementation Preview 06:51

Unordered_Map Preview 08:41

Unordered_Set Preview 09:52

Number of Pairs of Given Sum Preview 07:09

I won the Loto! Problem Preview 08:48

I won the Loto! - Implementation #1 Preview 05:23

I won the Loto! - Implementation #2 Preview 02:55

Hilbert's Hotel - Statement Preview 00:00

Hilbert's Hotel - Solution #1 Preview 22:55

Hilbert's Hotel - Solution #2 Preview 02:37

Introduction to Heap Preview 05:19

Inserting a Node Preview 04:54

Removing the Root Preview 05:07

Time Complexity Preview 02:52

Priority_Queue Preview 06:53

Connect the ropes with minimum cost Preview 04:49

Connect the ropes with minimum cost - Implementation Preview 02:19

Introduction to Greedy Preview 02:16

Knapsack Problem Preview 09:54

Knapsack Problem - Implementation Preview 05:02

Activity Selection Problem Preview 05:00

Activity Selection - Implementation Preview 02:26

Minimum Number of Platforms Problem Preview 06:12

Minimum Number of Platforms - Implementation Preview 04:42

Kill the monsters! Preview 13:52

Kill the monsters! - Implementation Preview 05:26

Minimum Number of Boats Problem Preview 12:23

Minimum Number of Boats - Implementation Preview 06:14

Introduction to Dynamic Programming Preview 05:17

Bulletproof Formula for Every Dynamic Programming Problem Preview 05:17

Longest Increasing Subsequence - Brute Force Approach Preview 10:08

Longest Increasing Subsequence - Optimal Approach Preview 11:08

Longest Increasing Subsequence - Implementation Preview 04:49

Longest Common Subsequence Preview 11:34

Longest Common Subsequence - Building the Solution Preview 11:15

0/1 Knapsack Problem Preview 07:59

0/1 Knapsack Problem - Implementation Preview 02:17

Minimum Edit Distance Preview 16:54

Minimum Edit Distance - Implementation Preview 02:28

Dynamic Programming - Homework

A couple of problems to practice Dynamic Programming