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.
- Host: GitHub
- URL: https://github.com/arindal1/sde-dsa-sd-prep
- Owner: arindal1
- Created: 2025-06-11T15:04:51.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2026-04-17T17:08:13.000Z (3 months ago)
- Last Synced: 2026-04-17T19:14:46.650Z (3 months ago)
- Topics: algorithms, cpp, data, data-structures, datastructures-algorithms, neetcode, sde-prep, striver, strivers-sde-sheet, system-design
- Language: C++
- Homepage:
- Size: 6.26 MB
- Stars: 14
- Watchers: 0
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
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!