Hello guys this is CodeNCode and as you guys know I have been working for more than 3 years on Data Structures and algorithms courses. So I thought let's compile it to one place and share so it can be helpful to everyone.

### List of Courses

##### Basic Algorithms

- L01 : Why you should learn binary search
- L02 : Understanding Core of Binary Search
- L03 : Monk's encounter with polynomial (HackerEarth)
- Ternary String (Codeforces)
- Aggressive Cows (SPOJ)
- L04 : Permutation & Cost of ith Cyclic Shift
- L05 : Calculating cost of ith cyclic shift
- Maximize function (HackerEarth)
- Rotation Matching (Codeforces)
- L06 : Range updates in O(1) time

##### Number Theory

- L00 : Course Overview
- L01 :Primality Test in O(sqrt(N)) Time
- L01.1 : Primality Test (Codechef)
- L02 : Sieve of Eretosthenes
- L02.1 : Finding the kth prime (SPOJ)
- L03 : Prime factorization in O(sqrt(N))
- L04 : Binary Exponentiation
- L04.1 : Prime Interval (HackerEarth)
- L04.2 : Micro and Prime Prime (HackerEarth)
- L05 : Prime factorization using Sieve in O(logN)
- L06 : Matrix Exponentiation with problem Explanation (MPOW SPOJ)
- L07 : Calculating nth element of recurrence relation in O(logN)
- L07.1 : Fibonacci Finding (HackerRank)
- L08 : Euclid algorithm and Introduction to Modular arithmetic
- L08.1 : GCD Queries (Codechef)
- L09 : Modular Arithmetic Part 1
- L10 : Modular Arithmetic Part 2
- L10.1 : Arpa's Exam and Mehardad's Naive Cheat (Codeforces)
- L11 : Modular GCD (Codechef)
- L12 : Modulo Multiplicative inverse
- L13 : Finding Modulo inverse
- L14 : Total Divisors from prime factorization
- L15 : Binomial Coefficient using modulo inverse
- L16 : Euler's Totient Function
- L17 : Euler's Totient Function Part 2
- L18 : Euler's Totient Function in O(sqrt(N))
- L19 : Calculating ETF using Sieve
- L20 : Euler Totient Function and GCD Sum
- L21 : Euler Totient Function and GCD Sum Part 2
- L22 : What is Segmented Sieve and why you should learn it?
- Prime Generator (SPOJ)
- L23 : Finding Common Divisors in O(logN) time
- Queries about Numbers (Codechef)
- L24 : Non-Deterministic Primality Test algorithms
- L25 : Fermat's Primality Test and Spoj PON Solution
- L26 : Miller-Rabin Primality Test
- L27 : Extended Euclidean Algorithm
- L28 : Extended Euclidean Algorithm Part 2
- L29 : Linear Diophantine Equation
- Crucial Equation (SPOJ)
- Get AC in one Go (Codechef)
- L30 : Linear Diophantine Equation Part 2

##### Graph theory Part 1

- L00 : Course Overview
- L01 : Graph Representation
- L02 : Depth First Search (DFS)
- L03 : Counting connected components
- L03.1 : Practice Problem 1
- L04 : Single source shortest path (on tree) using DFS
- L04.1 : Practice Problem 2
- L04.2 : Practice Problem 3
- L05 : Bi-Partite Graph Test
- L05.1 : Practice Problem 4
- L06 : Cycle detection in graph using DFS
- L07 : In/Out time of nodes
- L07.1 : Practice Problem 5
- L08 : Finding Diameter of tree
- Longest path in tree (SPOJ)
- L09 : Calculating subtree size using dfs in O(N)
- L10 : Breadth first search (BFS)
- Monks & the islands (HackerEarth)
- Prime Path (SPOJ) Easy-Medium
- Feasible Relations (HackerEarth)
- Social Networking Graph (HackerEarth)
- L11 : Finding bridges Part 1
- L11.1 : Finding Bridges Part 2
- Bertown Roads (Codeforces)
- L12 : Articulation Points & Relation with bridges
- L13 : Finding Articulation Points
- SUBMERGE (SPOJ)
- L14 : Topological Sorting Introduction
- L15 : Kahn's algorithm for Topological Sorting
- L16 : TOPOSORT (SPOJ)
- L17 : Introduction of graph algorithms on 2D Grid
- L18 : Applying DFS on 2D Grid
- L19 : Counting Connected Components in 2D Grid
- Counting Rooms (CSES)
- L20 : BFS on 2D Grid
- Jungle Run (HackerEarth)
- L21 : Minimum moves to reach target by Knight
- Chess Knight Moves (Codechef)
- L22 : Kosaraju's algorithm for Strongly Connected Components Part 1
- L23 : Kosaraju's algorithm for Strongly Connected Components Part 2
- Chef and Round Run (Codechef)
- L24 : Tarjan's algorithm for Strongly Connected Component Part 1
- L25 : Tarjan's algorithm for Strongly Connected Component Part 2
- A walk to remember (HackerEarth)

##### Bit Manipulation

- L00 : Course Overview
- L01 : Binary Left and Right Shift
- L02 : Checking for ith set bit
- L03 : Number of set bits in N
- Number of 1 bits (LeetCode)
- Counting Bits (LeetCode)
- Power of Two (LeetCode)
- L04 : XOR and its properties
- XOR Queries on subarray (LeetCode)
- L05 : All pair sum XOR
- L06 : Total sum of all pair XOR
- Minimum flips to make A OR B equal to C (LeetCode)
- Single Number II (LeetCode)
- AND Product (HackerRank)
- Sansa and XOR (HackerRank)

##### Disjoint Data Set

##### Dynamic Programming (Basics)

- L00 : Course Overview
- L01 : Staircase Problem
- L02 : Staircase Problem recursive Approach
- L03 : 2xN Tiling Problem
- L04 : Subsets & Bit Masking
- L05 : Subset Sum using Bit Masking
- L06 : Chef Got Recipes (Codechef)
- L07 : Coin Change
- L08 : Subset Sum Part 1
- L09 : Subset Sum with Linear Space
- L10 : Subset Sum : Printing actual result
- L11 : Min-Max path queries on 2D Grid Part 1
- L12 : Min-Max path queries on 2D Grid Part 2
- Minimum falling path sum (LeetCode)
- Minimum path sum (LeetCode)
- L13 : Longest Palindromic Substring
- Longest Palindromic Substring (LeetCode)
- L14 : Number of ways to reach cell (N , M) from (1 , 1)
- Unique Patha (LeetCode)
- Unique Paths II (LeetCode)
- L15 : Rod Cutting Problem
- L16 : Kadane's algorithm for maximum subarray sum
- Minimizing Coins (CSES)

##### Dynamic Programming (Advanced)

##### Segment Tree

- L01 : Course View
- L02 : Introduction to Segment Tree
- L03 : Segment Tree Implementation
- L04 : RMQSQ : Range minimum query (SPOJ)
- L05 : Segment Tree Point Update
- Help Ashu (HackerEarth)
- L06 : Lazy Propagation Introduction
- L07 : Lazy Propagation Implementation
- Multiples of 3 (Codechef)
- L08 : Introduction to Merge Sort Tree
- L09 : Merge sort tree Implementation & Space Complexity
- L10 : Merge sort tree : answering queries
- K-Query (SPOJ)

##### Graph Theory Part 2

- L00 : Course Overview
- L01 : Kruskal's Algorithm for MST
- L02 : Minimum Spanning Tree (HackerEarth)
- L03 : Lowest Common Ancestor (LCA) Part 1
- L04 : LCA Part 2 : Binary Lifting
- L05 : distance between 2 nodes in O(logN)
- L06 : Dijkstra's Algorithm
- L07 : Dijkstra's Algorithm Implementation
- L08 : Max-Flow Introduction
- L09 : Ford-Fulkerson Algorithm for Max-Flow
- L10 : Edmonds-Karp Algorithm for Max-Flow
- L11 : Bellman-Ford Algorithm
- L12 : Bellman-Ford Algorithm : Implementation & Proof

##### String Algorithms

- L00 : Course Overview
- L01 : Sliding Window algorithm Part 1
- L01.1 : Sliding Window algorithm Part 2
- L02 : Introduction to String Hashing
- L03 : Polynomial Rolling Hash
- L04 : Substring Hash in O(1)
- Needle in Haystack (SPOJ) solution using Rolling Hash
- L05 : Rabin-Karp String Matching Algorithm
- L06 : Knuth-Morris-Pratt String matching algorithm Part 1
- L07 : Knuth-Morris-Pratt String matching algorithm Part 2
- Apply KMP (HackerEarth)
- ADA and Pet (SPOJ)
- L08 : Z-Function and its applications
- L09 : Why you should Learn Trie?
- L10 : Structure of Trie & how insertion and serach works?
- L11 : Trie Implementation
- Word Queries (HackerEarth)

##### SQRT Decomposition & Mo's Algorithm

##### Queries on Tree

- L00 : Course Overview
- L01 : Euler Tour Technique or Tree Flattening
- L02 : Tree and Queries Part 1
- L03 : Tree and Queries Part 2
- L04 : Path Queries and Mo's algorithm
- L05 : Gao on Tree (SPOJ)
- L06 : Introduction to Centroid Decomposition and related problems
- L07 : Height & Structure of Centroid Decomposition
- L08 : Centroid Decomposition Implementation
- L09 : Centroid Decomposition : Updates & Queries
- L10 : Range Queries techniques (Like segment tree) on Trees
- L11 : Subtree Sum query with point update using Segment tree or BIT

##### Tree DP

##### Geometric Algorithms

### Practice Problems By platform

##### Codeforces

##### Codechef

##### HackerEarth

##### HackerRank

```
Update : 25 November 2021 , added 2 new playlists in CSES.
Last Update : 25 Jun 2021 , added geometry algorithm lectures and practice problems.
Note 0 : Even if there are multiple updates (since I keep adding Lectures regularly) , I won't update this list frequently (so this doesn't become a spam) ,
I will update it only once in 7-10 days (if it still is too much please let me know).
Note 1 : Any suggestion and Constructive criticism is welcome.If there are any mistakes made , please let me know so that I and my teaching skills can improve.
Thank you for your valuable Time
```

Thanks a lot,sir!!

Amazing !!!

Thanks

Thank you. You saved a lot of time for me!

I am glad it helped :)

Bro Please add videos on DP Bitmasking it will be a great help.

I am working on that , recently I added many dp on tree lectures. Others I will add too.

Just a suggestion:

`You should not burden yourself with making videos for all topics. You can consider adding other youtuber's videos to your playlists too. I think that will be very helpful in getting all the resources at one place`

Thanks very much for your hardwork! You just made my life easier and I appreciate very much Orz

The amount of educational content you're uploading on youtube,all that for free is awesome. Thank you sir! Your youtube videos helped(and is helping) me a lot. Deep respect for guys like you.

This is amazing! I wish I could upvote a thousand times Thanks a lot:)

A lot of thanks for your effort and amazing quality on the videos Congratulations and waiting for more!

Thanks a lot, sir. it helps a lot for beginners who are always searching for this type of resource.

Learned a lot from you Sir and will continue to do so. Previously I do not feel confident on taking part in codeforces contest but watching your videos gave me huge motivation. Thanks for your effort.

First of all thanks for presenting such a great resource. But for problem-solving lectures can you put the link of the problem in the video description.

earlier (1 year or before that) I didn't thought it was that necessary (I though students can google and find problem with problem name) to put links , but now in every editorial I provide problem link. and if I come across a problem in which there is no problem link , I add it. you can tell me the list of editorials in which problem link is not there I will add

thanks!!!

you need to increase your voice in videos. it is quite in almost all videos . someone cant summarize whats you have to thought. if the voice is ok then its seems more interesting to learn aur to understand the algo's.

in latest video this problem is resolved. I am keeping volume high enough now from like last 3-4 months. thank you for feedback :)

It would not be enough if I just say "thanks you". Really appreciate that. Thanks man...

This is really useful. However, it would be better if you included links to videos of other creators too. As, it would be almost impossible for you to create enough videos on each topic.

For me, the value of this list, isn't from the video links you provided, but the list itself. It provides a roadmap to get better in CP. So, don't feel bad if you can't create videos on all of the topics you want. Just link to some other creator's videos. That would be highly appreciated.

Regarding updating the list, kindly update after 20-25 days, as that would allow you to create a lot of videos in the time. Also, it wouldn't feel like spam. Updating every 7-10 days with 4-5 new videos may be not as helpful to me, as adding 20 videos once a month.

great effort! this will make it easier for beginners

Finally I got structured course of free.

Thank you sir a lot. You are doing great for us.

All the best and please keep doing this work for us.

This is amazing and superb! I wish I could upvote a thousand times. This has helped me a lot a give a good start to my coding. Thanks a lot again:)

Does anybody know how to save somebody’s blog so I can look at it later?

Just when the blog ends, the row where you can upvote and downvote, there will be a star, click on that star to make it golden and then you can see that blog in the section of your favourite blog in your profile page.

Thank you very much!

Thanks!

Great!

Thanks a lot !

Nice job, also add 2-sat.

Thank you sir!