Index: |

- Array
- Backtracking
- Bit Manipulation
- Binary Tree
- Binary Search Tree (BST)
- Divide & Conquer
- Dynamic Programming
- Graphs
- Heap
- Linked List
- Matrix
- Queue
- Sorting
- Stack
- String
- Trie
- Greedy
- Puzzles

# Array

- Find pair with given sum in the array
- Find sub-array with 0 sum
- Sort binary array in linear time
- Find a duplicate element in a limited range array
- Find largest sub-array formed by consecutive integers
- Find maximum length sub-array having given sum
- Find maximum length sub-array having equal number of 0’s and 1’s
- Sort an array containing 0’s, 1’s and 2’s (Dutch national flag problem)
- Inplace merge two sorted arrays
- Merge two arrays by satisfying given constraints
- Find index of 0 to replaced to get maximum length sequence of continuous ones
- Find maximum product of two integers in an array
- Shuffle a given array of elements (Fisher–Yates shuffle)
- Rearrange the array with alternate high and low elements
- Find equilibrium index of an array
- Find majority element in an array (Boyer–Moore majority vote algorithm)
- Move all zeros present in the array to the end
- Replace each element of array with product of every other element without using / operator
- Find Longest Bitonic Subarray in an array
- Find maximum difference between two elements in the array by satisfying given constraints
- Maximum subarray problem (Kadane’s algorithm)
- Maximum Sum Circular Subarray
- Find all distinct combinations of given length
- Find all distinct combinations of given length with repetition allowed
- Find maximum sequence of continuous 1’s formed by replacing at-most k zeroes by ones
- Find minimum sum subarray of given size k
- Find subarray having given sum in given array of integers
- Find the length of smallest subarray whose sum of elements is greater than the given number
- Find largest number possible from set of given numbers
- Find the smallest window in array sorting which will make the entire array sorted
- Find maximum sum path involving elements of given arrays
- Maximum profit earned by buying and selling shares any number of times
- Trapping Rain Water within given set of bars
- Longest Increasing Subsequence
- Find maximum product subarray in a given array
- Find maximum sum of subsequence with no adjacent elements
- Find minimum platforms needed in the station so to avoid any delay in arrival of any train
- Decode the array constructed from another array
- Sort an array using one swap
- Find Triplet with given sum in an array
- Length of longest continuous sequence with same sum in given binary arrays

- Merging Overlapping Intervals
- Activity Selection Problem
- Job Sequencing Problem with Deadlines
- Introduction to Priority Queues using Binary Heaps
- Min Heap and Max Heap Implementation in C++
- Heap Sort (Out-of-place and In-place implementation in C++ and C)
- Check if given array represents min heap or not
- Convert Max Heap to Min Heap in linear time
- Find K’th largest element in an array
- Sort a K-Sorted Array
- Merge M sorted lists of variable length
- Find K’th smallest element in an array
- Find smallest range with at-least one element from each of the given lists
- Merge M sorted lists each containing N elements
- Insertion sort | Iterative & Recursive
- Selection sort | Iterative & Recursive
- Bubble sort | Iterative & Recursive
- Merge Sort Algorithm
- Quicksort Algorithm
- Iterative Implementation of Quicksort
- Hybrid QuickSort
- Quicksort using Dutch National Flag Algorithm
- Quick Sort using Hoare’s Partitioning scheme
- External merge sort
- Custom Sort | Sort elements by their frequency and Index
- Custom Sort | Sort elements of the array by order of elements defined by the second array
- Inversion Count of an array
- Segregate positive and negative integers in linear time
- Binary Search
- Ternary Search vs Binary search
- Interpolation search
- Exponential search
- Find number of rotations in a circularly sorted array
- Search an element in a circular sorted array
- Find first or last occurrence of a given number in a sorted array
- Count occurrences of a number in a sorted array with duplicates
- Find smallest missing element from a sorted array
- Find Floor and Ceil of a number in a sorted array
- Search in a nearly sorted array in O(logn) time
- Find number of 1’s in a sorted binary array
- Find the peak element in an array
- Maximum Sum Subarray using Divide & Conquer
- Find Minimum and Maximum element in an array using minimum comparisons
- Matrix Chain Multiplication
- 0-1 Knapsack problem
- Maximize value of the expression
- Partition problem
- Subset sum problem
- Minimum Sum Partition problem
- Rod Cutting
- Coin change-making problem (unlimited supply of coins)
- Coin Change Problem (Total number of ways to get the denomination of coins)
- Longest alternating subsequence
- Combinations of words formed by replacing given numbers with corresponding alphabets
- Decode the given sequence to construct minimum number without repeated digits
- All combinations of elements satisfying given constraints

# Backtracking

- Print all possible solutions to N Queens problem
- Print all Possible Knight’s Tours in a chessboard
- Magnet Puzzle
- Find Shortest Path in Maze
- Find Longest Possible Route in a Matrix
- Find path from source to destination in a matrix that satisfies given constraints
- Find total number of unique paths in a maze from source to destination
- Print All Hamiltonian Path present in a graph
- Print all k-colorable configurations of the graph (Vertex coloring of graph)
- Find all Permutations of a given string
- All combinations of elements satisfying given constraints
- Find all binary strings that can be formed from given wildcard pattern

# Bit Manipulation

- Bit Hacks – Part 1 (Basic)
- Bit Hacks – Part 2 (Playing with k’th bit)
- Bit Hacks – Part 3 (Playing with rightmost set bit of a number)
- Bit Hacks – Part 4 (Playing with letters of English alphabet)
- Bit Hacks – Part 5 (Find absolute value of an integer without branching)
- Bit Hacks – Part 6 (Random Problems)
- Brian Kernighan’s Algorithm to count set bits in an integer
- Compute parity of a number using lookup table
- Count set bits using lookup table
- Find the minimum or maximum of two integers without using branching
- Multiply 16-bit integers using 8-bit multiplier
- Round up to the next highest power of 2
- Round up to the previous power of 2
- Swap individual bits at given position in an integer
- Check if given number is power of 4 or not
- Reverse Bits of a given Integer

- Generate binary numbers between 1 to N
- Efficiently implement power function | Recursive and Iterative
- Find square of a number without using multiplication and division operator | 3 methods
- Generate power set of a given set
- Huffman Coding

# Binary Tree

- Check if two given binary trees are identical or not | Iterative & Recursive
- Calculate height of a binary tree | Iterative & Recursive
- Delete given Binary Tree | Iterative & Recursive
- Inorder Tree Traversal | Iterative & Recursive
- Preorder Tree Traversal | Iterative & Recursive
- Postorder Tree Traversal | Iterative & Recursive
- Level Order Traversal of Binary Tree
- Spiral Order Traversal of Binary Tree
- Reverse Level Order Traversal of Binary Tree
- Print all nodes of a given binary tree in specific order
- Print left view of binary tree
- Print Bottom View of Binary Tree
- Print Top View of Binary Tree
- Find next node in same level for given node in a binary tree
- Check if given binary tree is complete binary tree or not
- Determine if given two nodes are cousins of each other
- Print cousins of given node in a binary tree
- In-place convert given binary tree to its sum tree
- Check if given binary tree is a sum tree or not
- Combinations of words formed by replacing given numbers with corresponding alphabets
- Determine if given binary tree is a subtree of another binary tree or not
- Find diameter of a binary tree
- Check if given binary Tree has symmetric structure or not
- Convert binary tree to its mirror
- Check if binary tree can be converted to another by doing any no. of swaps of left & right child
- Find Lowest Common Ancestor (LCA) of two nodes in a binary tree
- Print all paths from root to leaf nodes in given binary tree
- Find ancestors of given node in a Binary Tree
- Find the distance between given pairs of nodes in a binary tree
- Find Vertical Sum in a given Binary Tree
- Print nodes in vertical order of a given Binary Tree (Vertical Traversal)
- Find the diagonal sum of given binary tree
- Print Diagonal Traversal of Binary Tree
- Print corner nodes of every level in binary tree
- In-place convert convert given Binary Tree to Doubly Linked List
- Sink nodes containing zero to the bottom of the binary tree
- Convert given binary tree to full tree by removing half nodes
- Truncate given binary tree to remove nodes which lie on a path having sum less than K
- Find maximum sum root-to-leaf path in a binary tree
- Check if given binary tree is height balanced or not
- Convert normal binary tree to Left-child right-sibling binary tree
- Determine if given Binary Tree is a BST or not
- Convert a Binary Tree to BST by maintaining its original structure

# Binary Search Tree (BST)

- Insertion in BST
- Search given key in BST
- Deletion from BST
- Construct balanced BST from given keys
- Determine if given Binary Tree is a BST or not
- Check if given keys represents same BSTs or not without building the BST
- Find inorder predecessor for given key in a BST
- Find Lowest Common Ancestor (LCA) of two nodes in a Binary Search Tree
- Find K’th smallest and K’th largest element in BST
- Floor and Ceil in a Binary Search Tree
- Find optimal cost to construct binary search tree
- Convert a Binary Tree to BST by maintaining its original structure

# Divide & Conquer

- Binary Search
- Ternary Search vs Binary search
- Exponential search
- Interpolation search
- Find number of rotations in a circularly sorted array
- Search an element in a circular sorted array
- Find first or last occurrence of a given number in a sorted array
- Count occurrences of a number in a sorted array with duplicates
- Find smallest missing element from a sorted array
- Find Floor and Ceil of a number in a sorted array
- Search in a nearly sorted array in O(logn) time
- Find number of 1’s in a sorted binary array
- Find the peak element in an array
- Maximum Sum Subarray using Divide & Conquer
- Find Minimum and Maximum element in an array using minimum comparisons
- Efficiently implement power function | Recursive and Iterative

- Merge Sort Algorithm
- Merge Sort Algorithm for Singly Linked List
- Inversion Count of an array
- Quicksort Algorithm
- Iterative Implementation of Quicksort
- Hybrid QuickSort
- Quicksort using Dutch National Flag Algorithm
- Quick Sort using Hoare’s Partitioning scheme

# Dynamic Programming

- Introduction to Dynamic Programming
- Longest Common Subsequence | Introduction & LCS Length
- Longest Common Subsequence | Space optimized version
- Longest Common Subsequence of K-sequences
- Longest Common Subsequence | Finding all LCS
- Longest Common Substring problem
- Longest Palindromic Subsequence using Dynamic Programming
- Longest Repeated Subsequence problem
- Implement Diff Utility
- Shortest Common Supersequence | Introduction & SCS Length
- Shortest Common Supersequence | Finding all SCS
- Shortest Common Supersequence | Using LCS
- Longest Increasing Subsequence using Dynamic Programming
- Longest Bitonic Subsequence
- Increasing Subsequence with Maximum Sum
- The Levenshtein distance (Edit distance) problem
- Find size of largest square sub-matrix of 1’s present in given binary matrix
- Matrix Chain Multiplication
- Find the minimum cost to reach last cell of the matrix from its first cell
- Find longest sequence formed by adjacent numbers in the matrix
- Count number of paths in a matrix with given cost to reach destination cell
- 0-1 Knapsack problem
- Maximize value of the expression
- Partition problem
- Subset sum problem
- Minimum Sum Partition problem
- Find all N-digit binary strings without any consecutive 1’s
- Rod Cutting
- Maximum Product Rod Cutting
- Coin change-making problem (unlimited supply of coins)
- Coin Change Problem – Find total number of ways to get the denomination of coins
- Longest alternating subsequence
- Count number of times a pattern appears in given string as a subsequence
- Collect maximum points in a matrix by satisfying given constraints
- Count total possible combinations of N-digit numbers in a mobile keypad
- Find optimal cost to construct binary search tree
- Word Break Problem
- Wildcard Pattern Matching

- Find probability that a person is alive after taking N steps on the island
- Calculate sum of all elements in a sub-matrix in constant time
- Find maximum sum K x K sub-matrix in a given M x N matrix
- Find maximum sum submatrix present in a given matrix
- Find maximum sum of subsequence with no adjacent elements
- Maximum subarray problem (Kadane’s algorithm)
- Single-Source Shortest Paths – Bellman Ford Algorithm
- All-Pairs Shortest Paths – Floyd Warshall Algorithm

# Graphs

- Terminology and Representations of Graphs
- Graph Implementation using STL
- Graph Implementation in C++ without using STL
- Breadth First Search (BFS) | Iterative & Recursive Implementation
- Depth First Search (DFS) | Iterative & Recursive Implementation
- Arrival and Departure Time of Vertices in DFS
- Types of edges involved in DFS and relation between them
- Bipartite Graph
- Minimum number of throws required to win Snake and Ladder game
- Topological Sorting in a DAG
- Transitive Closure of a Graph
- Check if an undirected graph contains cycle or not
- Total paths in given digraph from given source to destination having exactly m edges
- Determine if an undirected graph is a Tree (Acyclic Connected Graph)
- 2-Edge Connectivity in the graph
- 2-Vertex Connectivity in the graph
- Check if given digraph is a DAG (Directed Acyclic Graph) or not
- Disjoint-Set Data Structure (Union-Find Algorithm)
- Chess Knight Problem – Find Shortest path from source to destination
- Check if given Graph is Strongly Connected or not
- Check if given Graph is Strongly Connected or not using one DFS Traversal
- Union-Find Algorithm for Cycle Detection in undirected graph
- Kruskal’s Algorithm for finding Minimum Spanning Tree
- Single-Source Shortest Paths – Dijkstra’s Algorithm
- Single-Source Shortest Paths – Bellman Ford Algorithm
- All-Pairs Shortest Paths – Floyd Warshall Algorithm

- Print all k-colorable configurations of the graph (Vertex coloring of graph)
- Print All Hamiltonian Path present in a graph
- Greedy coloring of graph

# Heap

- Introduction to Priority Queues using Binary Heaps
- Min Heap and Max Heap Implementation in C++
- Heap Sort (Out-of-place and In-place implementation in C++ and C)
- Check if given array represents min heap or not
- Convert Max Heap to Min Heap in linear time
- Find K’th largest element in an array
- Sort a K-Sorted Array
- Merge M sorted lists of variable length
- Find K’th smallest element in an array
- Find smallest range with at-least one element from each of the given lists
- Merge M sorted lists each containing N elements

- External merge sort
- Huffman Coding
- Find first k maximum occurring words in given set of strings
- Find first k non-repeating characters in a string in single traversal

# Linked List

- Introduction to Linked Lists
- Linked List Implementation | Part 1
- Linked List Implementation | Part 2
- Static Linked List in C
- Clone given Linked List
- Delete Linked List
- Pop operation in linked list
- Insert given node into the correct sorted position in the given sorted linked list
- Given a linked list, change it to be in sorted order
- Split the nodes of the given linked list into front and back halves
- Remove duplicates from a sorted linked list
- Move front node of the given list to the front of the another list
- Move even nodes to the end of the list in reverse order
- Split given linked list into two lists where each list containing alternating elements from it
- Construct a linked list by merging alternate nodes of two given lists
- Merge given sorted linked lists into one
- Merge Sort Algorithm for Singly Linked List
- Intersection of two given sorted linked lists
- Reverse linked list | Part 1 (Iterative Solution)
- Reverse linked list | Part 2 (Recursive Solution)
- Reverse every group of k nodes in given linked list
- Find K’th node from the end in a linked list
- Merge alternate nodes of two linked lists into the first list
- Merge two sorted linked lists from their end
- Delete every N nodes in a linked list after skipping M nodes
- Rearrange linked list in specific manner in linear time
- Check if linked list is palindrome or not
- Move last node to front in a given Linked List
- Rearrange the linked list in specific manner
- Detect Cycle in a linked list (Floyd’s Cycle Detection Algorithm)
- Sort linked list containing 0’s, 1’s and 2’s

# Matrix

- Print Matrix in Spiral Order
- Create Spiral Matrix from given array
- Shift all matrix elements by 1 in Spiral Order
- Find Shortest path from source to destination in a matrix that satisfies given constraints
- Change all elements of row i and column j in a matrix to 0 if cell (i, j) has value 0
- Print diagonal elements of the matrix having positive slope
- Find all paths from first cell to last cell of a matrix
- Replace all occurrences of 0 that are not surrounded by 1 in a binary matrix
- In-place rotate the matrix by 90 degrees in clock-wise direction
- Count negative elements present in sorted matrix in linear time
- Report all occurrences of an element in row wise and column wise sorted matrix in linear time
- Calculate sum of all elements in a sub-matrix in constant time
- Find maximum sum K x K sub-matrix in a given M x N matrix
- Find maximum sum submatrix present in a given matrix
- Find probability that a person is alive after taking N steps on the island
- Count the number of islands
- Flood fill Algorithm
- Find shortest safe route in a field with sensors present
- Find all occurrences of given string in a character matrix
- Shortest path in a Maze | Lee algorithm

- Travelling Salesman Problem using Branch and Bound
- Collect maximum points in a matrix by satisfying given constraints
- Count number of paths in a matrix with given cost to reach destination cell
- Find longest sequence formed by adjacent numbers in the matrix
- Find the minimum cost to reach last cell of the matrix from its first cell
- Matrix Chain Multiplication
- Find size of largest square sub-matrix of 1’s present in given binary matrix
- Chess Knight Problem – Find Shortest path from source to destination
- Find Duplicate rows in a binary matrix
- Print all possible solutions to N Queens problem
- Print all Possible Knight’s Tours in a chessboard
- Find Shortest Path in Maze
- Find Longest Possible Route in a Matrix

# Queue

- Chess Knight Problem – Find Shortest path from source to destination
- Shortest path in a Maze | Lee algorithm
- Find shortest safe route in a field with sensors present
- Flood fill Algorithm
- Count the number of islands
- Find Shortest path from source to destination in a matrix that satisfies given constraints
- Generate binary numbers between 1 to N
- Calculate height of a binary tree | Iterative & Recursive
- Delete given Binary Tree | Iterative & Recursive
- Level Order Traversal of Binary Tree
- Spiral Order Traversal of Binary Tree
- Reverse Level Order Traversal of Binary Tree
- Print all nodes of a given binary tree in specific order
- Print left view of binary tree
- Find next node in same level for given node in a binary tree
- Check if given binary tree is complete binary tree or not
- Print Diagonal Traversal of Binary Tree
- Print corner nodes of every level in binary tree
- Breadth First Search (BFS) | Iterative & Recursive Implementation
- Minimum number of throws required to win Snake and Ladder game
- Check if an undirected graph contains cycle or not

# Sorting

- Insertion sort | Iterative & Recursive
- Selection sort | Iterative & Recursive
- Bubble sort | Iterative & Recursive
- Merge Sort Algorithm
- Quicksort Algorithm
- Iterative Implementation of Quicksort
- Hybrid QuickSort
- Quicksort using Dutch National Flag Algorithm
- Quick Sort using Hoare’s Partitioning scheme
- External merge sort
- Custom Sort | Sort elements by their frequency and Index
- Custom Sort | Sort elements of the array by order of elements defined by the second array
- Inversion Count of an array
- Segregate positive and negative integers in linear time

- Find the smallest window in array sorting which will make the entire array sorted
- Find largest number possible from set of given numbers
- Move all zeros present in the array to the end
- Sort binary array in linear time
- Sort linked list containing 0’s, 1’s and 2’s
- Merge Sort Algorithm for Singly Linked List
- Group anagrams together from given list of words
- Activity Selection Problem
- Lexicographic sorting of given set of keys
- Heap Sort (Out-of-place and In-place implementation in C++ and C)
- Merge M sorted lists of variable length
- Merge M sorted lists each containing N elements
- Find all palindromic permutations of a string
- Find all lexicographically next permutations of a string sorted in ascending order
- Merge two sorted linked lists from their end
- Sort an array containing 0’s, 1’s and 2’s (Dutch national flag problem)
- Find pair with given sum in the array
- Inplace merge two sorted arrays
- Merge two arrays by satisfying given constraints
- Find maximum product of two integers in an array
- Find all distinct combinations of given length
- Find all distinct combinations of given length with repetition allowed
- Merging Overlapping Intervals

# Stack

- Check if given expression is balanced expression or not
- Find duplicate parenthesis in an expression
- Evaluate given postfix expression
- Decode the given sequence to construct minimum number without repeated digits

- Inorder Tree Traversal | Iterative & Recursive
- Preorder Tree Traversal | Iterative & Recursive
- Postorder Tree Traversal | Iterative & Recursive
- Find ancestors of given node in a Binary Tree
- Check if two given binary trees are identical or not | Iterative & Recursive
- Reverse given text without reversing the individual words
- Find all binary strings that can be formed from given wildcard pattern
- Iterative Implementation of Quicksort
- Depth First Search (DFS) | Iterative & Recursive Implementation

# String

- Check if given string is a rotated palindrome or not
- Longest Palindromic Substring (Non-DP Space Optimized Solution)
- Check if repeated subsequence is present in the string or not
- Check if strings can be derived from each other by circularly rotating them
- Check if given set of moves is circular or not
- Convert given number into corresponding excel column name
- Determine if two strings are anagram or not
- Find all binary strings that can be formed from given wildcard pattern
- Find all interleavings of given strings
- Isomorphic Strings
- Find all possible palindromic substrings in a string
- Find all possible combinations of words formed from mobile keypad
- Find all possible combinations by replacing given digits with characters of the corresponding list
- Find all words from given list that follows same order of characters as given pattern
- Find first k non-repeating characters in a string in single traversal
- Group anagrams together from given list of words
- Introduction to Pattern Matching
- Inplace remove all occurrences of ‘AB’ and ‘C’ from the string
- Longest even length palidromic sum substring
- Print string in zig-zag form in k rows
- Reverse given text without reversing the individual words
- Run Length Encoding (RLE) data compression algorithm
- Validate an IP address
- Find the longest substring of given string containing k distinct characters
- Find all palindromic permutations of a string
- Find all substrings of a string that are permutation of a given string
- Find the longest substring of given string containing all distinct characters
- Find all Permutations of a given string
- Find all lexicographically next permutations of a string sorted in ascending order
- Find Lexicographically minimal string rotation
- Find all strings of given length containing balanced parentheses
- Find all N-digit binary numbers with k-bits set where k ranges from 1 to N
- Generate binary numbers between 1 to N
- Find all combinations of non-overlapping substrings of a string
- Check if given sentence is syntactically correct or not
- Find all N-digit strictly increasing numbers (Bottom-Up and Top-Down Approach)
- Calculate rank of given string among all its lexicographically sorted permutations

- Combinations of words formed by replacing given numbers with corresponding alphabets
- Word Break Problem
- Wildcard Pattern Matching
- Count number of times a pattern appears in given string as a subsequence
- The Levenshtein distance (Edit distance) problem
- Longest Common Subsequence | Introduction & LCS Length
- Longest Common Subsequence | Space optimized version
- Longest Common Subsequence of K-sequences
- Longest Common Subsequence | Finding all LCS
- Longest Repeated Subsequence problem
- Longest Palindromic Subsequence using Dynamic Programming
- Longest Common Substring problem
- Shortest Common Supersequence | Introduction & SCS Length
- Shortest Common Supersequence | Finding all SCS
- Shortest Common Supersequence | Using LCS
- Implement Diff Utility

# Trie

- Trie Implementation | Insert, Search and Delete
- Memory efficient Trie Implementation using Map | Insert, Search and Delete
- Longest Common Prefix in given set of strings (using Trie)
- Lexicographic sorting of given set of keys
- Find maximum occurring word in given set of strings
- Find first k maximum occurring words in given set of strings
- Find Duplicate rows in a binary matrix

# Greedy

# Puzzles

- Clock angle problem – Find angle between hour and minute hand
- Add two numbers without using addition operator | 4 methods
- Generate power set of a given set
- Implement power function without using multiplication and division operators
- Print all numbers between 1 to N without using semicolon
- Swap two numbers without using third variable | 5 methods
- Determine the if condition to print specific output
- Find maximum, minimum of three numbers without using conditional statement and ternary operator | 4 methods
- Find numbers represented as sum of two cubes for two different pairs
- Print “Hello World” with empty main() function | 3 methods
- Tower of Hanoi Problem
- Print all numbers between 1 to N without using any loop | 4 methods
- Print a semicolon without using semicolon anywhere in the program
- Multiply two numbers without using multiplication operator or loops
- Find square of a number without using multiplication and division operator | 3 methods
- Magnet Puzzle

**Thank you all for your valuable time and being with us. 🙂**