This repository is dedicated to the study of algorithms for interview preparation. It contains implementations of various algorithms in Kotlin, with a focus on understanding and mastering the underlying concepts.
The repository is organized into different Kotlin files, each containing implementations of various algorithms and their corresponding test cases.
This is the main entry point of the application. It contains calls to test functions for each implemented algorithm.
The process of determining how efficient an algorithm is. Complexity analysis usually involves finding both the time complexity and the space complexity of an algorithm. Complexity analysis is effectively used to determine how "good" an algorithm is and whether it's "better" than another one.
A measure of how fast an algorithm runs, time complexity is a central concept in the field of algorithms and in coding interviews. It's expressed using "Big O" notation, which is a way to describe how the runtime of an algorithm
A measure of how much auxiliary memory an algorithm takes up, space complexity is a central concept in the field of algorithms and in coding interviews. It's expressed using "Big O" notation, which is a way to describe how the memory usage of an algorithm scales as its input size grows.
These collections of edges and vertices might look as banal as a child's scribble on a restaurant table, but they're of fundamental importance in discrete mathematics. The eponymous field of "graph theory" is dedicated to their study, and their importance in mathematics carries over to computer science.