# Algorithms in C++: An Interview Refresher (Coderust)

Sorting & Searching - Challenge 5: Find Duplicates in Array Write a function to find the duplicates in an array in the most efficient way! View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/x1LjKnYWLGl). Sorting & Searching - Solution Review: Search Insert Position Let's look at a detailed analysis of the different ways to find the position to insert an element at in an array View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/m2lWGN12Pw9). Greedy Algorithms - Activity Scheduling Problem In this lesson, we go through a simple problem and solve it with the Greedy Approach. View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/qZyLkyEg8Rp). Graph Algorithms - Challenge 10: Topological Sorting of a Graph Given a graph, perform topological sorting of it. View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/N7p4Bzp2x48). Greedy Algorithms - Solution Review: Find the Egyptian Fraction This review provides a detailed analysis of how to convert a fraction to a series of Egyptian Fractions View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/JPnmDXmPJ0v). Greedy Algorithms - Challenge 7: Largest Number with Given Number of Digits and Sum of Digits Given the number of digits and the sum of the digits, find the largest number that can be created. View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/mynZLJpQRon). Greedy Algorithms - Challenge 6: Fractional Knapsack Problem Given weights and values of n items, put these in a knapsack of capacity W. View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/JEJ3NgBr5VJ). Dynamic Programming - Challenge 10: Edit Distance Problem Let’s solve the famous Edit Distance/Levenshtein Distance problem! Divide and Conquer - Solution Review: Peak Element This review discusses the solution of the Peak Element Challenge in detail. Appendix: Auxiliary Source Code - STL Classes This lesson provides you with the helper STL classes used throughout the course Appendix: Auxiliary Source Code - Array Functions Here is the code that we have used for several arrays. Sorting & Searching - Quicksort Let's now study the famous quicksort algorithm! View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/m7zPA1PvAr0). Graph Algorithms - Solution Review: Check if Removing Given Edge Creates Components in Graph This review provides a detailed analysis of the solution to remove a given edge from a graph. View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/qVNW95Grl97). Greedy Algorithms - Solution Review: Help the Policemen Catch the thieves! This review provides a detailed analysis of the solution to the catching thieves problem. View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/qVVoxpBKKL2). Greedy Algorithms - Challenge 4: Find Minimum Number of Platforms Required for a Train Station Given arrival and departure times of trains, calculate the number of platforms required for a train station. View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/xozQk3m29mJ). Greedy Algorithms - Challenge 5: Help the Policemen Catch the thieves! Given a number of policemen and thieves, calculate the maximum number of thieves that can be caught. View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/B1rn5JPXmoX). Dynamic Programming - Introducing Dynamic Programming With Fibonacci Numbers In this lesson, we'll use a dynamic programming technique called memoization to reduce the time complexity of the Fibonacci function. View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/qVlywvvqpA2). Dynamic Programming - Solution Review: The 0/1 Knapsack Problem This review provides a detailed analysis of the different ways to solve The Knapsack Problem View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/myxqGZp4Rr0). Divide and Conquer - Challenge 2: Peak Element In this lesson, we will find the peak element in a given array, the element that is greater than both of its neighbors. Graph Algorithms - Solution Review: Check if a Graph is Strongly Connected This review provides a detailed analysis of the solution to check whether a graph is strongly connected or not. Sorting & Searching - Solution Review: Dutch National Flag Problem In this review lesson we give a detailed analysis of the solutions for the Dutch National Problem. View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/N8w5GOP5JoL). Introduction to Complexity Measures - Example 2: Time Complexity of an Algorithm With Nested Loops In this lesson, we will learn how to compute the time complexity of an algorithm that involves nested for loops. View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/B6jjK6627kW). Graph Algorithms - Quiz on Graph Algorithms Let's test your understanding of Graph Algorithms View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/g7L5OAz0mm6). Sorting & Searching - Selection Sort, Bubble Sort, & Insertion Sort Here's an overview of introductory sorting algorithms such as selection sort, bubble sort, and insertion sort. View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/B62q79Pn2AJ). Introduction to Complexity Measures - Solution Review: Nested Loop with Multiplication (Pro) This review provides a detailed analysis of the different ways to solve the Nested Loop with Multiplication (Pro) challenge. View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/R1qPY49NxPR). Greedy Algorithms - Solution Review: Kruskal’s Solution to Minimum Spanning Tree In this review, we give a detailed analysis on finding the minimum spanning tree of the given graph using Kruskal's solution. View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/q2JJWNNX903). Graph Algorithms - Solution Review: Breadth First Graph Traversal In this review, we will learn how to write code for the Breadth-First Traversal of a Graph. View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/gx2l5pVnQ2j). Algorithmic Paradigms - Brute Force This lesson gives a gentle introduction to the Brute Force paradigm using Linear Search in an unsorted array. View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/RM8joM33mpL). Algorithmic Paradigms - Dynamic Programming Here is a quick introduction to the Dynamic Programming paradigm! View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/Y5YpG2MVE7n). Greedy Algorithms - Solution Review: Counting Money This review provides a detailed analysis of the different ways to solve the counting money challenge. View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/Y5Py2ZDjlzM). Introduction to Complexity Measures - Other Common Asymptotic Notations and Why Big O Trumps Them This lesson covers the various asymptotic notations for algorithms and why computer scientists prefer Big O instead of other notations. View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/gxX1glVJlYY). Introduction to Complexity Measures - Solution Review: Big (O) of Nested Loop with Addition This review provides a detailed analysis of the time complexity of the Nested Loop with Addition problem! View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/Y5XqKjGvA7O). Introduction to Complexity Measures - Challenge 7: Nested Loop with Multiplication (Pro) A pro-level exercise based on Big(O) of an algorithm involving nested loops and the loop variables increment with multiplication and addition. View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/mEXPvzkY68r). Sorting & Searching - Solution Review: Group Anagrams Here's a detailed analysis on how to solve the Group Anagrams problem View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/mEmM3yR2QNA). Sorting & Searching - Solution Review: Search in Sorted Matrix This review lesson gives a detailed analysis of the solutions to search a target in a sorted matrix. View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/RL7mGj397mw). Graph Algorithms - Solution Review: Calculate the Number of Nodes in a Given Graph Level This review provides a detailed analysis of the different ways to calculate the number of nodes in an undirected graph level. View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/N7lm14vvKNv). Graph Algorithms - Challenge 4: Print the Transpose of a Graph Given a graph, find its transpose. View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/myj0v2P4mYE). Divide and Conquer - Challenge 3: Maximum Subarray Sum In this lesson, we will solve the challenge of calculating the maximum sum subarray in a given array. Graph Algorithms - Challenge 5: Print all Paths Between Two Nodes Given a graph, print all paths that exist between two nodes View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/qZB3mPx3KJy). Graph Algorithms - Solution Review: Print all Connected Components of a Graph This review provides a detailed analysis of the solution to print all connected components of a graph. View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/q2Yy4gm72Lk). Graph Algorithms - Challenge 8: Check if Removing Edge Creates Components in Graph Given a graph and an edge, check whether removing that edge creates components in the graph. View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/N8kyljr58w6). Greedy Algorithms - Solution Review: Find Minimum Number of Platforms Required for a Train Station This review provides a detailed analysis of the solutions to find the number of platforms required for a train station. View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/39q6xA0NYLn). Divide and Conquer - Solution Review: Maximum Subarray Sum This review discusses the solution of the Maximum Subarray Sum Challenge in detail. Divide and Conquer - Solution Review: Merge a Number of Sorted Arrays This review discusses the solution of the Merge Sorted Arrays challenge in detail. Dynamic Programming - Challenge 2: Staircase Problem Let's solve the triple step problem! Otherwise known as the staircase problem! View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/7ABm4NQoZ2B). Divide and Conquer - Solution Review: Collect Coins in Minimum Steps This review discusses the solution of the Collect Coins in Minimum Steps challenge in detail. Divide and Conquer - Solution Review: Missing Number in Sorted Array This review discusses the solution of the Missing Number in Sorted Array challenge in detail. Introduction to Complexity Measures - Useful Formulae In this lesson, we'll study some mathematical formulae that would make calculating time complexity easier! View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/N7JGzGEl6Oz). Introduction to Complexity Measures - Challenge 2: Big (O) of Nested Loop with Subtraction Compute Big(O) of an algorithm that involves nested loops and the loop variables decrement. View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/JPr5ZzrVvvK). Divide and Conquer - Solution Review: Shuffle Integers This review discusses the solution of the Shuffle Integers challenge in detail. Dynamic Programming - Challenge 1: The 0/1 Knapsack Problem In this challenge, we'll introduce the famous 'knapsack problem' and solve a coding challenge on it. View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/q2mVgvQ6K2p). Dynamic Programming - Solution Review: Longest Common Substring This review provides a detailed analysis of the different ways to solve the Longest Common Substring problem View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/m79kQXZ9px9). Dynamic Programming - Challenge 6: Longest Palindromic Subsequence Let’s write code to find the longest palindromic subsequence of a given string. Algorithmic Paradigms - Greedy Algorithms This lesson introduces the Greedy problem-solving technique. View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/JP5xOwonrlK). Sorting & Searching - Challenge 4: Find the Median of Two Sorted Arrays Let's write a function to find the median of two sorted arrays View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/39Qx4vBBqxR). Sorting & Searching - Challenge 3: Group Anagrams Have questions about Challenge 3: Group Anagrams? Go for it! View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/B8nxxgv9Pz2). Sorting & Searching - Solution Review: Find Two Numbers that Add up to "n" This review provides a detailed analysis of the different ways to solve the previous challenge View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/mE6nX6AVnDr). Sorting & Searching - Solution Review: Search in a Rotated Array Let's look at a detailed analysis of all the ways to search in a rotated array. View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/q2KAxqz58DR). Graph Algorithms - Solution Review: Check If Given Graph is Bipartite In this review lesson, we give a detailed analysis of the solution to check if the given graph is bipartite or not. View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/qV9p1rRvZy3). Sorting & Searching - Searching Algorithms Let's study some famous and important searching algorithms including binary search! View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/YQpPNvN3LAY). Dynamic Programming - Challenge 3: The Partition Problem Let's write code to solve the partition problem! View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/gkKGN01MZJG). Dynamic Programming - Solution Review: Shortest Common Supersequence This review provides a detailed analysis of the different ways to solve the shortest common supersequence problem Greedy Algorithms - Challenge 8: Graph Coloring Given a graph, color it in such a way that no adjacent graphs are the same color. View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/R81AmB3Y2DL). Greedy Algorithms - Challenge 1: Counting Money! Given infinite quarters, dimes, nickels and pennies, calculate the minimum number of coins to represent a number V. Implement the solution in C++ and see if your code runs successfully! View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/gk27QYBAV4G). Sorting & Searching - Challenge 9: Sparse Search Given a sorted array of strings interspersed with empty strings, find the index of a given string. View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/3jyP9XlR87p). Graph Algorithms - Solution Review: Depth First Graph Traversal In this review, we learn how to write code for the Depth-First Traversal of a Graph View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/3Y8RrDAAL0O). Greedy Algorithms - Solution Review: Largest Number with Given Number of Digits and Sum of Digits In this review, we give a detailed analysis of the solution to the previous challenge. View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/3Y6qP7VZLAr). Greedy Algorithms - Solution Review: Graph Coloring This review provides a detailed analysis of the solution to the graph coloring problem. View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/3wn68GxQxpr). Graph Algorithms - Introduction to Graph Algorithms and Implementation In this lesson, we learn about graphs and how we represent them. View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/xVVXPWoRjn3). Sorting & Searching - Solution Review: Count Element Occurrence Here is a detailed analysis of the different ways to count the frequency of a number in a sorted array of integers View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/xVnLyXKpzOE). Sorting & Searching - Challenge 10: Dutch National Flag Problem Have questions about Challenge 10: Dutch National Flag Problem? Go for it! View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/qV39OlK6ql2). Sorting & Searching - Challenge 7: Count Element Occurrence Have questions about Challenge 7: Count Element Occurrence? Go for it! View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/B65g8OWg6WX). Sorting & Searching - Challenge 6: Search in Sorted Matrix Given a target, tell whether it is present in the matrix or not. View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/39RD24wZoGQ). Introduction - Who This Course Is For Intended audience and pre-requisites for this course View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/q2ODgP2vp67). Introduction to Complexity Measures - Challenge 5: Nested Loop with Multiplication (Intermediate) Here's an intermediate level exercise to determine the Big(O) time complexity of an algorithm that involves nested loops and the loop variables increment with multiplication. View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/m764GYqV74r). Introduction - Learning Outcomes A brief summary of what you would learn in this course View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/R1vQXOlM5G0). Greedy Algorithms - Solution Review: Find the Shortest Distance of Each Node from the Source This review provides a detailed analysis of the solutions to find the shortest distance of each node from the source. View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/3wVZW7qDkwn). Greedy Algorithms - Solution Review: Prim's Solution to Minimum Spanning Trees In this review, we give a detailed analysis on finding the minimum spanning tree of the given graph using Prim's solution. View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/YMn73vOZVRW). Graph Algorithms - Challenge 7: Print all Connected Components in a Graph Given an undirected graph, find all connected components in a graph. View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/3j2NQWl3P4R). Dynamic Programming - Challenge 7: The Coin Change Problem Let’s solve a coding challenge on the different ways to represent a given number of cents. Dynamic Programming - Challenge 8: Egg Dropping Problem Let’s solve the famous egg dropping problem! Divide and Conquer - Challenge 1: Euclidean Algorithm In this lesson, we will introduce the Euclidean Algorithm for calculating the greatest common divisor and solve a challenge on it. Dynamic Programming - Solution Review: Egg Dropping Problem Have questions about Solution Review: Egg Dropping Problem? Go for it! Dynamic Programming - Solution Review: The Edit Distance Problem This review provides a detailed analysis of the ways to solve the famous Edit Distance problem. Dynamic Programming - Solution Review: Coin Change Problem This review provides a detailed analysis of the different ways to solve The Coin Change Problem Divide and Conquer - Solution Review: Euclidean Algorithm This review discusses the solution of the Euclidean Algorithm Challenge in detail. Divide and Conquer - Pascal's Triangle This lesson discusses another problem that falls under the paradigm of divide and conquer algorithms: Pascal’s Triangle. Dynamic Programming - Quiz on Dynamic Programming Here’s a quiz to test your dynamic programming skills! Graph Algorithms - Challenge 1: Implement Breadth First Graph Traversal Implement Breadth First Graph Traversal. View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/B8lOgwyJwQW). Divide and Conquer - Challenge 10: Shuffle Integers In this lesson, we will solve a challenge on shuffling an array of 2n integers without using extra space. Divide and Conquer - Challenge 7: Closest Pair of Points In this lesson, we will solve a challenge on finding the closest pair of points in Euclidean space. Divide and Conquer - Challenge 8: Missing Number in Sorted Array In this lesson, we will solve a challenge on finding the missing number in a sorted array. Divide and Conquer - Challenge 9: Binary Search on Singly Linked List In this lesson, we will solve the challenge of performing Binary Search on Singly Linked List. Graph Algorithms - Challenge 3: Calculate the Number of Nodes in a Given Graph Level Given a graph, calculate the number of nodes in an undirected graph level. View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/gxM3ANNENwZ). Appendix: Auxiliary Source Code - Graph This lesson provides you with the helper Graph class used in our challenge lessons. Appendix: Auxiliary Source Code - Linked List This lesson provides you with the helper Linked List class used in our challenge lessons. Divide and Conquer - Solution Review: Closest Pair of Points This review discusses the solution of the Closest Pair of Points challenge in detail. Divide and Conquer - Quiz on Divide and Conquer This short quiz will test your knowledge on what you have learned in the previous chapters about divide and conquer approach. Appendix: Auxiliary Source Code - Binary Search Tree Have questions about Appendix: Auxiliary Source Code - Binary Search Tree? Go for it! Divide and Conquer - Solution Review: Binary Search on Singly Linked List This review discusses the solution of the Binary Search on Singly Linked List challenge in detail. Introduction to Complexity Measures - Challenge 1: Big (O) of Nested Loop with Addition Compute the Big O complexity of an algorithm that involves nested loops where the loop variables increase with addition. View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/xV4M2Dy0Yv9). Graph Algorithms - Solution Review: Print the Transpose of a Graph In this review lesson, we give a detailed analysis of how to transpose a graph. View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/JQrBGEGjW8y). Introduction to Complexity Measures - Introduction to Asymptotic Analysis and Big O In this lesson, we will learn about asymptotic notation, an important tool applied to the analysis of algorithms. View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/m2Mw9n0jnn0). Introduction to Complexity Measures - Solution Review: Big (O) of Nested Loop with Multiplication This review provides a detailed analysis of how to solve the Big (O) of Nested Loop with Multiplication Challenge. View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/qAvZwykBE0p). Introduction to Complexity Measures - Complexity Quiz: Test your understanding of Complexity The top ten most commonly asked interview questions about Complexity Measure will be covered in this lesson in the form of a quiz. View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/7nVKJqYoQG8). Graph Algorithms - Solution Review: Print all Paths Between Two Nodes This review provides a detailed analysis of the solution to print all paths between two nodes. View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/YMYVYzrO2MK). Divide and Conquer - Challenge 4: Merge a Number of Sorted Arrays In this lesson, we will solve the challenge of merging the sorted subarrays (an essential part of merge sort). Graph Algorithms - Challenge 2: Implement Depth First Graph Traversal Given a graph, print its depth-first graph traversal. View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/mE1gEYmNQgE). Dynamic Programming - Solution Review: Staircase Problem This review contains a detailed analysis of the different ways to solve the Staircase Problem. View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/mEGzKkrBAKG). Greedy Algorithms - Solution Review: Connecting n pipes with minimum cost This review provides a detailed analysis of the solution to connect n pipes with the minimum cost. View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/R889pO8W1Ez). Dynamic Programming - Challenge 9: Strings Interleaving Let’s write code to find out if a given string is the result of interleaving two other strings Divide and Conquer - Challenge 5: Collect Coins in Minimum Steps In this lesson, we will find out the minimum number of steps it takes to collect coins using a given array that is the height of vertically stacked coins. Greedy Algorithms - Challenge 9: Find the Minimum Spanning Tree of the Given Graph Given an undirected weighted graph, find its minimum spanning tree. View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/R8jPvP66jgL). Dynamic Programming - Memoizing Fibonacci Numbers In this lesson, we are going to reduce the time complexity of the Fibonacci code we wrote using a dynamic programming technique called memoization View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/B15M6GlrlmJ). Conclusion - Overview A quick rundown of what we learned in the course. Hope you had fun taking this course! Sorting & Searching - Challenge 2: Search in a Rotated Array Let's write a function to search in a sorted and rotated array View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/RL8GkZ76lvE). Dynamic Programming - Solution Review: Longest Palindromic Subsequence This review provides a detailed analysis of the different ways to solve the Longest Palindromic Subsequence Problem Divide and Conquer - Challenge 6: Find The Closest Number In this lesson, we will solve a challenge on finding the closest number to a given number in an array. Greedy Algorithms - Solution Review: Fractional Knapsack Problem This review provides a detailed analysis of the solution to the fractional knapsack problem. View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/mEmyZ69WkOR). Introduction to Complexity Measures - Solution Review: Nested Loop with Multiplication (Basic) This review provides a detailed analysis of how to solve the nested loop with a multiplication problem. View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/R86pOMzyngL). Introduction to Complexity Measures - Challenge 4: Nested Loop with Multiplication (Basic) A basic exercise based on the Big(O) of an algorithm that involves nested loops and the loop variables increment with multiplication. View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/N8rylJZQM46). Introduction to Complexity Measures - Solution Review: Big (O) of Nested Loop with Subtraction This review provides a detailed analysis of how to solve the Big (O) of Nested Loop with Subtraction challenge. View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/g2KB7jwYgkD). Introduction to Complexity Measures - Solution Review: Nested Loop with Multiplication (Intermediate) Here's a solution review for the exercise in the last lesson. View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/N8ogAmp3m5m). Sorting & Searching - Merge Sort From this lesson on, we'll study some key sorting algorithms that are used in real-life projects—the first of which is merge sort! View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/my1vEn9NR3R). Sorting & Searching - Overview of Sorting Algorithms Here's a quick summary of the time complexity of sorting algorithms. View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/gkJ3znnE7n9). Sorting & Searching - Challenge 1: Find Two Numbers that Add up to "n" Have questions about Challenge 1: Find Two Numbers that Add up to "n"? Go for it! View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/xo16928V0mn). Greedy Algorithms - Challenge 10: Find Shortest Distance of Each Node from the Source Given a graph and a source node, find the shortest distance between the source node and all the other nodes. View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/mynn1Py3pyG). Greedy Algorithms - Quiz on Greedy Algorithms Let's test your understanding of Greedy Algorithms View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/Y5Kr828AnwA). Graph Algorithms - Challenge 6: Check If Graph is Strongly Connected Given a graph, check whether it is strongly connected or not. View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/g70my2j5xMk). Sorting & Searching - Solution Review: Find the Median of Two Sorted Arrays In this review lesson, we give a detailed analysis of the solution to find the median of two sorted arrays. View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/RMk6o30xEX0). Dynamic Programming - Challenge 5: Shortest Common Superstring Given two strings, let’s write a function to find their shortest common supersequence Dynamic Programming - Tabulating Fibonacci Numbers Let's tabulate the code to find the nth Fibonacci number now. View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/B1DRLqNANnW). Dynamic Programming - Solution Review: The Partition Problem This review provides a detailed analysis of the ways to solve the partition problem View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/mE4BRMAm4w9). Sorting & Searching - Quiz on Sorting & Searching Let's test your understanding of sorting and searching algorithms! View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/q2R4zVymw6r). Introduction to Complexity Measures - Comparing Algorithms In this lesson, we are going to learn how two or more algorithms may be compared. View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/m2M5016E4mG). Introduction to Complexity Measures - Example 1: Measuring Time Complexity of a Single Loop Algorithm In this lesson, we are going to learn how to compute the time complexity of an algorithm that involves a for loop. View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/7X44WGxzVEB). Introduction to Complexity Measures - Common Complexity Scenarios This lesson summarizes our discussion of complexity measures and includes some commonly used examples and handy formulae to help you with your interview. View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/R1rZJoz9WvE). Introduction to Complexity Measures - Challenge 6: Nested Loop with Multiplication (Advanced) An advanced exercise based on Big(O) of an algorithm that involves nested loops and the loop variables increment with multiplication and addition. View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/7AgOQ6ZNNLO). Introduction to Complexity Measures - Challenge 3: Big (O) of Nested Loop with Multiplication Compute Big(O) of an algorithm that involves nested loops and the loop variables increment with multiplication. View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/JQXrYvJwpjg). Introduction to Complexity Measures - Solution Review: Nested Loop with Multiplication (Advanced) This review provides a detailed analysis of how to solve the Nested Loop with Multiplication challenge View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/m7kJQwVMZYA). Sorting & Searching - Solution Review: Find Duplicates in Array Let's look at the various solutions to find the duplicates in an array View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/B17MVZvk9QX). Conclusion - Where to Go from Here Thank you for taking our course! Graph Algorithms - Challenge 9: Check If Given Graph is Bipartite Given an undirected graph, check whether it is Bipartite or not. View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/3YxKvBgVZz4). Graph Algorithms - Solution Review: Topological Sorting of a Graph This review provides a detailed analysis of the solution to perform topological sorting of a graph. View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/YQNOQ6Oxwrn). Greedy Algorithms - Challenge 2: Connecting n pipes with minimum cost Given n pipes, find the minimum cost of connecting them. View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/g766kPBlODD). Dynamic Programming - Calculating Fibonnacci Numbers In this lesson, we'll look at the classic method to find the nth Fibonacci number and its time complexity using recurrence relations View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/xV634O2M8Ml). Dynamic Programming - Solution Review: Strings Interleaving Let’s analyze the different ways to solve the string interleaving problem Algorithmic Paradigms - Divide and Conquer Have questions about Divide and Conquer? Go for it! View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/RLkjpNRJKx0). Greedy Algorithms - Challenge 3: Find the Egyptian Fraction Given a positive fraction, break it down into its Egyptian fractions. View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/m7o3njvAGZn). Sorting & Searching - Challenge 8: Search Insert Position Let's write a function to find the appropriate position to insert a new element in a sorted array View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/gxxA1ymqoX6). Sorting & Searching - Solution Review: Sparse Search In this review lesson, we give a detailed analysis of the solutions to solve the sparse search problem. View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/gxvJvXEPpGY). Dynamic Programming - Challenge 4: Longest Common Substring Let's write some code to find the longest common substring View the lesson [here](https://www.educative.io/courses/algorithms-in-cpp-an-interview-refresher/7AL7VJzm8DA). Divide and Conquer - Introduction to Divide and Conquer with Binary Search This lesson introduces the Divide and Conquer technique of solving a problem using Binary Search in a sorted array Divide and Conquer - Solution Review: Find Closest Number This review discusses the solution of the Find Closest Number challenge in detail.