## 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 division 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

- 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

## 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

- 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

- 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

## STL

## Recursion

## Hashing

**Other links:**

- Top Algorithms/Data Structures/Concepts every computer science student should know
- Top 30 Data Structures Problems for Technical Interview Preparation
- Best online courses for Data Structures And Algorithms

**Thank you all being with us. 🙂**