## Greedy algorithm vs dynamic programming

Greedy algorithms and dynamic programming are both techniques used in computer science for solving optimization problems, but they differ in their approach to finding the optimal solution.

## Sorting algorithms

There are many different sorting algorithms, each with its own set of advantages and disadvantages depending on the type of data being sorted and the desired outcome.

## Fast and slow pointer technique

The fast and slow pointer technique (also known as the tortoise and hare algorithm) uses two pointers to determine traits about directional data structures. This can be an array, a singly-linked list, or a graph. It is often applied to determine if there are any cycles in the data structure and is therefore also known as Floyd’s Cycle Detection Algorithm.