Data Structure Algorithm Problem
Solving Masterclass For Everyone
Becoming a Better Programmer and Decode coding interview with
LeetCode
● Brush Up Javascript Knowledge Before Problem
Solving
● Getting things and environment ready for rest of the
journey
● Javascript Debugger to explore code step by step
● Understanding Variable and Variable Declaration
with var, Let, Const
● Understanding data type, undefined and null
● Understanding Javascript Array and accessing
element dynamically
● Understanding Javascript Object
● Understanding Loop while loop, For Loop , for of
loop , for in loop, do while loop
● Understanding Nested Loop
● Checking data in object and array
● Conditionals , if else, ternary
● Understanding Function
● Destructuring rest spread
● Intro to Data structure and algorithm
● What is Data Structure and why we need to Learn?
● What is algorithm and why algorithm?
● Importance of data structure and algorithm in
software Development
● Understanding data structure and algorithm from a
practical Standpoint
● Measuring Code efficiency (performance)
● Understanding time complexity
● How to Measure Code Efficiency
● Understanding Big O
● Understanding Base Case Average case and worst
case
● O(1) - Constant
● O(n) - Linear
● O(n^2)- Quadratic
● O(logn)- logarithmic
● O(2^n)-Exponential
● Understanding Space Complexity
● Big O in practice
● Let’s Gear Up for Problem Solving
● Problem Solving Approach
● How to think and proceed for problem solving
● Problem Solving approach in practical Problem with
measuring code efficiency
Example
○ Summing up number
○ Count the character in function input
○ Check the element of first array exists on second
array
● Deep Drive into Array and Object and measuring
efficiency
● Searching element from array
● Accessing item from array
● Adding item at the beginning , end or in between
element
● Removing item at the beginning , end or in between
● Updating Item in an array
● Map, Find, FindIndex, Filter, Reduce
● Measuring code efficiency of the array action
● Deep Drive into object and accessing item from object
● Adding, Removing, searching item on object
● Measuring code efficiency in object action
● Measuring code efficiency of Keys, Values, entries
method
● Object vs array , When to use what?
● Brush up our Problem solving skills
● FizzBuzz Problem
● Summing up numbers from an array and flag variable
● Getting Maximum number and minimum number and
difference
● Reversing string using different technique
● Checking a Prime Number
● Most commonly used Character in the
string(Leetcode)
● Palindrome (Leetcode)
● Finding Vowels count
● Chunking array
● Factorial
● Remove duplicate from an array
● Pick up the unique element or duplicated element
between two array
● Power of two
● Problem Solving pattern from practical standpoint
● Frequency counter pattern (using hashTable to track
down data)
○ Is Array Same (Leetcode)
○ Two Sum( Leetcode)
○ SubArray Sum(Leetcode)
○ Anagram(leetcode)
● Multiple Pointer pattern
○ Sum Zero(Leetcode)
○ Are there any Duplicates(Leetcode)
○ Palindrome (leetcode)
● Sliding Window Pattern
○ maxSubArraySum(leetcode)
○ Find Longest Substring(leetcode)
○ MinimumSubArray Sum(leetcode)
● Data Structure-Linked List
● Understanding class and reference type
● Understanding Node and node relation
● Building A Linked List from scratch
● Linked list Action(HackerRank and Leetcode question)
○ Push (adding item at the end) -HackerRank
○ Pop (Remove item from the end)-HackerRank
○ Unshift(adding item at the
beginning)-HackerRank
○ Shift(removing item from the beginning)
-HackerRank
○ Get (finding node at specific index)-HackerRank
○ set(Setting or changing node value at specific
index)-HackerRank
○ insert(Inserting node at specific
index)-HackerRank
○ remove(Removing node from specific
index)-HackerRank
○ reverse (Reverse a Linked list) - Leetcode,
HackerRank
● Time complexity and space complexity of different
linked list action
● Array vs linked list.Which one is better?
● Problem solving From Linked List
○ Reverse a Linked List (Leetcode)
○ Middle of Linked List(Leetcode)
○ Linked List Cycle(Leetcode)
○ Palindrome linked list(Leetcode)
○ Intersection of two linked list(Leetcode)
○ Remove nth item from end of the list(Leetcode)
○ Add two numbers(Leetcode)
○ Sort linked List(Leetcode)
○ Even Odd linked List(Leetcode)
● Data Structure-Doubly Linked List
● Understanding Node and node relation
● Building A Doubly Linked List from scratch
● Linked list Action(HackerRank and Leetcode question)
○ Push (adding item at the end) -HackerRank
○ Pop (Remove item from the end)-HackerRank
○ Unshift(adding item at the
beginning)-HackerRank
○ Shift(removing item from the beginning)
-HackerRank
○ Get (finding node at specific index)-HackerRank
○ set(Setting or changing node value at specific
index)-HackerRank
○ insert(Inserting node at specific
index)-HackerRank
○ remove(Removing node from specific
index)-HackerRank
● Time complexity and space complexity of different
doubly linked list action
● Singly linked list vs doubly linked list
● Data Structure-Stack and Queue
● Understanding stack from a practical standpoint
● Building a stack data structure from scratch
● Array as Stack and performance concern
● Stack data structure action
○ Push(adding item at the top of the stack)
○ Pop(Removing item from top of the stack)
○ peek(Picking item from top of the stack)
○ IsEmpty(check if the stack is empty)
● Understanding Queue from a practical standpoint
● Building a Queue data structure from scratch
● Queue data structure action
○ enqueue(adding node at the end of the queue)
○ dequeue(Removing node from the beginning of
queue)
○ peek(Picking the node to be dequeued)
○ IsEmpty(check if the queue is empty)
● Array as Queue and performance concern
● Problem Solving Stack and queue
○ Valid parentheses(Leetcode)
○ Reversing a string using stack(Leetcode)
○ Implement Stack using queue (Leetcode)
○ Implement Queue using stack(Leetcode)
○ Reversing a Queue
○ Min Stack (Leetcode)
○ Max Stack(Leetcode)
● Data Structure-Hash Table/HashMap
● Understanding Hash Table
● Building a Hash Table From scratch
● Generating a Hash by hash function
● Hash collision
Separate chaining
Linear Probing
● Hash Table Action
○ set(setting value)
○ Get (Getting Value by Key)
○ Keys (Getting all the keys)
○ search(searching item)
● Performance concern of Different action in HasTable
● Problem Solving
○ First Unique Character (Leetcode)
○ First Repeated Character(Leetcode)
● Recursion
● What is Recursion? Why Recursion?
● Understanding Recursion from real world Example
● Understanding Call Stack and Flow of execution of
function
● Iterative vs Recursion solution
● Practical Recursion Problem Solution
○ Count To Zero(Iterative vs Recursive)
○ SumRange(Iterative vs Recursive)
○ Factorial (Iterative vs Recursive)
○ Fibonacci series(Iterative vs Recursive)
○ Create range(Iterative vs Recursive)
● Pure vs Impure Recursion
● Maintaining state between recursive function call
● Time complexity and space complexity
● Linear Search and Binary search
● Understanding linear search
● Linear Searching time complexity and space
complexity
● Binary Search /Divide and conquer
● Understanding logarithm and logarithmic time
complexity
● Implement a Binary search in a array of numbers
Problem Solving
○ Search Insert Position(Leetcode)
○ Searching string inside string(KMP
algorithm)(Leetcode)
○ Bad Version(Leetcode)
○ Sqrt(Leetcode)
○ koko Eating Bananas(Leetcode)
● Sorting Algorithm
● Understanding data organization and ordering
● Understanding Built in javascript sort method
● Primitive sorting
○ Bubble sort
○ Selection Sort
○ Insertion sort
● Optimized sorting (Problem solving)
○ Merge Sort (leetcode)
○ Quick sort(Leetcode)
● Uncommon sorting algorithm
○ Radix sort
○ Counting sort
○ Bucket sort
● Time complexity and space complexity of the
algorithm
● When to use which algorithm (Interview Question)
● Data Structure-Tree , Binary Tree Binary search
tree(BST)
● Categorizing tree
○ Full
○ Comple
○ Perfect
● Understanding Binary Search tree
● Building a Binary Search tree from scratch
○ Working with constructor
○ insert(Inserting Node in a tree)
○ contains(check the existence of value in the tree)
● Tree Traversal
○ Breadth First Search(BFS)
○ Depth First Search(DFS)
■ Preorder
■ Postorder
■ Inorder
● Time Complexity and space complexity for BST action
● Problem Solving
○ Max Depth of Tree(leetcode)
○ In Order Traversal(LeetCode)
○ Invert a Tree
○ Is BST balanced(Leetcode)
○ Valid BST(Leetcode)
● Data Structure-Heap and priority Queue
● Understanding Heap
● Max Heap, Min Heap
● Binary Heap
● Inserting element into Heap
● Extract Maximum value from Heap
● Priority Queue using Heap
● Priority queue using Array
● Performance concern for Heap and Queue
● Data Structure-Graph
● What is Graph?
● Practical Application of Graph Data Structure
● Building a Graph Data Structure
○ Adjacency Matrix
○ Adjacency List
● Building a Graph Using Adjacency List
○ Constructing the adjacency list
○ Adding Vertex
○ Removing Vertex
○ Adding Edge
○ Removing Edge
● Graph Traversal
○ Breadth First Search
○ Depth First Search
■ Iterative using stack
■ Recursive
● Problem Solving
○ Directed acyclic graph(Leetcode)
○ Delete cycle in the list(Leetcode)
○ Has Path to a specific vertex(leetCode)
○ Connected Component Count(Leetcode)
○ Clone Graph(Leetcode)
○ Number of Islands(Leetcode)
○ Maximum area of island(Leetcode)
● Dijkstra's algorithm
○ Introduction to Dynamic Programming
○ Introduction to Dynamic Programming
○ Finding Shortest path
○ Dijkstra's pseudo code
○ Implementing Dijkstra's algorithm
● Dynamic Programming, Greedy technique
● Introduction to Dynamic Programming
● Understanding Dynamic programming and
overlapping subproblem
● Optimal Substructure
● Approach of solving Dynamic Problem
○ Recursive
○ Tabulation approach
● Time complexity and space complexity of the
solution
● Improving performance with Memoization
● Solve Dynamic Programming question with
Tabulation approach
● Problem solving
○ Fibonacci (Leetcode)
○ Coin change problem(Leetcode)
○ Stock Buy and sell(Leetcode)
● Extra
● Build a 3 x 3 spiral Matrix(Leetcode)
● Pyramid Pattern(leetcode)
● Staircase Problem(Hackerrank)
● Extracting value from a spiral matrix(Leetcode)
● Rotate Image(Leetcode)
● Bonus
● Building Data Structure Trie and associated
action implementation
● Backtracking and Bit manipulation