# Find cycle/loop in the graph – method 1

Find below algorithm to find loop/cycle in graph, Here in each stage I am checking for child node visited state. If any of the parent node has more than one child with visited state then it means graph has a loop. We can also use Disjoint Set (Or Union-Find) which I’ll show you in next article.

Algorithm to find cycle in graph

Find graph utility here
Find graph utility

# Activity Selection problem

Activity Selection problem, You are given n activities with their start and finish times. Select the maximum number of activities that can be performed by a single person.

# Generate Random Tree Based on max integer

This algorithm is to generate random tree based on max integer value. This is very useful when you want tree for your algorithm.

# Next greater element in an array

Algorithm to find next greater element in array for current element.

If we do linear search then it would take O(n^2) but here we are going to use stack to implement this algorithm. It will going to take O(n) time.

# Detect a loop in a linked list and how it works

Here we are going to use runner techniques, where there will be a two pointers slow and fast. Fast will going to take double steps then slow one, Lets see in below image.

# Find a peak element in an array

This algorithm to find peak element in an array, Peak element is an element which has greater value than its left and right element.

one way to get peak element is using linear search which takes O(n), but we can also search using binary algo.

# Create a balanced Binary Search Tree (BST) from an array

This example to generate balanced binary search tree from an array.
``` A binary tree is balanced if for each node it holds that the number of inner nodes in the left subtree and the number of inner nodes in the right subtree differ by at most 1.```

# Lowest Common Ancestor

This is to find lowest common ancestor node for two nodes in tree.

# Find all possible paths in matrix

This is to find all possible paths starting from left top corner of matrix to right bottom corner

But we have constrain on this. You can only move Right or bottom and we also have blocking, Here blocking means 0 and path means 1. You can move to particular right or bottom if we have 1 on this box.