Data Structures & Algorithms
Categories: Data structures and algorithms
About Course
Datastructures & Algorithms(DSA), so let’s talk about it which 90% of students ignore and straightaway jump to development. You know what, DSA is much more important than any other course if you are looking to apply for jobs in your dream product companies FAANG or I should say MAANG now :). So now we know the importance of it, lets talk about learning it the right way, see DSA is that field if studied the wrong way it will get boring and difficult quite a lot, students randomly start studying it from random places after which they face difficulties and doubts which no one is there to solve , and it is a field which will form your core for learning further things.
Join now and I will see you inside this lovely course
What Will You Learn?
- Recursion, Stack, Polish Notations, infix to postfix, FIFO Queue, Circular Queue, Double Ended Queue, Linked List - Linear, double and Circular - all operations, Stack and Queue using Linked List.
- Using Stack - checking parenthesis in an expression.
- What is a FIFO Queue, understanding Queue operations - Insert and delete, implementing FIFO Queue.
- Concept of Double ended queue, logic development and implementation of double ended queue.
- Singly Linked List - developing algorithms for various methods and then implementing them.
- Circular Linked List - developing algorithm of various methods and then implementing them.
- Recursion, concept of Tail recursion, Recursion Vs Iteration..
- Using Stack - Understanding Polish notations, algorithm and implementation of infix to postfix conversion and evaluation of postfix expression.
- Limitations of FIFO queue, concept of Circular Queue - Implementation of Circular queue.
- Concept of Linked List - definition, why we need linked list.
- Doubly Linked List - developing algorithm of various methods and then implementing them
- How to estimate time complexity of any algorithm. Big Oh, Big Omega and Big Theta notations.
- Binary Tree, definition, traversal (in-order, pre-order and post-order), binary search tree, implementation.
Course Content
Introduction
-
13:00
-
10:04
-
Static Memory Allocation
12:58 -
Dynamic memory allocation
14:06 -
Physical and logical data structures
17:32 -
ADT
13:07 -
Space and time complexity
14:52
Recursion
-
How recursion works, Generalization, Recursion and stack
13:38 -
Recurrence relation and time complexity
10:07 -
Code recursion
04:42 -
Static and global variables in recursion and code
15:26 -
Tail recursion
03:22 -
Head recursion
04:16 -
Tree recursion
09:45 -
Indirect recursion
12:23 -
Nested recursion
08:05 -
Sum of natural numbers using recursion
10:06 -
Factorial using recursion
10:14 -
Power using recursion
20:26 -
Taylor series using recursion approach-1
15:13 -
Taylor series using recursion approach-2
18:40 -
Fibonacci series using recursion
27:49 -
nCr using recursion
15:13 -
Tower of hanoi
12:04 -
Tower of Hanoi implementation
02:54
Array Representation
-
Introduction, Declaration, Demo
20:02 -
Static array vs dynamic array, CODE
08:47 -
Increase array size, CODE
09:27 -
2D array
12:26 -
2D array DEMO
06:15 -
Array representation by compiler
06:58 -
Row major formula for 2d arrays
09:14 -
Column major formula for 2d arrays
05:05 -
Formulas for nD arrays
08:03 -
Formulas for 3D arrays
03:17
Array ADT
-
Array ADT
09:55 -
Array ADT – Demo
12:19 -
Inserting in array
11:55 -
Inserting in array – DEMO
13:56 -
Deleting from array
05:57 -
Deleting from array – DEMO
08:16 -
Linear search
12:28 -
Linear search – DEMO
05:47 -
Binary search
09:59 -
Binary search – DEMO
06:28 -
Get, set, avg, max functions
08:06 -
Get, set, avg, max functions DEMO
16:05 -
Merging array
05:01 -
Mergin array demo
06:21 -
Check if an array is sorted
02:26 -
Check if an array is sorted – DEMO
06:12 -
Set operations on arrays
06:02 -
Single missing element in sorted array
06:43 -
Multiple missing element in sorted array
03:17 -
Finding duplicates in sorted array
03:27 -
Finding duplicates in unsorted array
04:13 -
Reverse an array
06:10 -
Reverse array DEMO
03:29 -
Find duplicates in sorted array usign hashing
06:00 -
Find a pair of elements with sum as K in unsorted array
09:31 -
Find a pair of elements with sum as K in sorted array
03:54 -
Find max and min in one scan
04:48
Strings
-
String introduction
09:59 -
Length of string
02:22 -
Changing case of a string
05:04 -
Counting words and vowels
03:54 -
Validating a string
03:21 -
Reversing a string
04:50 -
Comparing two strings and palindrome
05:04 -
Finding duplicates
05:48 -
Check if two strings are anagrams
06:39 -
Permutations of a given string
04:02
Matrices
-
Diagonal matrix
06:31 -
Diagonal matrix DEMO
08:16 -
Class for diagonal matrix
06:09 -
Class for diagonal matrix – DEMO
08:31 -
Lower triangular matrix
09:00 -
Lower triangular matrix code
08:49 -
Upper triangular matrix
06:51 -
Symmetric matrix
02:59 -
Tri digonal and tri band matrix
05:12 -
Toeplitz marix
03:31 -
C++ class for matrix
04:40
Sparse Matrix and Polunomial Representation
-
Sparse matrix representation
08:09 -
Sparse matrix addition
05:37 -
Creation of Sparse matrix
05:20 -
Addition of sparse matrix
09:46 -
Sparse matrix using LL
03:01 -
Polynomials
09:01
Linked List
-
Why need dynamic DS LL
07:39 -
Linked list introduction
09:20 -
Display linked list
05:43 -
Display linked list code
02:14 -
Counting nodes and sum of all elements of linked list
04:15 -
Counting nodes and sum – DEMO
04:22 -
Max element in linked list
03:53 -
Max element in linked list – DEMO
02:30 -
Searching in linked list
03:04 -
Searching in linked list – DEMO
03:02 -
Insertion
06:57 -
Insertion – DEMO
05:03 -
Insertion in sorted list
03:05 -
Insertion in sorted list – DEMO
03:17 -
Check if list is sorted
02:23 -
Check if list is sorted – DEMO
03:10 -
Deletion
03:33 -
Deletion – DEMO
03:06 -
Reverse a linked list
05:00 -
Concatinating two linked lists
02:17 -
Checking for a LOOP
03:28 -
Checking for LOOP – DEMO
03:19 -
CLL Introduction
02:43 -
CLL Introduction – DEMO
03:14 -
Insertion in CLL
02:47 -
Deletion in CLL
02:47 -
CLL insertion and deletion – DEMO
04:24 -
Doubly linked list – Introduction
02:38 -
Insert in DLL
03:47 -
Delete in DLL
03:18 -
DLL – DEMO
06:50 -
Circular doubly linked list
02:04 -
Comparision of linked lsits
03:08 -
Max element in LL
03:31 -
Creating a LL using insert
02:14 -
Creating a LL by inserting at last
05:10 -
Removing duplicates from sorted LL
04:26 -
Removing duplicates from sorted LL DEMO
03:18 -
Recursive reverse for LL
02:51 -
Reversign a LL DEMO
06:46 -
Reverse a doubly LL DEMO
07:16
Sparse Matrix Polynomial expression using LL
-
Polynomial representation using LL
02:20 -
Polynomial representation using LL DEMO
07:29
Stack
-
Stack introduction
20:26 -
Stack using array – DEMO
05:08 -
Stack using linked list
05:53 -
Parenthesis matching
03:44 -
Parenthesis matching – DEMO
04:02 -
Infix to postfix conversion
09:37 -
Infix to postfix – DEMO
04:16 -
Evaluation of postfix expression
04:15 -
Postfix evaluation – DEMO
06:08 -
Stack using LL – DEMO
04:48
Queue
-
Queue introduction
09:08 -
Queue insertion and deletion – DEMO
05:05 -
Drawback of queue using array
03:17 -
Circular queue
02:36 -
Circular queue – DEMO
04:37 -
Queue using linked list
07:59 -
Queue using LL – DEMO
05:02 -
Priority queue
05:20 -
Double ended queue DEQUE – DEMO
06:03
Trees
-
Tree – terminology
10:24 -
Height vs nodes formulas
06:26 -
Internal and external nodes
02:38 -
Strict binary tree
03:46 -
n-ary trees
03:04 -
Representation of binary tree
06:26 -
Full vs complete binary tree
03:05 -
Strict vs complete binary tree
02:59 -
Creating a tree
04:28 -
Creating Binary tree DEMO
06:12 -
Binary tree traversals
05:23 -
Iterative traversals DEMO
05:17 -
Level order traversal DEMO
04:23 -
Generate binary tree from traversals (2)
03:18 -
Generate BT from traversals DEMO
07:28 -
Height and count of BT DEMO
06:28 -
Count leaf nodes in BT DEMO
07:51
Binary Search Tree
-
Introduction
04:58 -
Searching in BST
03:34 -
Inserting in BST
05:40 -
Creating a BST
02:56 -
BST DEMO
10:44 -
Deleting from BST
05:06 -
BST drawbacks
03:49 -
Generate BST from preorder
06:10
AVL Tree
-
AVL tree introduction
04:40 -
Insertion in AVL with rotations
08:23 -
General form of AVR rotations
05:11 -
Generating AVL tree
05:45 -
Height analysis AVL trees
01:54 -
AVL rotations DEMO
09:11
Search Trees
-
2,3 trees
06:31 -
2,3,4 trees
05:38 -
Red black trees
03:32 -
Red black tree creation
07:14 -
Red black trees vs 2-3-4 trees
04:47 -
Red black tree deletion
03:02
Heap
-
Heap introduction
02:11 -
Heap insertion
09:18 -
Heap insertion – DEMO
04:20 -
Heap creation
02:42 -
Element deletion
07:34 -
Heap sort – DEMO
05:04 -
Heapify
06:24 -
Heap as priority queue
05:00
Sorting Techniques
-
Bubble sort
06:40 -
Bubble sort DEMO
03:51 -
Insertion sort
05:19 -
Insertion sort DEMO
03:26 -
Selection sort
04:29 -
Selection sort DEMO
05:49 -
Quick sort
05:50 -
Quick sort DEMO
08:26 -
Merge sort
04:55 -
Merge sort DEMO
05:42
Hashing Techniques
-
Hashing introduction
09:37 -
Chaining
06:01 -
Chaining – DEMO
04:13 -
Linear probing – Quadratic probing
05:11 -
Linear probing – DEMO
04:28 -
Hash function ideas
03:48
Graphs
-
Graphs terminology
08:05 -
Representation of undirected graph
11:25 -
Representation of directed graph
07:32 -
Breadth first search
05:41 -
BFS DEMO
05:37 -
Depth first search
06:14 -
DFS – Demo
04:09 -
Minimum cost spanning tree
05:25 -
Prims algorithm
03:39 -
Prims algorithm DEMO
07:29 -
Kruskal_s algorithm
03:44 -
Kruskal algorithm DEMO
10:54
Asymptotic notations
-
Asymptotic notations
06:09