An open API service indexing awesome lists of open source software.

https://github.com/arindal1/sde-dsa-sd-prep

Comprehensive repository to track my progress for SDE preparation, in DSA, System Design and CS Core. Includes Striver, NeetCode, DonneMartin, and more.
https://github.com/arindal1/sde-dsa-sd-prep

algorithms cpp data data-structures datastructures-algorithms neetcode sde-prep striver strivers-sde-sheet system-design

Last synced: about 4 hours ago
JSON representation

Comprehensive repository to track my progress for SDE preparation, in DSA, System Design and CS Core. Includes Striver, NeetCode, DonneMartin, and more.

Awesome Lists containing this project

README

          




Repo Stars


Forks


Last Commit


Made with Love



Welcome to my comprehensive **SDE Interview Prep** repository! This repo is a one-stop hub that covers **A-Z of Data Structures and Algorithms**, **System Design** and **CS Core** crafted specifically for mastering technical interviews at **product-based companies** and **high-growth startups**.

Each problem is thoughtfully categorized, solved in **C++**, and accompanied by detailed **Markdown explanations** to help you understand the logic, intuition, and edge cases. Whether you're brushing up on fundamentals or tackling advanced topics โ€” this repo's got you.

๐Ÿ“Œ **DSA Sources**: [Striver's A2Z](https://takeuforward.org/dsa/strivers-a2z-sheet-learn-dsa-a-to-z) , [NeetCode 150](https://neetcode.io/practice?tab=neetcode150) , [Blind 75](https://leetcode.com/problem-list/oizxjoit/) , [Top Interview 150](https://leetcode.com/studyplan/top-interview-150/)

๐Ÿ“Œ **System Design Sources**: [System Design Primer](https://github.com/donnemartin/system-design-primer)

---

## ๐Ÿ“ Data Structures and Algorithms

[ ๐Ÿ“„ `.md` files for explanation | ๐Ÿ’ป `.cpp` files for code implementation ]

๐Ÿง  Basics


| Category | Problem / Algorithm | Explanation | Code |
| ---------------- | ----------------------------------- | ----------------------------------------------------- | ------------------------------------------------------- |
| ๐Ÿ“˜ 1. Maths | Count the Digits | [๐Ÿ“„ MD](./01.Basics/1.Maths/1.CountTheDigits.md) | โ€“ |
| ๐Ÿ“˜ 1. Maths | Reverse a Number | [๐Ÿ“„ MD](./01.Basics/1.Maths/2.ReverseNumber.md) | โ€“ |
| ๐Ÿ“˜ 1. Maths | Palindrome Number | [๐Ÿ“„ MD](./01.Basics/1.Maths/3.PalindromeNumber.md) | โ€“ |
| ๐Ÿ“˜ 1. Maths | GCD | [๐Ÿ“„ MD](./01.Basics/1.Maths/4.GCD.md) | โ€“ |
| ๐Ÿ“˜ 1. Maths | Armstrong Number | [๐Ÿ“„ MD](./01.Basics/1.Maths/5.Armstrong%20Number.md) | โ€“ |
| ๐Ÿ“˜ 1. Maths | All Divisors | [๐Ÿ“„ MD](./01.Basics/1.Maths/6.AllDivisors.md) | โ€“ |
| ๐Ÿ“˜ 1. Maths | Check Prime | [๐Ÿ“„ MD](./01.Basics/1.Maths/7.CheckPrime.md) | โ€“ |
| | | | | |
| ๐Ÿ” 2. Recursion | Print N Names | [๐Ÿ“„ MD](./01.Basics/2.Recursion/1.N-Names.md) | [๐Ÿ’ป CPP](./01.Basics/2.Recursion/1.N-Names.cpp) |
| ๐Ÿ” 2. Recursion | 1 to N | [๐Ÿ“„ MD](./01.Basics/2.Recursion/2.1-N.md) | [๐Ÿ’ป CPP](./01.Basics/2.Recursion/2.1-N.cpp) |
| ๐Ÿ” 2. Recursion | N to 1 | [๐Ÿ“„ MD](./01.Basics/2.Recursion/3.N-1.md) | [๐Ÿ’ป CPP](./01.Basics/2.Recursion/3.N-1.cpp) |
| ๐Ÿ” 2. Recursion | Sum of N | [๐Ÿ“„ MD](./01.Basics/2.Recursion/4.SumOfN.md) | [๐Ÿ’ป CPP](./01.Basics/2.Recursion/4.SumOfN.cpp) |
| ๐Ÿ” 2. Recursion | Factorial of N | [๐Ÿ“„ MD](./01.Basics/2.Recursion/5.FactofN.md) | [๐Ÿ’ป CPP](./01.Basics/2.Recursion/5.FactofN.cpp) |
| ๐Ÿ” 2. Recursion | Reverse Array | [๐Ÿ“„ MD](./01.Basics/2.Recursion/6.RevArray.md) | [๐Ÿ’ป CPP](./01.Basics/2.Recursion/6.RevArray.cpp) |
| ๐Ÿ” 2. Recursion | Palindrome String | [๐Ÿ“„ MD](./01.Basics/2.Recursion/7.StringPalin.md) | [๐Ÿ’ป CPP](./01.Basics/2.Recursion/7.StringPalin.cpp) |
| ๐Ÿ” 2. Recursion | Fibonacci | [๐Ÿ“„ MD](./01.Basics/2.Recursion/8.Fibonacci.md) | [๐Ÿ’ป CPP](./01.Basics/2.Recursion/8.Fibonacci.cpp) |
| | | | | |
| ๐Ÿ” 3. Hashing | Frequency of Array Elements | [๐Ÿ“„ MD](./01.Basics/3.Hashing/1.FreqOfArrayEl.md) | [๐Ÿ’ป CPP](./01.Basics/3.Hashing/1.FreqOfArrayEl.cpp) |
| ๐Ÿ” 3. Hashing | Highest & Lowest Freq Element | [๐Ÿ“„ MD](./01.Basics/3.Hashing/2.HighLowFreqEl.md) | [๐Ÿ’ป CPP](./01.Basics/3.Hashing/2.HighLowFreqEl.cpp) |
| ๐Ÿ” 3. Hashing | First Unique Character | [๐Ÿ“„ MD](./01.Basics/3.Hashing/3.FirstUnique.md) | [๐Ÿ’ป CPP](./01.Basics/3.Hashing/3.FirstUnique.cpp) |
| ๐Ÿ” 3. Hashing | Find Difference | [๐Ÿ“„ MD](./01.Basics/3.Hashing/4.FindDifference.md) | [๐Ÿ’ป CPP](./01.Basics/3.Hashing/4.FindDifference.cpp) |
| ๐Ÿ” 3. Hashing | Find Duplicates | [๐Ÿ“„ MD](./01.Basics/3.Hashing/5.FindDuplicates.md) | [๐Ÿ’ป CPP](./01.Basics/3.Hashing/5.FindDuplicates.cpp) |
| ๐Ÿ” 3. Hashing | Is Anagram | [๐Ÿ“„ MD](./01.Basics/3.Hashing/6.IsAnagram.md) | [๐Ÿ’ป CPP](./01.Basics/3.Hashing/6.IsAnagram.cpp) |

๐Ÿ”ข Sorting


| Category | Problem / Algorithm | Explanation | Code |
| ---------------- | ----------------------------------- | ----------------------------------------------------- | ------------------------------------------------------- |
| ๐Ÿ“‘ 1. Elementary | Selection Sort | [๐Ÿ“„ MD](./02.Sorting/1.Sorting/1.SelectionSort.md) | [๐Ÿ’ป CPP](./02.Sorting/1.Sorting/1.SelectionSort.cpp) |
| ๐Ÿ“‘ 1. Elementary | Bubble Sort | [๐Ÿ“„ MD](./02.Sorting/1.Sorting/2.BubbleSort.md) | [๐Ÿ’ป CPP](./02.Sorting/1.Sorting/2.BubbleSort.cpp) |
| ๐Ÿ“‘ 1. Elementary | Insertion Sort | [๐Ÿ“„ MD](./02.Sorting/1.Sorting/3.InsertionSort.md) | [๐Ÿ’ป CPP](./02.Sorting/1.Sorting/3.InsertionSort.cpp) |
| | | | | |
| ๐Ÿ“ˆ 2. Advanced | Merge Sort | [๐Ÿ“„ MD](./02.Sorting/2.Sorting/1.MergeSort.md) | [๐Ÿ’ป CPP](./02.Sorting/2.Sorting/1.MergeSort.cpp) |
| ๐Ÿ“ˆ 2. Advanced | Quick Sort | [๐Ÿ“„ MD](./02.Sorting/2.Sorting/2.QuickSort.md) | [๐Ÿ’ป CPP](./02.Sorting/2.Sorting/2.QuickSort.cpp) |
| ๐Ÿ“ˆ 2. Advanced | Heap Sort | [๐Ÿ“„ MD](./02.Sorting/2.Sorting/3.HeapSort.md) | [๐Ÿ’ป CPP](./02.Sorting/2.Sorting/3.HeapSort.cpp) |
| ๐Ÿ“ˆ 2. Advanced | Radix Sort | [๐Ÿ“„ MD](./02.Sorting/2.Sorting/4.RadixSort.md) | [๐Ÿ’ป CPP](./02.Sorting/2.Sorting/4.RadixSort.cpp) |

โ™ ๏ธ Arrays


| Category | Problem / Algorithm | Explanation | Code |
| ---------------- | ----------------------------------- | ----------------------------------------------------- | ------------------------------------------------------- |
| ๐Ÿ“‘ 1. Easy | Largest Element in the Array | [๐Ÿ“„ MD](./03.Arrays/1.Easy/1.LargestElement.md) | [๐Ÿ’ป CPP](./03.Arrays/1.Easy/1.LargestElement.cpp) |
| ๐Ÿ“‘ 1. Easy | Second Largest Element in the Array | [๐Ÿ“„ MD](./03.Arrays/1.Easy/2.SecondLargestElement.md) | [๐Ÿ’ป CPP](./03.Arrays/1.Easy/2.SecondLargestElement.cpp) |
| ๐Ÿ“‘ 1. Easy | Is Array Sorted? | [๐Ÿ“„ MD](./03.Arrays/1.Easy/3.IsArraySorted.md) | [๐Ÿ’ป CPP](./03.Arrays/1.Easy/3.IsArraySorted.cpp) |
| ๐Ÿ“‘ 1. Easy | Remove Duplicates from Array | [๐Ÿ“„ MD](./03.Arrays/1.Easy/4.RemoveDuplicates.md) | [๐Ÿ’ป CPP](./03.Arrays/1.Easy/4.RemoveDuplicates.cpp) |
| ๐Ÿ“‘ 1. Easy | Left Rotate by One | [๐Ÿ“„ MD](./03.Arrays/1.Easy/5.LeftRotateArrayByOne.md) | [๐Ÿ’ป CPP](./03.Arrays/1.Easy/5.LeftRotateArrayByOne.cpp) |
| ๐Ÿ“‘ 1. Easy | Rotate Array by K Places | [๐Ÿ“„ MD](./03.Arrays/1.Easy/6.RotateArrayByKPlaces.md) | [๐Ÿ’ป CPP](./03.Arrays/1.Easy/6.RotateArrayByKPlaces.cpp) |
| ๐Ÿ“‘ 1. Easy | Shift Zeros to End | [๐Ÿ“„ MD](./03.Arrays/1.Easy/7.ShiftZerosToEnd.md) | [๐Ÿ’ป CPP](./03.Arrays/1.Easy/7.ShiftZerosToEnd.cpp) |
| ๐Ÿ“‘ 1. Easy | Linear Search | [๐Ÿ“„ MD](./03.Arrays/1.Easy/8.LinearSearch.md) | [๐Ÿ’ป CPP](./03.Arrays/1.Easy/8.LinearSearch.cpp) |
| ๐Ÿ“‘ 1. Easy | Find The Union | [๐Ÿ“„ MD](./03.Arrays/1.Easy/9.1.FindTheUnion.md) | [๐Ÿ’ป CPP](./03.Arrays/1.Easy/9.1.FindTheUnion.cpp) |
| ๐Ÿ“‘ 1. Easy | Find The Intersection | [๐Ÿ“„ MD](./03.Arrays/1.Easy/9.2.FindTheIntersection.md) | [๐Ÿ’ป CPP](./03.Arrays/1.Easy/9.2.FindTheIntersection.cpp) |
| ๐Ÿ“‘ 1. Easy | Find The Missing Number | [๐Ÿ“„ MD](./03.Arrays/1.Easy/10.FindTheMissingNumber.md) | [๐Ÿ’ป CPP](./03.Arrays/1.Easy/10.FindTheMissingNumber.cpp) |
| ๐Ÿ“‘ 1. Easy | Max Consecutive Ones | [๐Ÿ“„ MD](./03.Arrays/1.Easy/11.MaxConsecutiveOnes.md) | [๐Ÿ’ป CPP](./03.Arrays/1.Easy/11.MaxConsecutiveOnes.cpp) |
| ๐Ÿ“‘ 1. Easy | Number that Appears Once | [๐Ÿ“„ MD](./03.Arrays/1.Easy/12.NumberThatAppearsOnce.md) | [๐Ÿ’ป CPP](./03.Arrays/1.Easy/12.NumberThatAppearsOnce.cpp) |
| ๐Ÿ“‘ 1. Easy | Longest Subarray with Sum K | [๐Ÿ“„ MD](./03.Arrays/1.Easy/13.LongestSubarrayWithSumK.md) | [๐Ÿ’ป CPP](./03.Arrays/1.Easy/13.LongestSubarrayWithSumK.cpp) |
| ๐Ÿ“‘ 1. Easy | Remove K From Array | [๐Ÿ“„ MD](./03.Arrays/1.Easy/15.RemoveValueFromArray.md) | [๐Ÿ’ป CPP](./03.Arrays/1.Easy/15.RemoveValueFromArray.cpp) |
| ๐Ÿ“‘ 1. Easy | One Plus | [๐Ÿ“„ MD](./03.Arrays/1.Easy/14.OnePlus.md) | [๐Ÿ’ป CPP](./03.Arrays/1.Easy/14.OnePlus.cpp) |
| ๐Ÿ“‘ 1. Easy | Remove Value From Array | [๐Ÿ“„ MD](./03.Arrays/1.Easy/15.RemoveValueFromArray.md) | [๐Ÿ’ป CPP](./03.Arrays/1.Easy/15.RemoveValueFromArray.cpp) |
| ๐Ÿ“‘ 1. Easy | Container With Most Water | [๐Ÿ“„ MD](./03.Arrays/1.Easy/16.ContainerWithMostWater.md) | [๐Ÿ’ป CPP](./03.Arrays/1.Easy/16.ContainerWithMostWater.cpp) |
| ๐Ÿ“‘ 1. Easy | Move Zeros To End | [๐Ÿ“„ MD](./03.Arrays/1.Easy/17.MoveZerosToEnd.md) | [๐Ÿ’ป CPP](./03.Arrays/1.Easy/17.MoveZerosToEnd.cpp) |
| | | | | |
| ๐Ÿ“ƒ 2. Medium | Two Sum | [๐Ÿ“„ MD](./03.Arrays/2.Medium/1.2Sum.md) | [๐Ÿ’ป CPP](./03.Arrays/2.Medium/1.2Sum.cpp) |
| ๐Ÿ“ƒ 2. Medium | Sort an Array of 0s, 1s & 2s | [๐Ÿ“„ MD](./03.Arrays/2.Medium/2.SortArrayOf012.md) | [๐Ÿ’ป CPP](./03.Arrays/2.Medium/2.SortArrayOf012.cpp) |
| ๐Ÿ“ƒ 2. Medium | Majority Element - I [> n/2] | [๐Ÿ“„ MD](./03.Arrays/2.Medium/3.MajorityElement.md) | [๐Ÿ’ป CPP](./03.Arrays/2.Medium/3.MajorityElement.cpp) |
| ๐Ÿ“ƒ 2. Medium | Maximum Sub-Array Sum | [๐Ÿ“„ MD](./03.Arrays/2.Medium/4.MaxSubarraySum.md) | [๐Ÿ’ป CPP](./03.Arrays/2.Medium/4.MaxSubarraySum.cpp) |
| ๐Ÿ“ƒ 2. Medium | Best Time to Buy and Sell Stock | [๐Ÿ“„ MD](./03.Arrays/2.Medium/5.BuyAndSellStock.md) | [๐Ÿ’ป CPP](./03.Arrays/2.Medium/5.BuyAndSellStock.cpp) |
| ๐Ÿ“ƒ 2. Medium | Rearrange Elements by Sign [Alternating] | [๐Ÿ“„ MD](./03.Arrays/2.Medium/6.RearrangeElementsBySign.md) | [๐Ÿ’ป CPP](./03.Arrays/2.Medium/6.RearrangeElementsBySign.cpp) |
| ๐Ÿ“ƒ 2. Medium | Next Permutation | [๐Ÿ“„ MD](./03.Arrays/2.Medium/7.NextPermutation.md) | [๐Ÿ’ป CPP](./03.Arrays/2.Medium/7.NextPermutation.cpp) |
| ๐Ÿ“ƒ 2. Medium | Leaders in an Array | [๐Ÿ“„ MD](./03.Arrays/2.Medium/8.LeadersInAnArray.md) | [๐Ÿ’ป CPP](./03.Arrays/2.Medium/8.LeadersInAnArray.cpp) |
| ๐Ÿ“ƒ 2. Medium | Longest Consecutive Sequence | [๐Ÿ“„ MD](./03.Arrays/2.Medium/9.LongestConsecutiveSequence.md) | [๐Ÿ’ป CPP](./03.Arrays/2.Medium/9.LongestConsecutiveSequence.cpp) |
| ๐Ÿ“ƒ 2. Medium | Set Matrix Zeros | [๐Ÿ“„ MD](./03.Arrays/2.Medium/10.SetMatrixToZeros.md) | [๐Ÿ’ป CPP](./03.Arrays/2.Medium/10.SetMatrixToZeros.cpp) |
| ๐Ÿ“ƒ 2. Medium | Rotate Matrix By 90 Degrees | [๐Ÿ“„ MD](./03.Arrays/2.Medium/11.RotateMatrixBy90.md) | [๐Ÿ’ป CPP](./03.Arrays/2.Medium/11.RotateMatrixBy90.cpp) |
| ๐Ÿ“ƒ 2. Medium | Matrix Spiral Traversal | [๐Ÿ“„ MD](./03.Arrays/2.Medium/12.MatrixSpiralTraversal.md) | [๐Ÿ’ป CPP](./03.Arrays/2.Medium/12.MatrixSpiralTraversal.cpp) |
| ๐Ÿ“ƒ 2. Medium | Sub Arrays With Sum K | [๐Ÿ“„ MD](./03.Arrays/2.Medium/13.SubArraysWithSumK.md) | [๐Ÿ’ป CPP](./03.Arrays/2.Medium/13.SubArraysWithSumK.cpp) |
| ๐Ÿ“ƒ 2. Medium | Partition Labels | [๐Ÿ“„ MD](./03.Arrays/2.Medium/15.PartitionLabels.md) | [๐Ÿ’ป CPP](./03.Arrays/2.Medium/15.PartitionLabels.cpp) |
| ๐Ÿ“ƒ 2. Medium | Sorted Array Squares | [๐Ÿ“„ MD](./03.Arrays/2.Medium/16.SortedArraySquares.md) | [๐Ÿ’ป CPP](./03.Arrays/2.Medium/16.SortedArraySquares.cpp) |
| ๐Ÿ“ƒ 2. Medium | Boats To Save People | [๐Ÿ“„ MD](./03.Arrays/2.Medium/17.BoatsToSavePeople.md) | [๐Ÿ’ป CPP](./03.Arrays/2.Medium/17.BoatsToSavePeople.cpp) |
| ๐Ÿ“ƒ 2. Medium | Simple Bank System | [๐Ÿ“„ MD](./03.Arrays/2.Medium/18.SimpleBankSystem.md) | [๐Ÿ’ป CPP](./03.Arrays/2.Medium/18.SimpleBankSystem.cpp) |
| ๐Ÿ“ƒ 2. Medium | Laser Beams in a Bank | [๐Ÿ“„ MD](./03.Arrays/2.Medium/19.LaserBeamsInABank.md) | [๐Ÿ’ป CPP](./03.Arrays/2.Medium/19.LaserBeamsInABank.cpp) |
| ๐Ÿ“ƒ 2. Medium | Count Ungaurded Cells | [๐Ÿ“„ MD](./03.Arrays/2.Medium/20.CountUngaurdedCells.md) | [๐Ÿ’ป CPP](./03.Arrays/2.Medium/20.CountUnguardedCells.cpp) |
| | | | | |
| ๐Ÿ“œ 2. Hard | Pascal's Triangle | [๐Ÿ“„ MD](./03.Arrays/3.Hard/1.PascalsTriangle.md) | [๐Ÿ’ป CPP](./03.Arrays/3.Hard/1.PascalsTriangle.cpp) |
| ๐Ÿ“œ 2. Hard | Majority Element - II [> n/3] | [๐Ÿ“„ MD](./03.Arrays/3.Hard/2.MajorityElementII.md) | [๐Ÿ’ป CPP](./03.Arrays/3.Hard/2.MajorityElementII.cpp) |
| ๐Ÿ“œ 2. Hard | Three Sum | [๐Ÿ“„ MD](./03.Arrays/3.Hard/3.ThreeSum.md) | [๐Ÿ’ป CPP](./03.Arrays/3.Hard/3.ThreeSum.cpp) |
| ๐Ÿ“œ 2. Hard | Four Sum | [๐Ÿ“„ MD](./03.Arrays/3.Hard/4.FourSum.md) | [๐Ÿ’ป CPP](./03.Arrays/3.Hard/4.FourSum.cpp) |
| ๐Ÿ“œ 2. Hard | Count Subarrays with Xor K | [๐Ÿ“„ MD](./03.Arrays/3.Hard/5.CountSubarraysWithXorK.md) | [๐Ÿ’ป CPP](./03.Arrays/3.Hard/5.CountSubarraysWithXorK.cpp) |
| ๐Ÿ“œ 2. Hard | Merge Overlapping Intervals | [๐Ÿ“„ MD](./03.Arrays/3.Hard/6.MergeOverlappingIntervals.md) | [๐Ÿ’ป CPP](./03.Arrays/3.Hard/6.MergeOverlappingIntervals.cpp) |
| ๐Ÿ“œ 2. Hard | Merge Sorted Arrays | [๐Ÿ“„ MD](./03.Arrays/3.Hard/7.MergeSortedArrays.md) | [๐Ÿ’ป CPP](./03.Arrays/3.Hard/7.MergeSortedArrays.cpp) |
| ๐Ÿ“œ 2. Hard | Find Repeating and Missing Numbers | [๐Ÿ“„ MD](./03.Arrays/3.Hard/8.FindRepeatingAndMissingNumbers.md) | [๐Ÿ’ป CPP](./03.Arrays/3.Hard/8.FindRepeatingAndMissingNumbers.cpp) |
| ๐Ÿ“œ 2. Hard | Count Inversions | [๐Ÿ“„ MD](./03.Arrays/3.Hard/9.CountInversions.md) | [๐Ÿ’ป CPP](./03.Arrays/3.Hard/9.CountInversions.cpp) |
| ๐Ÿ“œ 2. Hard | Reverse Pairs | [๐Ÿ“„ MD](./03.Arrays/3.Hard/10.ReversePairs.md) | [๐Ÿ’ป CPP](./03.Arrays/3.Hard/10.ReversePairs.cpp) |
| ๐Ÿ“œ 2. Hard | Maximum Product Subarray | [๐Ÿ“„ MD](./03.Arrays/3.Hard/11.MaximumProductSubarray.md) | [๐Ÿ’ป CPP](./03.Arrays/3.Hard/11.MaximumProductSubarray.cpp) |
| ๐Ÿ“œ 2. Hard | Product of Array except Self | [๐Ÿ“„ MD](./03.Arrays/3.Hard/12.ProductOfArrayExceptSelf.md) | [๐Ÿ’ป CPP](./03.Arrays/3.Hard/12.ProductOfArrayExceptSelf.cpp) |

๐Ÿ” Binary Search


| Category | Problem / Algorithm | Explanation | Code |
| ---------------- | ----------------------------------- | ----------------------------------------------------- | ------------------------------------------------------- |
| โ‰๏ธ 3. BS on 1D | Binary Search on Sorted Array | [๐Ÿ“„ MD](./04.Binary_Search/1.BSon1D/1.BinarySearchOnASortedArray.md) | [๐Ÿ’ป CPP](./04.Binary_Search/1.BSon1D/1.BinarySearchOnASortedArray.cpp) |
| โ‰๏ธ 3. BS on 1D | Search Insert Position | [๐Ÿ“„ MD](./04.Binary_Search/1.BSon1D/2.SearchInsertPosition.md) | [๐Ÿ’ป CPP](./04.Binary_Search/1.BSon1D/2.SearchInsertPosition.cpp) |
| โ‰๏ธ 3. BS on 1D | First and Last Occurance in a Sorted Array | [๐Ÿ“„ MD](./04.Binary_Search/1.BSon1D/3.FirstAndLastOccurance.md) | [๐Ÿ’ป CPP](./04.Binary_Search/1.BSon1D/3.FirstAndLastOccurance.cpp) |
| โ‰๏ธ 3. BS on 1D | Search in a Rotated Sorted Array - I | [๐Ÿ“„ MD](./04.Binary_Search/1.BSon1D/4.SearchInRotatedSortedArrayI.md) | [๐Ÿ’ป CPP](./04.Binary_Search/1.BSon1D/4.SearchInRotatedSortedArrayI.cpp) |
| โ‰๏ธ 3. BS on 1D | Search in a Rotated Sorted Array - II | [๐Ÿ“„ MD](./04.Binary_Search/1.BSon1D/5.SearchInRotatedSortedArrayII.md) | [๐Ÿ’ป CPP](./04.Binary_Search/1.BSon1D/5.SearchInRotatedSortedArrayII.cpp) |
| โ‰๏ธ 3. BS on 1D | Minimum in Rotated Sorted Array | [๐Ÿ“„ MD](./04.Binary_Search/1.BSon1D/6.MinimumInRotatedSortedArray.md) | [๐Ÿ’ป CPP](./04.Binary_Search/1.BSon1D/6.MinimumInRotatedSortedArray.cpp) |
| โ‰๏ธ 3. BS on 1D | Single Element in a Sorted Array | [๐Ÿ“„ MD](./04.Binary_Search/1.BSon1D/7.SingleElementInASortedArray.md) | [๐Ÿ’ป CPP](./04.Binary_Search/1.BSon1D/7.SingleElementInASortedArray.cpp) |
| โ‰๏ธ 3. BS on 1D | Find Peak Element - I | [๐Ÿ“„ MD](./04.Binary_Search/1.BSon1D/8.FindPeakElement.md) | [๐Ÿ’ป CPP](./04.Binary_Search/1.BSon1D/8.FindPeakElement.cpp) |
| โ‰๏ธ 3. BS on 1D | Arranging Coins | [๐Ÿ“„ MD](./04.Binary_Search/1.BSon1D/9.ArrangingCoins.md) | [๐Ÿ’ป CPP](./04.Binary_Search/1.BSon1D/9.ArrangingCoins.cpp) |
| โ‰๏ธ 3. BS on 1D | First Bad Version | [๐Ÿ“„ MD](./04.Binary_Search/1.BSon1D/10.FirstBadVersion.md) | [๐Ÿ’ป CPP](./04.Binary_Search/1.BSon1D/10.FirstBadVersion.cpp) |
| | | | | |
| โ€ผ๏ธ 2. BS on Answers | Koko Eating Bananas | [๐Ÿ“„ MD](./04.Binary_Search/2.BSonAnswers/1.KokoEatingBananas.md) | [๐Ÿ’ป CPP](./04.Binary_Search/2.BSonAnswers/1.KokoEatingBananas.cpp) |
| โ€ผ๏ธ 2. BS on Answers | Days to make M Bouquets | [๐Ÿ“„ MD](./04.Binary_Search/2.BSonAnswers/2.DaysToMakeBouquets.md) | [๐Ÿ’ป CPP](./04.Binary_Search/2.BSonAnswers/2.DaysToMakeBouquets.cpp) |
| โ€ผ๏ธ 2. BS on Answers | Smallest Divisor within the Threshold | [๐Ÿ“„ MD](./04.Binary_Search/2.BSonAnswers/3.SmallestDivisorInThreshold.md) | [๐Ÿ’ป CPP](./04.Binary_Search/2.BSonAnswers/3.SmallestDivisorInThreshold.cpp) |
| โ€ผ๏ธ 2. BS on Answers | Capacity to Ship within D Days | [๐Ÿ“„ MD](./04.Binary_Search/2.BSonAnswers/4.CapacityToShipWithinDDays.md) | [๐Ÿ’ป CPP](./04.Binary_Search/2.BSonAnswers/4.CapacityToShipWithinDDays.cpp) |
| โ€ผ๏ธ 2. BS on Answers | Find the K-th Missing Element | [๐Ÿ“„ MD](./04.Binary_Search/2.BSonAnswers/5.FindKthMissingElement.md) | [๐Ÿ’ป CPP](./04.Binary_Search/2.BSonAnswers/5.FindKthMissingElement.cpp) |
| โ€ผ๏ธ 2. BS on Answers | Aggressive Cows | [๐Ÿ“„ MD](./04.Binary_Search/2.BSonAnswers/6.AggressiveCows.md) | [๐Ÿ’ป CPP](./04.Binary_Search/2.BSonAnswers/6.AggressiveCows.cpp) |
| โ€ผ๏ธ 2. BS on Answers | Book Allocation | [๐Ÿ“„ MD](./04.Binary_Search/2.BSonAnswers/7.BookAllocation.md) | [๐Ÿ’ป CPP](./04.Binary_Search/2.BSonAnswers/7.BookAllocation.cpp) |
| โ€ผ๏ธ 2. BS on Answers | Split Array to Largest Sum | [๐Ÿ“„ MD](./04.Binary_Search/2.BSonAnswers/8.SplitArrayLargestSum.md) | [๐Ÿ’ป CPP](./04.Binary_Search/2.BSonAnswers/8.SplitArrayLargestSum.cpp) |
| โ€ผ๏ธ 2. BS on Answers | Minimize Max Distance between Gas Stations | [๐Ÿ“„ MD](./04.Binary_Search/2.BSonAnswers/9.MinimizeMaxDistanceStations.md) | [๐Ÿ’ป CPP](./04.Binary_Search/2.BSonAnswers/9.MinimizeMaxDistanceStations.cpp) |
| โ€ผ๏ธ 2. BS on Answers | Median of Two Sorted Arrays | [๐Ÿ“„ MD](./04.Binary_Search/2.BSonAnswers/10.MedianOfTwoSortedArrays.md) | [๐Ÿ’ป CPP](./04.Binary_Search/2.BSonAnswers/10.MedianOfTwoSortedArrays.cpp) |
| โ€ผ๏ธ 2. BS on Answers | Time Map | [๐Ÿ“„ MD](./04.Binary_Search/2.BSonAnswers/11.TimeMap.md) | [๐Ÿ’ป CPP](./04.Binary_Search/2.BSonAnswers/11.TimeMap.cpp) |
| | | | | |
| โ‰๏ธ 3. BS on 2D | Row with Maximum 1s | [๐Ÿ“„ MD](./04.Binary_Search/3.BSon2D/1.RowWithMaximum1s.md) | [๐Ÿ’ป CPP](./04.Binary_Search/3.BSon2D/1.RowWithMaximum1s.cpp) |
| โ‰๏ธ 3. BS on 2D | Search in a 2D Matrix - I | [๐Ÿ“„ MD](./04.Binary_Search/3.BSon2D/2.SearchInA2DMatrixI.md) | [๐Ÿ’ป CPP](./04.Binary_Search/3.BSon2D/2.SearchInA2DMatrixI.cpp) |
| โ‰๏ธ 3. BS on 2D | Search in a 2D Matrix - II | [๐Ÿ“„ MD](./04.Binary_Search/3.BSon2D/3.SearchInA2DMatrixII.md) | [๐Ÿ’ป CPP](./04.Binary_Search/3.BSon2D/3.SearchInA2DMatrixII.cpp) |
| โ‰๏ธ 3. BS on 2D | Find Peak Element - II | [๐Ÿ“„ MD](./04.Binary_Search/3.BSon2D/4.FindPeakElementII.md) | [๐Ÿ’ป CPP](./04.Binary_Search/3.BSon2D/4.FindPeakElementII.cpp) |

๐Ÿงต Strings


| Category | Problem / Algorithm | Explanation | Code |
| ---------------- | ----------------------------------- | ----------------------------------------------------- | ------------------------------------------------------- |
| ๐Ÿ• Easy | Remove Outer Parenthesis | [๐Ÿ“„ MD](./05.Strings/1.Easy/1.RemoveOuterParanthesis.md) | [๐Ÿ’ป CPP](./05.Strings/1.Easy/1.RemoveOuterParanthesis.cpp) |
| ๐Ÿ• Easy | Largest Odd Number | [๐Ÿ“„ MD](./05.Strings/1.Easy/3.LargestOddNumber.md) | [๐Ÿ’ป CPP](./05.Strings/1.Easy/3.LargestOddNumber.cpp) |
| ๐Ÿ• Easy | Longest Common Prefix | [๐Ÿ“„ MD](./05.Strings/1.Easy/4.LongestCommonPrefix.md) | [๐Ÿ’ป CPP](./05.Strings/1.Easy/4.LongestCommonPrefix.cpp) |
| ๐Ÿ• Easy | Isomorphic Strings | [๐Ÿ“„ MD](./05.Strings/1.Easy/5.IsomorphicStrings.md) | [๐Ÿ’ป CPP](./05.Strings/1.Easy/5.IsomorphicStrings.cpp) |
| ๐Ÿ• Easy | Rotate String | [๐Ÿ“„ MD](./05.Strings/1.Easy/6.RotateString.md) | [๐Ÿ’ป CPP](./05.Strings/1.Easy/6.RotateString.cpp) |
| ๐Ÿ• Easy | Is Anagram ? | [๐Ÿ“„ MD](./05.Strings/1.Easy/7.IsAnagram.md) | [๐Ÿ’ป CPP](./05.Strings/1.Easy/7.IsAnagram.cpp) |
| ๐Ÿ• Easy | Valid Palindrome | [๐Ÿ“„ MD](./05.Strings/1.Easy/8.ValidPalindrome.md) | [๐Ÿ’ป CPP](./05.Strings/1.Easy/8.ValidPalindrome.cpp) |
| | | | | |
| ๐Ÿˆ Medium | Frequency Sort | [๐Ÿ“„ MD](./05.Strings/2.Medium/1.FrequencySort.md) | [๐Ÿ’ป CPP](./05.Strings/2.Medium/1.FrequencySort.cpp) |
| ๐Ÿˆ Medium | Max Depth of Parenthesis | [๐Ÿ“„ MD](./05.Strings/2.Medium/2.MaxDepthOfParenthesis.md) | [๐Ÿ’ป CPP](./05.Strings/2.Medium/2.MaxDepthOfParenthesis.cpp) |
| ๐Ÿˆ Medium | Roman to Integer | [๐Ÿ“„ MD](./05.Strings/2.Medium/3.RomanToInteger.md) | [๐Ÿ’ป CPP](./05.Strings/2.Medium/3.RomanToInteger.cpp) |
| ๐Ÿˆ Medium | String to Integer (ATOI) | [๐Ÿ“„ MD](./05.Strings/2.Medium/4.ATOI.md) | [๐Ÿ’ป CPP](./05.Strings/2.Medium/4.ATOI.cpp) |
| ๐Ÿˆ Medium | Longest Palindrome Substrings | [๐Ÿ“„ MD](./05.Strings/2.Medium/5.LongestPalindromeSubstring.md) | [๐Ÿ’ป CPP](./05.Strings/2.Medium/5.LongestPalindromeSubstring.cpp) |
| ๐Ÿˆ Medium | Sum of Beauty of Substrings | [๐Ÿ“„ MD](./05.Strings/2.Medium/6.SumOfBeautyOfSubstrings.md) | [๐Ÿ’ป CPP](./05.Strings/2.Medium/6.SumOfBeautyOfSubstrings.cpp) |
| ๐Ÿˆ Medium | Reverse Words in a String | [๐Ÿ“„ MD](./05.Strings/2.Medium/7.ReverseWords.md) | [๐Ÿ’ป CPP](./05.Strings/2.Medium/7.ReverseWords.cpp) |
| ๐Ÿˆ Medium | Group Anagrams | [๐Ÿ“„ MD](./05.Strings/2.Medium/9.GroupAnagrams.md) | [๐Ÿ’ป CPP](./05.Strings/2.Medium/9.GroupAnagrams.cpp) |
| ๐Ÿˆ Medium | Longest Substring without Repeating Char | [๐Ÿ“„ MD](./05.Strings/2.Medium/9.LongestSubstringWithoutRepeatingCharacters.md) | [๐Ÿ’ป CPP](./05.Strings/2.Medium/9.LongestSubstringWithoutRepeatingCharacters.cpp) |

๐Ÿ”— Linked Lists


| Category | Problem / Algorithm | Explanation | Code |
| ---------------- | ----------------------------------- | ----------------------------------------------------- | ------------------------------------------------------- |
| โžก๏ธ Singly LL | Linked List Constructors | [๐Ÿ“„ MD](./06.Linked_List/1.SinglyLinkedList/README.md) | [๐Ÿ’ป CPP](./06.Linked_List/1.SinglyLinkedList/01.1.LLBasic.cpp) |
| โžก๏ธ Singly LL | Array to Linked List | [๐Ÿ“„ MD](./06.Linked_List/1.SinglyLinkedList/README.md) | [๐Ÿ’ป CPP](./06.Linked_List/1.SinglyLinkedList/01.2.Array2LL.cpp) |
| โžก๏ธ Singly LL | Insertion at Head | [๐Ÿ“„ MD](./06.Linked_List/1.SinglyLinkedList/README.md) | [๐Ÿ’ป CPP](./06.Linked_List/1.SinglyLinkedList/02.1.InsertionAtHead.cpp) |
| โžก๏ธ Singly LL | Insertion at Tail | [๐Ÿ“„ MD](./06.Linked_List/1.SinglyLinkedList/README.md) | [๐Ÿ’ป CPP](./06.Linked_List/1.SinglyLinkedList/02.2.InsertionAtTail.cpp) |
| โžก๏ธ Singly LL | Insertion at K | [๐Ÿ“„ MD](./06.Linked_List/1.SinglyLinkedList/README.md) | [๐Ÿ’ป CPP](./06.Linked_List/1.SinglyLinkedList/03.3.DeletionatK.cpp) |
| โžก๏ธ Singly LL | Deletion from Head | [๐Ÿ“„ MD](./06.Linked_List/1.SinglyLinkedList/README.md) | [๐Ÿ’ป CPP](./06.Linked_List/1.SinglyLinkedList/03.1.DeletionFromHead.cpp) |
| โžก๏ธ Singly LL | Deletion from Tail | [๐Ÿ“„ MD](./06.Linked_List/1.SinglyLinkedList/README.md) | [๐Ÿ’ป CPP](./06.Linked_List/1.SinglyLinkedList/03.2.DeletionFromTail.cpp) |
| โžก๏ธ Singly LL | Deletion from K | [๐Ÿ“„ MD](./06.Linked_List/1.SinglyLinkedList/README.md) | [๐Ÿ’ป CPP](./06.Linked_List/1.SinglyLinkedList/03.3.DeletionatK.cpp) |
| โžก๏ธ Singly LL | Length of Linked List | [๐Ÿ“„ MD](./06.Linked_List/1.SinglyLinkedList/README.md) | [๐Ÿ’ป CPP](./06.Linked_List/1.SinglyLinkedList/04.LLLength.cpp) |
| โžก๏ธ Singly LL | Search K in Linked List | [๐Ÿ“„ MD](./06.Linked_List/1.SinglyLinkedList/README.md) | [๐Ÿ’ป CPP](./06.Linked_List/1.SinglyLinkedList/05.SearchInLL.cpp) |
| | | | |
| ๐Ÿ”€ Doubly LL | Array to DLL | [๐Ÿ“„ MD](./06.Linked_List/2.DoublyLinkedList/README.md) | [๐Ÿ’ป CPP](./06.Linked_List/2.DoublyLinkedList/01.Arr2DLL.cpp) |
| ๐Ÿ”€ Doubly LL | Insertion at Head | [๐Ÿ“„ MD](./06.Linked_List/2.DoublyLinkedList/README.md) | [๐Ÿ’ป CPP](./06.Linked_List/2.DoublyLinkedList/03.1.InsertionAtHead.cpp) |
| ๐Ÿ”€ Doubly LL | Insertion at Tail | [๐Ÿ“„ MD](./06.Linked_List/2.DoublyLinkedList/README.md) | [๐Ÿ’ป CPP](./06.Linked_List/2.DoublyLinkedList/03.2.InsertionAtTail.cpp) |
| ๐Ÿ”€ Doubly LL | Insertion at K | [๐Ÿ“„ MD](./06.Linked_List/2.DoublyLinkedList/README.md) | [๐Ÿ’ป CPP](./06.Linked_List/2.DoublyLinkedList/03.3.InsertAtK.cpp) |
| ๐Ÿ”€ Doubly LL | Deletion from Head | [๐Ÿ“„ MD](./06.Linked_List/2.DoublyLinkedList/README.md) | [๐Ÿ’ป CPP](./06.Linked_List/2.DoublyLinkedList/02.1.DeletionFromHead.cpp) |
| ๐Ÿ”€ Doubly LL | Deletion from Tail | [๐Ÿ“„ MD](./06.Linked_List/2.DoublyLinkedList/README.md) | [๐Ÿ’ป CPP](./06.Linked_List/2.DoublyLinkedList/02.2.DeletionFromTail.cpp) |
| ๐Ÿ”€ Doubly LL | Deletion at K | [๐Ÿ“„ MD](./06.Linked_List/2.DoublyLinkedList/README.md) | [๐Ÿ’ป CPP](./06.Linked_List/2.DoublyLinkedList/02.3.DeletionFromK.cpp) |
| ๐Ÿ”€ Doubly LL | Reverse a Doubly LL | [๐Ÿ“„ MD](./06.Linked_List/2.DoublyLinkedList/README.md) | [๐Ÿ’ป CPP](./06.Linked_List/2.DoublyLinkedList/04.ReverseDLL.cpp) |
| | | | |
| ๐ŸŽฏ Medium Singly LL | Find the middle of a LL | [๐Ÿ“„ MD](./06.Linked_List/3.MediumLL/01.MiddleOfLL.md) | [๐Ÿ’ป CPP](./06.Linked_List/3.MediumLL/01.MiddleOfLL.cpp) |
| ๐ŸŽฏ Medium Singly LL | Reverse a LL (Iterative) | [๐Ÿ“„ MD](./06.Linked_List/3.MediumLL/02.ReverseLLIterative.md) | [๐Ÿ’ป CPP](./06.Linked_List/3.MediumLL/02.ReverseLLIterative.cpp) |
| ๐ŸŽฏ Medium Singly LL | Reverse a LL (Recursive) | [๐Ÿ“„ MD](./06.Linked_List/3.MediumLL/03.ReverseLLRecursive.md) | [๐Ÿ’ป CPP](./06.Linked_List/3.MediumLL/03.ReverseLLRecursive.cpp) |
| ๐ŸŽฏ Medium Singly LL | Detect a Cyclic Linked List | [๐Ÿ“„ MD](./06.Linked_List/3.MediumLL/04.DetectALoop.md) | [๐Ÿ’ป CPP](./06.Linked_List/3.MediumLL/04.DetectALoop.cpp) |
| ๐ŸŽฏ Medium Singly LL | Find the start of the Loop | [๐Ÿ“„ MD](./06.Linked_List/3.MediumLL/05.StartingPointInLoop.md) | [๐Ÿ’ป CPP](./06.Linked_List/3.MediumLL/05.StartingPointInLoop.cpp) |
| ๐ŸŽฏ Medium Singly LL | Find the length of the Loop | [๐Ÿ“„ MD](./06.Linked_List/3.MediumLL/06.LengthOfLoop.md) | [๐Ÿ’ป CPP](./06.Linked_List/3.MediumLL/06.LengthOfLoop.cpp) |
| ๐ŸŽฏ Medium Singly LL | Palindrome Linked List | [๐Ÿ“„ MD](./06.Linked_List/3.MediumLL/07.PalindromeLL.md) | [๐Ÿ’ป CPP](./06.Linked_List/3.MediumLL/07.PalindromeLL.cpp) |
| ๐ŸŽฏ Medium Singly LL | Odd Even Linked List | [๐Ÿ“„ MD](./06.Linked_List/3.MediumLL/08.OddEvenLL.md) | [๐Ÿ’ป CPP](./06.Linked_List/3.MediumLL/08.OddEvenLL.cpp) |
| ๐ŸŽฏ Medium Singly LL | Delete Nth Node from Back | [๐Ÿ“„ MD](./06.Linked_List/3.MediumLL/09.DeleteNthNodeFromTheBack.md) | [๐Ÿ’ป CPP](./06.Linked_List/3.MediumLL/09.DeleteNthNodeFromTheBack.cpp) |
| ๐ŸŽฏ Medium Singly LL | Delete Middle Note | [๐Ÿ“„ MD](./06.Linked_List/3.MediumLL/10.DeleteMiddleNote.md) | [๐Ÿ’ป CPP](./06.Linked_List/3.MediumLL/10.DeleteMiddleNote.cpp) |
| ๐ŸŽฏ Medium Singly LL | Sort Linked List | [๐Ÿ“„ MD](./06.Linked_List/3.MediumLL/11.SortLinkedList.md) | [๐Ÿ’ป CPP](./06.Linked_List/3.MediumLL/11.SortLinkedList.cpp) |
| ๐ŸŽฏ Medium Singly LL | Intersection of Two LLs | [๐Ÿ“„ MD](./06.Linked_List/3.MediumLL/12.IntersectionOfLLs.md) | [๐Ÿ’ป CPP](./06.Linked_List/3.MediumLL/12.IntersectionOfLLs.cpp) |
| ๐ŸŽฏ Medium Singly LL | Add 1 to a number in LL | [๐Ÿ“„ MD](./06.Linked_List/3.MediumLL/13.Add1toLL.md) | [๐Ÿ’ป CPP](./06.Linked_List/3.MediumLL/13.Add1toLL.cpp) |
| ๐ŸŽฏ Medium Singly LL | Add two numbers in LL | [๐Ÿ“„ MD](./06.Linked_List/3.MediumLL/14.AddTwoNummbersLL.md) | [๐Ÿ’ป CPP](./06.Linked_List/3.MediumLL/14.AddTwoNummbersLL.cpp) |
| ๐ŸŽฏ Medium Singly LL | Swap Pairs | [๐Ÿ“„ MD](./06.Linked_List/3.MediumLL//15.SwapPairs.md) | [๐Ÿ’ป CPP](./06.Linked_List/3.MediumLL/15.SwapPairs.cpp) |
| ๐ŸŽฏ Medium Singly LL | Merge Inbetween Zeros | [๐Ÿ“„ MD](./06.Linked_List/3.MediumLL/16.MergeInbetweenZeros.md) | [๐Ÿ’ป CPP](./06.Linked_List/3.MediumLL/16.MergeInbetweenZeros.cpp) |
| ๐ŸŽฏ Medium Singly LL | Delete Nodes present in an Array | [๐Ÿ“„ MD](./06.Linked_List/3.MediumLL/17.DeleteNodesPresentInArray.md) | [๐Ÿ’ป CPP](./06.Linked_List/3.MediumLL/17.DeleteNodesPresentInArray.cpp) |
| | | | |
| ๐ŸŒ€ Medium Doubly LL | Delete all occurance of Key | [๐Ÿ“„ MD](./06.Linked_List/4.MediumDLL/01.DeleteAllKeys.md) | [๐Ÿ’ป CPP](./06.Linked_List/4.MediumDLL/01.DeleteAllKeys.cpp) |
| ๐ŸŒ€ Medium Doubly LL | Pairs with given Sum in DLL | [๐Ÿ“„ MD](./06.Linked_List/4.MediumDLL/02.PairsWithGivenSum.md) | [๐Ÿ’ป CPP](./06.Linked_List/4.MediumDLL/02.PairsWithGivenSum.cpp) |
| ๐ŸŒ€ Medium Doubly LL | Remove Duplicates from a DLL | [๐Ÿ“„ MD](./06.Linked_List/4.MediumDLL/03.RemoveDuplicates.md) | [๐Ÿ’ป CPP](./06.Linked_List/4.MediumDLL/03.RemoveDuplicates.cpp) |
| | | | |
| ๐Ÿ’€ Hard Singly LL | Reverse LL in a Group | [๐Ÿ“„ MD](./06.Linked_List/5.HardLL/01.ReveseLLGroup.md) | [๐Ÿ’ป CPP](./06.Linked_List/5.HardLL/01.ReveseLLGroup.cpp) |
| ๐Ÿ’€ Hard Singly LL | Rotate a LL | [๐Ÿ“„ MD](./06.Linked_List/5.HardLL/02.RotateList.md) | [๐Ÿ’ป CPP](./06.Linked_List/5.HardLL/02.RotateList.cpp) |
| ๐Ÿ’€ Hard Singly LL | Merge 2 Sorted LLs | [๐Ÿ“„ MD](./06.Linked_List/5.HardLL/03.MergeTwoSortedLL.md) | [๐Ÿ’ป CPP](./06.Linked_List/5.HardLL/03.MergeTwoSortedLL.cpp) |
| ๐Ÿ’€ Hard Singly LL | Merge K sorted LLs | [๐Ÿ“„ MD](./06.Linked_List/5.HardLL/04.MergeKSortedLists.md) | [๐Ÿ’ป CPP](./06.Linked_List/5.HardLL/04.MergeKSortedLists.cpp) |
| ๐Ÿ’€ Hard Singly LL | Clone a LL | [๐Ÿ“„ MD](./06.Linked_List/5.HardLL/05.CloneLL.md) | [๐Ÿ’ป CPP](./06.Linked_List/5.HardLL/05.CloneLL.cpp) |
| ๐Ÿ’€ Hard Singly LL | Browser History | [๐Ÿ“„ MD](./06.Linked_List/5.HardLL/06.BrowserHistory.md) | [๐Ÿ’ป CPP](./06.Linked_List/5.HardLL/06.BrowserHistory.cpp) |

๐Ÿ” Recursion


| Category | Problem / Algorithm | Explanation | Code |
| ---------------- | ----------------------------------- | ----------------------------------------------------- | ------------------------------------------------------- |
| ๐Ÿ™ƒ Basics | AOTI | [๐Ÿ“„ MD](./07.Recursion/1.Basics/01.AOTI.md) | [๐Ÿ’ป CPP](./07.Recursion/1.Basics/01.AOTI.cpp) |
| ๐Ÿ™ƒ Basics | Pow (x, n) | [๐Ÿ“„ MD](./07.Recursion/1.Basics/) | [๐Ÿ’ป CPP](./07.Recursion/1.Basics/02.Pow.cpp) |
| ๐Ÿ™ƒ Basics | Good Numbers | [๐Ÿ“„ MD](public/images/under_construction.png) | [๐Ÿ’ป CPP](public/images/under_construction.png) |
| ๐Ÿ™ƒ Basics | Sort Stack | [๐Ÿ“„ MD](public/images/under_construction.png) | [๐Ÿ’ป CPP](public/images/under_construction.png) |
| ๐Ÿ™ƒ Basics | Reverse Stack | [๐Ÿ“„ MD](./07.Recursion/1.Basics/) | [๐Ÿ’ป CPP](./07.Recursion/1.Basics/04.ReverseStack.cpp) |
| |
| ๐Ÿซจ Subsquences | Generate Binary Strings | [๐Ÿ“„ MD](public/images/under_construction.png) | [๐Ÿ’ป CPP](public/images/under_construction.png) |
| ๐Ÿซจ Subsquences | Generate Paranthesis | [๐Ÿ“„ MD](./07.Recursion/2.Subsequence/02.GenerateParanthesis.md) | [๐Ÿ’ป CPP](./07.Recursion/2.Subsequence/02.GenerateParanthesis.cpp) |
| ๐Ÿซจ Subsquences | Power Set | [๐Ÿ“„ MD](public/images/under_construction.png) | [๐Ÿ’ป CPP](public/images/under_construction.png) |
| ๐Ÿซจ Subsquences | Subsequences with Sum K | [๐Ÿ“„ MD](public/images/under_construction.png) | [๐Ÿ’ป CPP](public/images/under_construction.png) |
| ๐Ÿซจ Subsquences | Subsequences with Sum K - II | [๐Ÿ“„ MD](public/images/under_construction.png) | [๐Ÿ’ป CPP](public/images/under_construction.png) |
| ๐Ÿซจ Subsquences | Combination Sum | [๐Ÿ“„ MD](./07.Recursion/2.Subsequence/07.CombinationSum.md) | [๐Ÿ’ป CPP](./07.Recursion/2.Subsequence/07.CombinationSum.cpp) |
| ๐Ÿซจ Subsquences | Combination Sum - II | [๐Ÿ“„ MD](./07.Recursion/2.Subsequence/08.CombinationSumII.md) | [๐Ÿ’ป CPP](./07.Recursion/2.Subsequence/08.CombinationSumII.cpp) |
| ๐Ÿซจ Subsquences | Subsets | [๐Ÿ“„ MD](./07.Recursion/2.Subsequence/09.SubsetSum.md) | [๐Ÿ’ป CPP](./07.Recursion/2.Subsequence/09.SubsetSum.cpp) |
| ๐Ÿซจ Subsquences | Subsets - II | [๐Ÿ“„ MD](./07.Recursion/2.Subsequence/10.SubsetSumII.md) | [๐Ÿ’ป CPP](./07.Recursion/2.Subsequence/10.SubsetSumII.cpp) |
| ๐Ÿซจ Subsquences | Combination Sum - III | [๐Ÿ“„ MD](./07.Recursion/2.Subsequence/09.SubsetSum.md) | [๐Ÿ’ป CPP](./07.Recursion/2.Subsequence/10.SubsetSumII.cpp) |
| ๐Ÿซจ Subsquences | Phone Number Combination | [๐Ÿ“„ MD](public/images/under_construction.png) | [๐Ÿ’ป CPP](public/images/under_construction.png) |
| ๐Ÿซจ Subsquences | Permutations of a String | [๐Ÿ“„ MD](./07.Recursion/2.Subsequence/13.PermutaionsOfAString.md) | [๐Ÿ’ป CPP](./07.Recursion/2.Subsequence/13.PermutaionsOfAString.cpp) |
| |
| ๐Ÿค  Hard | Palindrome Partioning | [๐Ÿ“„ MD](./07.Recursion/3.Hard/01.PalindromePartitioning.md) | [๐Ÿ’ป CPP](./07.Recursion/3.Hard/01.PalindromePartitioning.cpp) |

๐Ÿ“ฆ Stack and Queue


| Category | Problem / Algorithm | Explanation | Code |
| ---------------- | ----------------------------------- | ----------------------------------------------------- | ------------------------------------------------------- |
| ๐ŸŽˆ Basics | Implement Stack Using Queue | [๐Ÿ“„ MD](./09.Stack_N_Queue/01.Basics/01.ImplementStackUsingQueue.md) | [๐Ÿ’ป CPP](./09.Stack_N_Queue/01.Basics/01.ImplementStackUsingQueue.cpp) |
| ๐ŸŽˆ Basics | Implement Queue Using Stacks | [๐Ÿ“„ MD](./09.Stack_N_Queue/01.Basics/02.ImplementQueueUsingStacks.md) | [๐Ÿ’ป CPP](./09.Stack_N_Queue/01.Basics/02.ImplementQueueUsingStacks.cpp) |
| ๐ŸŽˆ Basics | Valid Parenthesis | [๐Ÿ“„ MD](./09.Stack_N_Queue/01.Basics/03.ValidParanthesis.md) | [๐Ÿ’ป CPP](./09.Stack_N_Queue/01.Basics/03.ValidParanthesis.cpp) |
| ๐ŸŽˆ Basics | Implement Min-Stack | [๐Ÿ“„ MD](./09.Stack_N_Queue/01.Basics) | [๐Ÿ’ป CPP](./09.Stack_N_Queue/01.Basics) |
| |
| ๐Ÿงจ Expressions | Infix 2 Postfix | [๐Ÿ“„ MD](./09.Stack_N_Queue/02.Prefix_Postfix_Infix/01.Infix2Postfix.md) | [๐Ÿ’ป CPP](./09.Stack_N_Queue/02.Prefix_Postfix_Infix/01.Infix2Postfix.cpp) |
| ๐Ÿงจ Expressions | Infix 2 Prefix | [๐Ÿ“„ MD](./09.Stack_N_Queue/02.Prefix_Postfix_Infix/02.Infix2Prefix.md) | [๐Ÿ’ป CPP](./09.Stack_N_Queue/02.Prefix_Postfix_Infix/02.Infix2Prefix.cpp) |
| ๐Ÿงจ Expressions | Postfix 2 Infix | [๐Ÿ“„ MD](./09.Stack_N_Queue/02.Prefix_Postfix_Infix/03.Postfix2Infix.md) | [๐Ÿ’ป CPP](./09.Stack_N_Queue/02.Prefix_Postfix_Infix/03.Postfix2Infix.md) |
| ๐Ÿงจ Expressions | Prefix 2 Infix | [๐Ÿ“„ MD](./09.Stack_N_Queue/02.Prefix_Postfix_Infix/04.Prefix2Infix.md) | [๐Ÿ’ป CPP](./09.Stack_N_Queue/02.Prefix_Postfix_Infix/04.Prefix2Infix.cpp) |
| ๐Ÿงจ Expressions | Postfix 2 Prefix | [๐Ÿ“„ MD](./09.Stack_N_Queue/02.Prefix_Postfix_Infix/05.Postfix2Prefix.md) | [๐Ÿ’ป CPP](./09.Stack_N_Queue/02.Prefix_Postfix_Infix/05.Postfix2Prefix.cpp) |
| ๐Ÿงจ Expressions | Prefix 2 Postfix | [๐Ÿ“„ MD](./09.Stack_N_Queue/02.Prefix_Postfix_Infix/06.Prefix2Postfix.md) | [๐Ÿ’ป CPP](./09.Stack_N_Queue/02.Prefix_Postfix_Infix/06.Prefix2Postfix.cpp) |
| |
| ๐ŸŽ† Monotonic DS | Next Greater Element (LC) | [๐Ÿ“„ MD](09.Stack_N_Queue/03.MonotonicDS/01.NextGreaterElement.md) | [๐Ÿ’ป CPP](09.Stack_N_Queue/03.MonotonicDS/01.NextGreaterElement.cpp) |
| ๐ŸŽ† Monotonic DS | Next Greater Element II | [๐Ÿ“„ MD](09.Stack_N_Queue/03.MonotonicDS/02.NextGreaterElementII.md) | [๐Ÿ’ป CPP](09.Stack_N_Queue/03.MonotonicDS/02.NextGreaterElementII.cpp) |
| ๐ŸŽ† Monotonic DS | Next Smaller Element | [๐Ÿ“„ MD](09.Stack_N_Queue/03.MonotonicDS/03.NextSmallerElement.md) | [๐Ÿ’ป CPP](09.Stack_N_Queue/03.MonotonicDS/03.NextSmallerElement.cpp) |
| ๐ŸŽ† Monotonic DS | NGE to Right | [๐Ÿ“„ MD](09.Stack_N_Queue/03.MonotonicDS/04.NGEsToRight.md) | [๐Ÿ’ป CPP](09.Stack_N_Queue/03.MonotonicDS/04.NGEsToRight.cpp) |
| ๐ŸŽ† Monotonic DS | Trapping Rainwater | [๐Ÿ“„ MD](09.Stack_N_Queue/03.MonotonicDS/05.TrappingRainwater.md) | [๐Ÿ’ป CPP](09.Stack_N_Queue/03.MonotonicDS/05.TrappingRainwater.cpp) |
| ๐ŸŽ† Monotonic DS | Sum of Subarray Minimums | [๐Ÿ“„ MD](09.Stack_N_Queue/03.MonotonicDS/06.SumofSubarrayMinimums.md) | [๐Ÿ’ป CPP](09.Stack_N_Queue/03.MonotonicDS/06.SumofSubarrayMinimums.cpp) |
| ๐ŸŽ† Monotonic DS | Astroid Collisions | [๐Ÿ“„ MD](09.Stack_N_Queue/03.MonotonicDS/07.AsteroidCollision.md) | [๐Ÿ’ป CPP](09.Stack_N_Queue/03.MonotonicDS/07.AsteroidCollision.cpp) |
| ๐ŸŽ† Monotonic DS | Remove K Digits | [๐Ÿ“„ MD](09.Stack_N_Queue/03.MonotonicDS/08.RemoveKDigits.md) | [๐Ÿ’ป CPP](09.Stack_N_Queue/03.MonotonicDS/08.RemoveKDigits.cpp) |
| ๐ŸŽ† Monotonic DS | Largest Rectangle in Histogram | [๐Ÿ“„ MD](09.Stack_N_Queue/03.MonotonicDS/09.LargestRectangleInHistogram.md) | [๐Ÿ’ป CPP](09.Stack_N_Queue/03.MonotonicDS/09.LargestRectangleInHistogram.cpp) |
| ๐ŸŽ† Monotonic DS | Maximum Rectangle | [๐Ÿ“„ MD](09.Stack_N_Queue/03.MonotonicDS/10.MaximumRectangle.md) | [๐Ÿ’ป CPP](09.Stack_N_Queue/03.MonotonicDS/10.MaximumRectangle.cpp) |
| |
| ๐ŸŽƒ Advanced | Sliding Window Maximum | [๐Ÿ“„ MD](09.Stack_N_Queue/04.Advanced/01.SlidingWindowMaximum.md) | [๐Ÿ’ป CPP](09.Stack_N_Queue/04.Advanced/01.SlidingWindowMaximum.cpp) |
| ๐ŸŽƒ Advanced | Online Stock Span | [๐Ÿ“„ MD](09.Stack_N_Queue/04.Advanced/02.OnlineStockSpan.md) | [๐Ÿ’ป CPP](09.Stack_N_Queue/04.Advanced/02.OnlineStockSpan.cpp) |
| ๐ŸŽƒ Advanced | The Celebrity Problem | [๐Ÿ“„ MD](09.Stack_N_Queue/04.Advanced/03.TheCelebrityProblem.md) | [๐Ÿ’ป CPP](09.Stack_N_Queue/04.Advanced/03.TheCelebrityProblem.cpp) |
| ๐ŸŽƒ Advanced | LRU Cache | [๐Ÿ“„ MD](09.Stack_N_Queue/04.Advanced/04.LRUCache.md) | [๐Ÿ’ป CPP](09.Stack_N_Queue/04.Advanced/04.LRUCache.cpp) |
| ๐ŸŽƒ Advanced | LFU Cache | [๐Ÿ“„ MD](09.Stack_N_Queue/04.Advanced/05.LFUCache.md) | [๐Ÿ’ป CPP](09.Stack_N_Queue/04.Advanced/05.LFUCache.cpp) |

ใ€ฝ๏ธ Two Pointer and Sliding Window


| Category | Problem / Algorithm | Explanation | Code |
| ---------------- | ----------------------------------- | ----------------------------------------------------- | ------------------------------------------------------- |
| ๐ŸŽฒ Medium | Longest Substring without Repeating Characters | [๐Ÿ“„ MD](10.TwoPointer_N_SlidingWindow/01.Medium/01.LongestSubStrWoRepeatingChar.md) | [๐Ÿ’ป CPP](10.TwoPointer_N_SlidingWindow/01.Medium/01.LongestSubStrWoRepeatingChar.cpp) |
| ๐ŸŽฒ Medium | Max Consecutive Ones III | [๐Ÿ“„ MD](10.TwoPointer_N_SlidingWindow/01.Medium/02.MaxConsecutiveOnesIII.md) | [๐Ÿ’ป CPP](10.TwoPointer_N_SlidingWindow/01.Medium/02.MaxConsecutiveOnesIII.cpp) |
| ๐ŸŽฒ Medium | Fruits in a Basket | [๐Ÿ“„ MD](10.TwoPointer_N_SlidingWindow/01.Medium/03.FruitsInABasket.md) | [๐Ÿ’ป CPP](10.TwoPointer_N_SlidingWindow/01.Medium/03.FruitsInABasket.cpp) |
| ๐ŸŽฒ Medium | Longest Repeating Character Replacement | [๐Ÿ“„ MD](10.TwoPointer_N_SlidingWindow/01.Medium/04.LongestRepeatingCharacterReplacement.md) | [๐Ÿ’ป CPP](10.TwoPointer_N_SlidingWindow/01.Medium/04.LongestRepeatingCharacterReplacement.cpp) |
| ๐ŸŽฒ Medium | Binary Subarray with Sum K | [๐Ÿ“„ MD](10.TwoPointer_N_SlidingWindow/01.Medium/05.BinarySubarraysWSumK.md) | [๐Ÿ’ป CPP](10.TwoPointer_N_SlidingWindow/01.Medium/05.BinarySubarraysWSumK.cpp) |
| ๐ŸŽฒ Medium | Subarrays that are Nice | [๐Ÿ“„ MD](10.TwoPointer_N_SlidingWindow/01.Medium/06.NiceSubArrays.md) | [๐Ÿ’ป CPP](10.TwoPointer_N_SlidingWindow/01.Medium/06.NiceSubArrays.cpp) |
| |
| ๐Ÿงฐ Hard | Substring w/ K Distinct Characters | [๐Ÿ“„ MD](10.TwoPointer_N_SlidingWindow/02.Hard/01.SubstringWithKDistinctChars.md) | [๐Ÿ’ป CPP](10.TwoPointer_N_SlidingWindow/02.Hard/01.SubstringWithKDistinctChars.cpp) |
| ๐Ÿงฐ Hard | Substring w/ K Different Characters | [๐Ÿ“„ MD](10.TwoPointer_N_SlidingWindow/02.Hard/02.SubstringWithKDiffInt.md) | [๐Ÿ’ป CPP](10.TwoPointer_N_SlidingWindow/02.Hard/02.SubstringWithKDiffInt.cpp) |
| ๐Ÿงฐ Hard | Minimum Window Substring | [๐Ÿ“„ MD](10.TwoPointer_N_SlidingWindow/02.Hard/03.MinimumWindowSubstring.md) | [๐Ÿ’ป CPP](10.TwoPointer_N_SlidingWindow/02.Hard/03.MinimumWindowSubstring.cpp) |

๐Ÿ—ป Heaps

| Category | Problem / Algorithm | Explanation | Code |
| ---------------- | ----------------------------------- | ----------------------------------------------------- | ------------------------------------------------------- |
| ๐ŸŽด Basics | About Priority Queues | [๐Ÿ“„ MD](11.Heaps/01.Basics/README.md) | - |
| ๐ŸŽด Basics | Binary Min Heap | [๐Ÿ“„ MD](11.Heaps/01.Basics/01.BinaryMinHeap.md) | [๐Ÿ’ป CPP](11.Heaps/01.Basics/01.BinaryMinHeap.cpp) |
| ๐ŸŽด Basics | Binary max Heap | [๐Ÿ“„ MD](11.Heaps/01.Basics/02.BinaryMaxHeap.md) | [๐Ÿ’ป CPP](11.Heaps/01.Basics/02.BinaryMaxHeap.cpp) |
| ๐ŸŽด Basics | Is Array a Min Heap | [๐Ÿ“„ MD](11.Heaps/01.Basics/03.IsArrayMinHeap.md) | [๐Ÿ’ป CPP](11.Heaps/01.Basics/03.IsArrayMinHeap.cpp) |
| ๐ŸŽด Basics | Min Heap 2 Max Heap | [๐Ÿ“„ MD](11.Heaps/01.Basics/04.MinHeap2MaxHeap.md) | [๐Ÿ’ป CPP](11.Heaps/01.Basics/04.MinHeap2MaxHeap.cpp) |
| |
| ๐Ÿ€„ Medium | Kth Largest Element | [๐Ÿ“„ MD](11.Heaps/02.Medium/01.KthLargestElement.md) | [๐Ÿ’ป CPP](11.Heaps/02.Medium/01.KthLargestElement.cpp) |
| ๐Ÿ€„ Medium | Kth Smallest Element | [๐Ÿ“„ MD](11.Heaps/02.Medium/02.KthSmallestElement.md) | [๐Ÿ’ป CPP](11.Heaps/02.Medium/02.KthSmallestElement.cpp) |
| ๐Ÿ€„ Medium | Sort Almost Sorted Array | [๐Ÿ“„ MD](11.Heaps/02.Medium/03.SortKSortedArray.md) | [๐Ÿ’ป CPP](11.Heaps/02.Medium/03.SortKSortedArray.cpp) |
| ๐Ÿ€„ Medium | Task Scheduler | [๐Ÿ“„ MD](11.Heaps/02.Medium/04.TaskScheduler.md) | [๐Ÿ’ป CPP](11.Heaps/02.Medium/04.TaskScheduler.cpp) |
| |
| ๐Ÿƒ Hard | Design Twitter | [๐Ÿ“„ MD](11.Heaps/03.Hard/01.DesignTwitter.md) | [๐Ÿ’ป CPP](11.Heaps/03.Hard/01.DesignTwitter.cpp) |
| ๐Ÿƒ Hard | Connect Sticks | [๐Ÿ“„ MD](11.Heaps/03.Hard/02.MinCostToconnectStricks.md) | [๐Ÿ’ป CPP](11.Heaps/03.Hard/02.MinCostToConnectSticks.cpp) |
| ๐Ÿƒ Hard | Kth Largest in a Stream | [๐Ÿ“„ MD](11.Heaps/03.Hard/03.KthLargestElementInAStream.md) | [๐Ÿ’ป CPP](11.Heaps/03.Hard/03.KthLargestElementInAStream.cpp) |
| ๐Ÿƒ Hard | Max Sum Combination | [๐Ÿ“„ MD](11.Heaps/03.Hard/04.MaximumSumCombination.md) | [๐Ÿ’ป CPP](11.Heaps/03.Hard/04.MaximumSumCombination.cpp) |
| ๐Ÿƒ Hard | Median in a Data Stream | [๐Ÿ“„ MD](11.Heaps/03.Hard/05.MedianInDataStream.md) | [๐Ÿ’ป CPP](11.Heaps/03.Hard/05.MedianInDataStream.cpp) |
| ๐Ÿƒ Hard | K Frequent Elements | [๐Ÿ“„ MD](11.Heaps/03.Hard/06.KMostFrequent.md) | [๐Ÿ’ป CPP](11.Heaps/03.Hard/06.KMostFrequent.cpp) |


๐Ÿค‘ Greedy Algorithm

| Category | Problem / Algorithm | Explanation | Code |
| ---------------- | ----------------------------------- | ----------------------------------------------------- | ------------------------------------------------------- |
| ๐Ÿคง Easy | Assign Cookies | [๐Ÿ“„ MD](12.Greedy/01.Easy/01.AssignCookies.md) | [๐Ÿ’ป CPP](12.Greedy/01.Easy/01.AssignCookies.cpp) |
| ๐Ÿคง Easy | Fractional Knapsack | [๐Ÿ“„ MD](12.Greedy/01.Easy/02.FractionalKnapsack.md) | [๐Ÿ’ป CPP](12.Greedy/01.Easy/02.FractionalKnapsack.cpp) |
| ๐Ÿคง Easy | Minimum Coins | [๐Ÿ“„ MD](12.Greedy/01.Easy/03.MinimumCoins.md) | [๐Ÿ’ป CPP](12.Greedy/01.Easy/03.MinimumCoins.cpp) |
| ๐Ÿคง Easy | Lemonade Changes | [๐Ÿ“„ MD](12.Greedy/01.Easy/04.LemonadeChange.md) | [๐Ÿ’ป CPP](12.Greedy/01.Easy/04.LemonadeChange.cpp) |
| ๐Ÿคง Easy | Valid Parenthesis | [๐Ÿ“„ MD](12.Greedy/01.Easy/05.ValidParenthesis.md) | [๐Ÿ’ป CPP](12.Greedy/01.Easy/05.ValidParenthesis.cpp) |
| |
| ๐Ÿค Medium | N Meetings | [๐Ÿ“„ MD](12.Greedy/02.Medium/01.NMeetings.md) | [๐Ÿ’ป CPP](12.Greedy/02.Medium/01.NMeetings.cpp) |
| ๐Ÿค Medium | Jump Game | [๐Ÿ“„ MD](12.Greedy/02.Medium/02.JumpGame.md) | [๐Ÿ’ป CPP](12.Greedy/02.Medium/02.JumpGame.cpp) |
| ๐Ÿค Medium | Jump Game II | [๐Ÿ“„ MD](12.Greedy/02.Medium/03.JumpGameII.md) | [๐Ÿ’ป CPP](12.Greedy/02.Medium/03.JumpGameII.cpp) |
| ๐Ÿค Medium | Minimum Platforms for Trains | [๐Ÿ“„ MD](12.Greedy/02.Medium/04.MinPlatforms.md) | [๐Ÿ’ป CPP](12.Greedy/02.Medium/04.MinPlatforms.cpp) |
| ๐Ÿค Medium | Job Sequencing | [๐Ÿ“„ MD](12.Greedy/02.Medium/05.JobSequencing.md) | [๐Ÿ’ป CPP](12.Greedy/02.Medium/05.JobSequencing.cpp) |
| ๐Ÿค Medium | Candy | [๐Ÿ“„ MD](12.Greedy/02.Medium/06.Candy.md) | [๐Ÿ’ป CPP](12.Greedy/02.Medium/06.Candy.cpp) |
| ๐Ÿค Medium | Shortest Job First | [๐Ÿ“„ MD](12.Greedy/02.Medium/07.ShortestJobFirst.md) | [๐Ÿ’ป CPP](12.Greedy/02.Medium/07.ShortestJobFirst.cpp) |
| ๐Ÿค Medium | LRU Cache | [๐Ÿ“„ MD](12.Greedy/02.Medium/08.LRUCache.md) | [๐Ÿ’ป CPP](12.Greedy/02.Medium/08.LRUCache.cpp)
| ๐Ÿค Medium | Insert Intervals | [๐Ÿ“„ MD](12.Greedy/02.Medium/09.Intervals.md) | [๐Ÿ’ป CPP](12.Greedy/02.Medium/09.Intervals.cpp) |
| ๐Ÿค Medium | Largest Number | [๐Ÿ“„ MD](12.Greedy/02.Medium/12.LargestNumber.md) | [๐Ÿ’ป CPP](12.Greedy/02.Medium/12.LargestNumber.cpp) |
| |

๐ŸŒด Binary Trees

| Category | Problem / Algorithm | Explanation | Code |
| ---------------- | ----------------------------------- | ----------------------------------------------------- | ------------------------------------------------------- |
| ๐ŸŒณ Traversals | Introductions | [๐Ÿ“„ MD](13.Binary_Trees/01.Basics/01.Introduction.md) | - |
| ๐ŸŒณ Traversals | Binary Trees in C++ | [๐Ÿ“„ MD](13.Binary_Trees/01.Basics/02.BTinCpp.md) | - |
| ๐ŸŒณ Traversals | Preorder - Recursive | [๐Ÿ“„ MD](13.Binary_Trees/01.Basics/03.Preorder.md) | [๐Ÿ’ป CPP](13.Binary_Trees/01.Basics/03.Preorder.cpp) |
| ๐ŸŒณ Traversals | Inorder - Recursive | [๐Ÿ“„ MD](13.Binary_Trees/01.Basics/04.Inorder.md) | [๐Ÿ’ป CPP](13.Binary_Trees/01.Basics/04.Inorder.cpp) |
| ๐ŸŒณ Traversals | Postorder - Recursive | [๐Ÿ“„ MD](13.Binary_Trees/01.Basics/05.Postorder.md) | [๐Ÿ’ป CPP](13.Binary_Trees/01.Basics/05.Postorder.cpp) |
| ๐ŸŒณ Traversals | Level Order | [๐Ÿ“„ MD](13.Binary_Trees/01.Basics/06.LevelOrder.md) | [๐Ÿ’ป CPP](13.Binary_Trees/01.Basics/06.LevelOrder.cpp) |
| ๐ŸŒณ Traversals | Preorder - Iterative | [๐Ÿ“„ MD](13.Binary_Trees/01.Basics/07.Preorder2.md) | [๐Ÿ’ป CPP](13.Binary_Trees/01.Basics/07.Preorder2.cpp) |
| ๐ŸŒณ Traversals | Inorder - Iterative | [๐Ÿ“„ MD](13.Binary_Trees/01.Basics/08.Inorder2.md) | [๐Ÿ’ป CPP](13.Binary_Trees/01.Basics/08.Inorder2.cpp) |
| ๐ŸŒณ Traversals | Postorder - Iterative | [๐Ÿ“„ MD](13.Binary_Trees/01.Basics/09.Postorder2.md) | [๐Ÿ’ป CPP](13.Binary_Trees/01.Basics/09.Postorder2.cpp) |
| ๐ŸŒณ Traversals | Level Order - Bottom First | [๐Ÿ“„ MD](13.Binary_Trees/01.Basics/10.LevelOrder2.md) | [๐Ÿ’ป CPP](13.Binary_Trees/01.Basics/10.LevelOrder2.cpp) |
| |
| ๐ŸŒฒ Medium | Max Depth of BT | [๐Ÿ“„ MD](13.Binary_Trees/02.Medium/01.MaxDepth.md) | [๐Ÿ’ป CPP](13.Binary_Trees/02.Medium/01.MaxDepth.cpp) |
| ๐ŸŒฒ Medium | Is BT Balanced? | [๐Ÿ“„ MD](13.Binary_Trees/02.Medium/02.BalancedBinaryTree.md) | [๐Ÿ’ป CPP](13.Binary_Trees/02.Medium/02.BalancedBinaryTree.cpp) |
| ๐ŸŒฒ Medium | Diameter of BT | [๐Ÿ“„ MD](13.Binary_Trees/02.Medium/03.DiameterOfTree.md) | [๐Ÿ’ป CPP](13.Binary_Trees/02.Medium/03.DiameterOfTree.cpp) |
| ๐ŸŒฒ Medium | Max Sum of Path | [๐Ÿ“„ MD](13.Binary_Trees/02.Medium/04.MaxPath.md) | [๐Ÿ’ป CPP](13.Binary_Trees/02.Medium/04.MaxPath.cpp) |
| ๐ŸŒฒ Medium | Is it the Same Tree? | [๐Ÿ“„ MD](13.Binary_Trees/02.Medium/13.SameTree.md) | [๐Ÿ’ป CPP](13.Binary_Trees/02.Medium/13.SameTree.cpp) |
| ๐ŸŒฒ Medium | Zig zag Traversal | [๐Ÿ“„ MD](13.Binary_Trees/02.Medium/06.ZigZag.md) | [๐Ÿ’ป CPP](13.Binary_Trees/02.Medium/06.ZigZag.cpp) |
| ๐ŸŒฒ Medium | BT Boundary Traversal | [๐Ÿ“„ MD](13.Binary_Trees/02.Medium/07.BoundaryTraversal.md) | [๐Ÿ’ป CPP](13.Binary_Trees/02.Medium/07.BoundaryTraversal.cpp) |
| ๐ŸŒฒ Medium | Vertical Traversal in BT | [๐Ÿ“„ MD](13.Binary_Trees/02.Medium/08.VerticalOrder.md) | [๐Ÿ’ป CPP](13.Binary_Trees/02.Medium/08.VerticalOrder.cpp) |
| ๐ŸŒฒ Medium | Top View in BT | [๐Ÿ“„ MD](13.Binary_Trees/02.Medium/09.TopView.md) | [๐Ÿ’ป CPP](13.Binary_Trees/02.Medium/09.TopView.cpp) |
| ๐ŸŒฒ Medium | Bottom View in BT | [๐Ÿ“„ MD](13.Binary_Trees/02.Medium/10.BottomView.md) | [๐Ÿ’ป CPP](13.Binary_Trees/02.Medium/10.BottomView.cpp) |
| ๐ŸŒฒ Medium | Right Side View of BT | [๐Ÿ“„ MD](13.Binary_Trees/02.Medium/13.1.RightSide.md) | [๐Ÿ’ป CPP](13.Binary_Trees/02.Medium/13.1.RightSide.cpp) |
| ๐ŸŒฒ Medium | Left Side View of BT | [๐Ÿ“„ MD](13.Binary_Trees/02.Medium/13.2.LeftSide.md) | [๐Ÿ’ป CPP](13.Binary_Trees/02.Medium/13.2.LeftSide.cpp) |
| ๐ŸŒฒ Medium | Symmetric BT | [๐Ÿ“„ MD](13.Binary_Trees/02.Medium/12.SymmetricTree.md) | [๐Ÿ’ป CPP](13.Binary_Trees/02.Medium/12.SymmetricTree.cpp) |
| ๐ŸŒฒ Medium | Invert Binary Tree | [๐Ÿ“„ MD](13.Binary_Trees/02.Medium/15.InvertTree.md) | [๐Ÿ’ป CPP](13.Binary_Trees/02.Medium/15.InvertTree.cpp) |z
| ๐ŸŒฒ Medium | Minimum Depth of BT | [๐Ÿ“„ MD](13.Binary_Trees/02.Medium/14.MinimumDepth.md) | [๐Ÿ’ป CPP](13.Binary_Trees/02.Medium/14.MinimumDepth.cpp) |
| |
| ๐ŸŽ‹ Hard | Root to Node Path | [๐Ÿ“„ MD](13.Binary_Trees/03.Hard/01.PathFromNodeToLeaf.md) | [๐Ÿ’ป CPP](13.Binary_Trees/03.Hard/01.PathFromNodeToLeaf.cpp) |
| ๐ŸŽ‹ Hard | Lowerst Common Ancestor | [๐Ÿ“„ MD](13.Binary_Trees/03.Hard/02.LCA.md) | [๐Ÿ’ป CPP](13.Binary_Trees/03.Hard/02.LCA.cpp) |
| ๐ŸŽ‹ Hard | Maximum Width of BT | [๐Ÿ“„ MD](13.Binary_Trees/03.Hard/03.MaxWidth.md) | [๐Ÿ’ป CPP](13.Binary_Trees/03.Hard/03.MaxWidth.cpp) |
| ๐ŸŽ‹ Hard | Children Sum Property I | [๐Ÿ“„ MD](13.Binary_Trees/03.Hard/04.ChildSum.md) | [๐Ÿ’ป CPP](13.Binary_Trees/03.Hard/04.ChildSum.cpp) |
| ๐ŸŽ‹ Hard | Children Sum Property II | [๐Ÿ“„ MD](13.Binary_Trees/03.Hard/04.1.CheckChildSum.md) | [๐Ÿ’ป CPP](13.Binary_Trees/03.Hard/04.1.CheckChildSum.cpp) |
| ๐ŸŽ‹ Hard | All Nodes at a distance K | [๐Ÿ“„ MD](13.Binary_Trees/03.Hard/05.NodesAtDistK.md) | [๐Ÿ’ป CPP](13.Binary_Trees/03.Hard/05.NodesAtDistK.cpp) |
| ๐ŸŽ‹ Hard | Minimum Time to Burn Tree | [๐Ÿ“„ MD](13.Binary_Trees/03.Hard/06.MinTimeBurn.md) | [๐Ÿ’ป CPP](13.Binary_Trees/03.Hard/06.MinTimeBurn.cpp) |
| ๐ŸŽ‹ Hard | Count Total Nodes | [๐Ÿ“„ MD](13.Binary_Trees/03.Hard/07.CountNodes.md) | [๐Ÿ’ป CPP](13.Binary_Trees/03.Hard/07.CountNodes.cpp) |
| ๐ŸŽ‹ Hard | Construct BT from Inorder | [๐Ÿ“„ MD](13.Binary_Trees/03.Hard/08.ConstructBT.md) | [๐Ÿ’ป CPP](13.Binary_Trees/03.Hard/08.ConstructBT.cpp) |
| ๐ŸŽ‹ Hard | Contruct BT from Postorder | [๐Ÿ“„ MD](13.Binary_Trees/03.Hard/09.ConstructBT2.md) | [๐Ÿ’ป CPP](13.Binary_Trees/03.Hard/09.ConstructBT2.cpp) |
| ๐ŸŽ‹ Hard | Serialize and Deserialize | [๐Ÿ“„ MD](13.Binary_Trees/03.Hard/10.SerDeSer.md) | [๐Ÿ’ป CPP](13.Binary_Trees/03.Hard/10.SerDeSer.cpp) |
| ๐ŸŽ‹ Hard | Morris Inorder Traversal | [๐Ÿ“„ MD](13.Binary_Trees/03.Hard/11.MorrisInorder.md) | [๐Ÿ’ป CPP](13.Binary_Trees/03.Hard/11.MorrisInorder.cpp) |
| ๐ŸŽ‹ Hard | Flatten Binary Tree | [๐Ÿ“„ MD](13.Binary_Trees/03.Hard/1.Flattentree.md) | [๐Ÿ’ป CPP](13.Binary_Trees/03.Hard/12.FlattenTree.cpp) |

๐Ÿฆœ Binary Search Trees

| Category | Problem / Algorithm | Explanation | Code |
| ---------------- | ----------------------------------- | ----------------------------------------------------- | ------------------------------------------------------- |
| ๐Ÿšฒ Concepts | Introduction | [๐Ÿ“„ MD](14.Binary_Search_Trees/01.Intro/01.Introduction.md) | [๐Ÿ’ป CPP](14.Binary_Search_Trees/01.Intro/01.Introduction.cpp) |
| ๐Ÿšฒ Concepts | Search in BST | [๐Ÿ“„ MD](14.Binary_Search_Trees/01.Intro/02.Search.md) | [๐Ÿ’ป CPP](14.Binary_Search_Trees/01.Intro/02.Search.cpp) |
| ๐Ÿšฒ Concepts | Find Min / Max | [๐Ÿ“„ MD](14.Binary_Search_Trees/01.Intro/03.MinMax.md) | [๐Ÿ’ป CPP](14.Binary_Search_Trees/01.Intro/03.MinMax.cpp) |
| |
| ๐Ÿ›ผ Medium | Ceiling of K in BST | [๐Ÿ“„ MD](14.Binary_Search_Trees/02.Medium/01.CeilOfK.md) | [๐Ÿ’ป CPP](14.Binary_Search_Trees/02.Medium/01.CeilOfK.cpp) |
| ๐Ÿ›ผ Medium | Floor of K in BST | [๐Ÿ“„ MD](14.Binary_Search_Trees/02.Medium/02.FloorOfK.md) | [๐Ÿ’ป CPP](14.Binary_Search_Trees/02.Medium/02.FloorOfK.cpp) |
| ๐Ÿ›ผ Medium | Insertion into BST | [๐Ÿ“„ MD](14.Binary_Search_Trees/02.Medium/03.InsertIntoBST.md) | [๐Ÿ’ป CPP](14.Binary_Search_Trees/02.Medium/03.InsertIntoBST.cpp) |
| ๐Ÿ›ผ Medium | Delete Node from BST | [๐Ÿ“„ MD](14.Binary_Search_Trees/02.Medium/04.DeleteNode.md) | [๐Ÿ’ป CPP](14.Binary_Search_Trees/02.Medium/04.DeleteNode.cpp) |
| ๐Ÿ›ผ Medium | Find Kth Smallest & Largest | [๐Ÿ“„ MD](14.Binary_Search_Trees/02.Medium/05.KMinMax.md) | [๐Ÿ’ป CPP](14.Binary_Search_Trees/02.Medium/05.KMinMax.cpp) |
| ๐Ÿ›ผ Medium | Validate a BST | [๐Ÿ“„ MD](14.Binary_Search_Trees/02.Medium/06.ValidateBST.md) | [๐Ÿ’ป CPP](14.Binary_Search_Trees/02.Medium/06.ValidateBST.cpp) |
| ๐Ÿ›ผ Medium | Least Common Ancestor | [๐Ÿ“„ MD](14.Binary_Search_Trees/02.Medium/07.LCA.md) | [๐Ÿ’ป CPP](14.Binary_Search_Trees/02.Medium/07.LCA.cpp) |
| ๐Ÿ›ผ Medium | Build a Unique BST | [๐Ÿ“„ MD](14.Binary_Search_Trees/02.Medium/08.BuildBST.md) | [๐Ÿ’ป CPP](14.Binary_Search_Trees/02.Medium/08.BuildBST.cpp) |
| ๐Ÿ›ผ Medium | Inorder Succesor in BST | [๐Ÿ“„ MD](14.Binary_Search_Trees/02.Medium/09.Successor.md) | [๐Ÿ’ป CPP](14.Binary_Search_Trees/02.Medium/09.Successor.cpp) |
| ๐Ÿ›ผ Medium | Merge Two BSTs | [๐Ÿ“„ MD](14.Binary_Search_Trees/02.Medium/10.MergeBST.md) | [๐Ÿ’ป CPP](14.Binary_Search_Trees/02.Medium/10.MergeBST.cpp) |
| ๐Ÿ›ผ Medium | Two Sum IV | [๐Ÿ“„ MD](14.Binary_Search_Trees/02.Medium/11.TwoSumBST.md) | [๐Ÿ’ป CPP](14.Binary_Search_Trees/02.Medium/11.TwoSumBST.cpp) |
| ๐Ÿ›ผ Medium | Recover BST | [๐Ÿ“„ MD](14.Binary_Search_Trees/02.Medium/12.RecoverBST.md) | [๐Ÿ’ป CPP](14.Binary_Search_Trees/02.Medium/12.RecoverBST.cpp) |
| ๐Ÿ›ผ Medium | Max Sum in BST | [๐Ÿ“„ MD](14.Binary_Search_Trees/02.Medium/13.MaxSum.md) | [๐Ÿ’ป CPP](14.Binary_Search_Trees/02.Medium/13.MaxSum.cpp) |
| ๐Ÿ›ผ Medium | Largest BST Subtree | [๐Ÿ“„ MD](14.Binary_Search_Trees/02.Medium/14.LargestBST.md) | [๐Ÿ’ป CPP](14.Binary_Search_Trees/02.Medium/14.LargestBST.cpp) |

๐Ÿ’น Graphs

| Category | Problem / Algorithm | Explanation | Code |
| ---------------- | ----------------------------------- | ----------------------------------------------------- | ------------------------------------------------------- |
| ๐ŸŽฏ Basics | Introduction | [๐Ÿ“„ MD](15.Graphs/01.Basics/01.Introduction.md) | [๐Ÿ’ป CPP](15.Graphs/01.Basics/01.Introduction.cpp) |
| ๐ŸŽฏ Basics | Graphs in CPP | [๐Ÿ“„ MD](15.Graphs/01.Basics/02.GraphInCpp.md) | - |
| ๐ŸŽฏ Basics | Graphs in Java | [๐Ÿ“„ MD](15.Graphs/01.Basics/03.GraphInJava.md) | - |
| ๐ŸŽฏ Basics | Graphs in Javascript | [๐Ÿ“„ MD](15.Graphs/01.Basics/04.GraphInJs.md) | - |
| ๐ŸŽฏ Basics | Connected Components in Graph | [๐Ÿ“„ MD](15.Graphs/01.Basics/05.ConnectedComponents.md) | [๐Ÿ’ป CPP](15.Graphs/01.Basics/05.ConnectedComponents.cpp) |
| ๐ŸŽฏ Basics | BFS Traversal in Graphs | [๐Ÿ“„ MD](15.Graphs/01.Basics/06.BFS.md) | [๐Ÿ’ป CPP](15.Graphs/01.Basics/06.BFS.cpp) |
| ๐ŸŽฏ Basics | DFS Traversal in Graphs | [๐Ÿ“„ MD](15.Graphs/01.Basics/07.DFS.md) | [๐Ÿ’ป CPP](15.Graphs/01.Basics/07.DFS.cpp) |
| |
| ๐Ÿงฉ Medium | Number of Provinces | [๐Ÿ“„ MD](15.Graphs/02.Medium/01.Provinces.md) | [๐Ÿ’ป CPP](15.Graphs/02.Medium/01.Provinces.cpp) |
| ๐Ÿงฉ Medium | Rotten Oranges | [๐Ÿ“„ MD](15.Graphs/02.Medium/02.RottenOranges.md) | [๐Ÿ’ป CPP](15.Graphs/02.Medium/02.RottenOranges.cpp) |
| ๐Ÿงฉ Medium | Flood Fill | [๐Ÿ“„ MD](15.Graphs/02.Medium/03.FloodFill.md) | [๐Ÿ’ป CPP](15.Graphs/02.Medium/03.FloodFill.cpp) |
| ๐Ÿงฉ Medium | Detect Cycle in Undirected Graph - BFS | [๐Ÿ“„ MD](15.Graphs/02.Medium/04.CycleInUndirected.md) | [๐Ÿ’ป CPP](15.Graphs/02.Medium/04.CycleInUndirected.cpp) |
| ๐Ÿงฉ Medium | Detect Cycle in Undirected Graph - DFS | [๐Ÿ“„ MD](15.Graphs/02.Medium/05.CycleInUndirectedII.md) | [๐Ÿ’ป CPP](15.Graphs/02.Medium/05.CycleInUndirectedII.cpp) |
| ๐Ÿงฉ Medium | Surrounded Regions | [๐Ÿ“„ MD](15.Graphs/02.Medium/07.Surrounded.md) | [๐Ÿ’ป CPP](15.Graphs/02.Medium/07.Surrounded.cpp) |
| ๐Ÿงฉ Medium | Number of Enclaves | [๐Ÿ“„ MD](15.Graphs/02.Medium/08.Enclaves.md) | [๐Ÿ’ป CPP](15.Graphs/02.Medium/08.Enclaves.cpp) |
| ๐Ÿงฉ Medium | Word Ladder | [๐Ÿ“„ MD](15.Graphs/02.Medium/09.WordLadder.md) | [๐Ÿ’ป CPP](15.Graphs/02.Medium/09.WordLadder.cpp) |
| ๐Ÿงฉ Medium | Word Ladder II | [๐Ÿ“„ MD](15.Graphs/02.Medium/10.WordLadderII.md) | [๐Ÿ’ป CPP](15.Graphs/02.Medium/10.WordLadderII.cpp) |
| ๐Ÿงฉ Medium | Number of Islands | [๐Ÿ“„ MD](15.Graphs/02.Medium/11.Islands.md) | [๐Ÿ’ป CPP](15.Graphs/02.Medium/11.Islands.cpp) |
| ๐Ÿงฉ Medium | Bipartite Graph | [๐Ÿ“„ MD](15.Graphs/02.Medium/12.Bipartite.md) | [๐Ÿ’ป CPP](15.Graphs/02.Medium/12.Bipartite.cpp) |
| ๐Ÿงฉ Medium | Detect Cycle in Directed Graph - DFS | [๐Ÿ“„ MD](15.Graphs/02.Medium) | [๐Ÿ’ป CPP](15.Graphs/02.Medium) |
| |
| ๐Ÿงธ Topo Sort | - | [๐Ÿ“„ MD](15.Graphs/03.TopoSort) | [๐Ÿ’ป CPP](15.Graphs/03.TopoSort) |
| |

๐ŸŽ–๏ธ Dynamic Programming

| Category | Problem / Algorithm | Explanation | Code |
| ---------------- | ----------------------------------- | ----------------------------------------------------- | ------------------------------------------------------- |
| ๐Ÿญ Basics | - | [๐Ÿ“„ MD](16.Dynamic_Programming/01.Basics) | [๐Ÿ’ป CPP](16.Dynamic_Programming/01.Basics) |



---

## โš›๏ธ Development Structure

> I know this might seem like a lot, but success only comes to those who persist, and don't give up. Anyway, as you progress through the foundations, the later parts become easier.

๐Ÿ• React Frontend Roadmap


| Topic | Resourse | Links | Notes |
|:---|:---|:---:|---|
| HTML | Youtube - Dave Gray | [YT](https://www.youtube.com/watch?v=mJgBOIoGihA) | Do this first, learn about semantics and tags and why they are important. |
| CSS | Youtube - Dave Gray | [YT](https://www.youtube.com/watch?v=n4R2E7O-Ngo) | Get basic understanding of CSS classes, and practices with simple projects. |
| HTML & CSS | Youtube - SuperSimpleDev | [YT](https://www.youtube.com/watch?v=G3e-cpL7ofc) | Love Simon's content, super simple, and easy to understand. |
| |
| Javascript | Hitest Choudhary | [YT](https://www.youtube.com/watch?v=dlfrWbYk1v0&list=PLRAV69dS1uWTSu9cVg8jjXW8jndOYYJPP) | This is an old series by Hitesh sir, all in english, and pretty solid. |
| Javascript | Hitest Choudhary | [YT](https://www.youtube.com/watch?v=Hr5iLG7sUa0&list=PLu71SKxNbfoBuX3f4EOACle2y-tRC5Q37) | This series is in ***Hindi***, more modern and simple. |
| Javascript | SuperSimpleDev | [YT](https://www.youtube.com/watch?v=EerdGm-ehJQ&pp=ygUWamF2YXNjcmlwdCBmdWxsIGNvdXJzZQ%3D%3D) | Simon again, he is also really great, industry standard but simple. |
| Javascript | Dave Gray | [YT](https://www.youtube.com/watch?v=EfAl9bwzVZk&pp=ygUWamF2YXNjcmlwdCBmdWxsIGNvdXJzZQ%3D%3D) | Dave is also great, but I prefered the other three above in JS. |
| Javascript | arindal1 | [repo](https://github.com/arindal1/JS-Lookup) | Elaborate notes on Javascript with code and examples. |
| Javascript | arindal1 | [repo](https://github.com/arindal1/30Day-JS) | A 30 Day Javascript challenge, to make your foundations solid. |
| |
| Git | Brendan Dickinson | [YT](https://www.youtube.com/watch?v=IeXhYROClZk) | Short and sweet intro to Git. |
| Git | Nick White | [YT](https://www.youtube.com/watch?v=mJ-qvsxPHpY) | Simple and straight, a more casual and easy explanation. |
| Git | Hitesh Choudhary | [YT](https://www.youtube.com/watch?v=zTjRZNkhiEU&t=7809s&pp=ygUPZ2l0IGZ1bGwgY291cnNl) | If you want to go in depth, with inner mechanisms and industry level standards. |
| |
| NPM | Traversy Media | [YT](https://www.youtube.com/watch?v=jHDhaSSKmB0) | Course to package managers for Development. |
| |
| TailwindCSS | JavascriptMastery | [YT](https://www.youtube.com/watch?v=6biMWgD6_JY&pp=ygUSdGFpbHdpbmRjc3MgY291cnNl) | Great explanations, and hands on parctice. |
| TailwindCSS | Dave Gray | [YT](https://www.youtube.com/watch?v=lCxcTsOHrjo&t=3s&pp=ygUSdGFpbHdpbmRjc3MgY291cnNl) | Dave is really good with CSS, smh.
| |
| ReactJS | Hitesh Choudhary | [YT](https://www.youtube.com/watch?v=Bvwq_S0n2pk) - [repo](https://github.com/arindal1/React-Lookup) | Pure beginner friendly course for React. Hitesh sir is super particular about industry standards. |
| ReactJS | Hitesh Choudhary | [YT](https://www.youtube.com/watch?v=vz1RlUyrc3w&list=PLu71SKxNbfoDqgPchmvIsL4hTnJIrtige) | This series is in ***Hindi***, equivalent to the course above.|
| ReactJS | SuperSimpleDev | [YT](https://www.youtube.com/watch?v=TtPXvEcE11E&pp=ygUMcmVhY3QgY291cnNl0gcJCQwKAYcqIYzv) | Simon is always straightforward, and tries his best to keep things simple but good quality. |
| ReactJS | JavascriptMastery | [YT](https://www.youtube.com/watch?v=dCLhUialKPQ&pp=ygUMcmVhY3QgY291cnNl) | Once you have understood basics of React, watch this. |
| |
| Linters and Formatters | CoderDave | [YT](https://www.youtube.com/watch?v=HDQXWr5TOnI&pp=ygUibGludGVycyBhbmQgZm9ybWF0dGVycyBkZXZlbG9wbWVudNIHCQkMCgGHKiGM7w%3D%3D) | Linters are fairly easy, just watch this and gain a basic understanding. |
| |
| Module Bundler | Fireship | [YT](https://www.youtube.com/watch?v=5IG4UmULyoA) | You will already know about module bundlers while learning React, if not, this is for you. I find fireship really interesting. |
| Vite | CodeSTACKr | [YT](https://www.youtube.com/watch?v=LQQ3CR2JTX8) | A vite crash course to know indepth mechanisms of Vite. (optional) |
| |
| Testing | dotconferences | [YT](https://www.youtube.com/watch?v=l3qjQpYBR8c) | Testing is an essential but advanced part of development. This video tells you all about testing in industry. |
| Jest | FreeCodeCamp | [YT](https://www.youtube.com/watch?v=IPiUDhwnZxA) | Jest is a Javascript testing tech. |
| Authentication | Hayk Simonyan | [YT](https://www.youtube.com/watch?v=9JPnN1Z_iSY&pp=ygUOYXV0aGVudGljYXRpb24%3D) | Hayk Simonyan | Basic understanding of different Authentication methods like JWT, OAuth, etc. |
| |
| Web API | Keep on Coding | [YT](https://www.youtube.com/watch?v=_7rT-ixivWU) | Basics of Web API. |
| Types of APIs | Codist | [YT](https://www.youtube.com/watch?v=pBASqUbZgkY&pp=ygUMQVBJIGluIGRlcHRo) | Different types of APIs used in the industry, and why? |
| Rest API | IBM Tech | [YT](https://www.youtube.com/watch?v=lsMQRaeKNDk&t=170s&pp=ygUMQVBJIGluIGRlcHRo) | A little about Restful APIs |
| |
| Web Security | Arkenstone Learning | [YT](https://www.youtube.com/playlist?list=PLH8n_ayg-60J9i3nsLybper-DR3zJw6Z5) | This a playlist that focuses on WebSecurity through ZAP, not super important, but do learn the theory. |
| |
| SSR | Microsoft Developer | [YT](https://www.youtube.com/watch?v=okvg3MRAPs0) | What is Server Side Rendering? |
| SSR | Smoljames | [YT](https://www.youtube.com/watch?v=ObrSuDYMl1s) | Server Side Rendering vs Client Side Rendering |
| NextJs | FreeCodeCamp | [YT](https://www.youtube.com/watch?v=1WmNXEVia8I) | Well, if you have got your hands on React, and want to dive into SSR. Well, NextJS is the best. And... it's taught by the Head of Developer Community at Vercel! |
| SSG | Net Ninja | [YT](https://www.youtube.com/watch?v=Qms4k6y7OgI) | Static Site Generators (SSGs) build websites as pre-generated HTML files from content and templates. Make sites fast, secure, and easy to host. (kinda optional) |
| |
| Design System | Figma | [YT](https://www.youtube.com/watch?v=YLo6g58vUm0) | Well designing your site is also important. |
| Deployments | - Multiple - | [Netlify](https://www.youtube.com/watch?v=NBrQp6-721c) - [Github](https://www.youtube.com/watch?v=8hrJ4oN1u_8) - [Vercel](https://www.youtube.com/watch?v=Vx5nPGdsFaU) - [Render](https://www.youtube.com/watch?v=yWxBUcG_C7g) - | How to deploy your code in the Internet. |
| |
| Web Performance | Dmitriy Zhiganov | [YT](https://www.youtube.com/watch?v=KUdqbIHn8Ic) | How to enhance the performance of your site. Design Systems. |
| Lighthouse | WPDev | [YT](https://www.youtube.com/watch?v=_eM7hmORXZA) | Lighthouse is an open-source, automated tool for improving the quality of web pages. |
| Dev Tools | Tobi Mey | [YT](https://www.youtube.com/watch?v=2CC0fugc_2o) | DevTools are a set of web developer tools built directly into web browsers. |
| Service Workers | Udacity | [YT](https://www.youtube.com/watch?v=A6MHtKkA0CA) | Service Workers are JavaScript files that act as proxy servers between web browsers and web servers. |
| Accessibility | Chrome | [YT](https://www.youtube.com/playlist?list=PLNYkxOF6rcICWx0C9LVWWVqvHlYJyqw7g) | Understanding Accessibility and it's importance for websites. |

> that should be all for Frontend development. Rest is upto practice and projects.

๐Ÿ”ฐ Node Backend Roadmap


In progress.

๐Ÿต Java Roadmap


#### Phase 1: Core JAVA + OOP

- Java memory model (Heap v Stack)
- OOP Principles
- SOLID Principles
- Generics, Lamda, Streams
- Exception Handling
- Immutibility & Best Practices
- JVM Internals

### Phase 2: DSA

- FAANG Level prep
- Clean Code
- Edge-case handling
- TIME + Space Complexity

### Phase 3: Multithreading & Concurrency

- Thread lifecycle
- Synchronization v Locks
- Deadlocks, Starvation
- ExecutorService
- Completable Future
- Concurrent Collections

### Phase 4: Spring Boot + RestAPIs

- Spring Core & Dependency Injection
- Spring Boot auto-config
- RestAPI design
- Validation & Execution Handling
- Spring Security (JWT + Role Based)
- Logging & Monitoring
- Unit + Integration testing

### Phase 5: Databses

- SQL:
- Indexing & query optimizations
- Joins & Subqueries
- ACID v BASE

- NoSQL:
- MongoDB schema design
- when to use SQL & noSQL
- Redis Caching

### Phase 6: System Design

Below ๐Ÿ”ฝ๐Ÿ”ฝ

---

## ๐Ÿ“ System Design Structure

| Topic | Resource | Links | Notes |
| -- | -- | -- | -- |
| Introduction | Crio.do | [article](https://www.crio.do/blog/a-comprehensive-guide-to-system-design/) | Basic intro to System Design and Engineering. |
| Guide | Swimm | [article](https://swimm.io/learn/system-design/system-design-complete-guide-with-patterns-examples-and-techniques) | Basic intro to System Design and patterns. |
| The Primer | donnemartin | [repo](https://github.com/donnemartin/system-design-primer#how-to-approach-a-system-design-interview-question) | **The System Design Primer**. It's the *Holy Grail* for SDEs, trust me. |
| SD Template | Top Cat | [leetcode](https://leetcode.com/discuss/post/229177/my-system-design-template-by-topcat-vtk2/) | A template for how to approach designing an efficient System. |
| SD Questions | HiredInTech | [article](https://www.hiredintech.com/system-design/) | In this course you will see what such system design interview questions look like and what is expected from you in order to solve them. |
| SD Interviews | Jackson Gabbard | [YT](https://www.youtube.com/watch?v=ZgdS0EUmn70) | Walk through the context and goals of a systems design and architecture interview. |

> [ IN PROGRESS ]

---

### Contact

- LinkedIn - [arindalchar](https://www.linkedin.com/in/arindalchar)
- Twitter - [arindal_17](https://www.twitter.com/arindal_17)

### ๐ŸŒŸ Star the Repo if You Find it Useful!