Purpose of this repository is to practice basic Data Structures Implementation in C#.
Content of this repository is inspired by this youtube video
Other relevent videos
- Graph Algorithms for Technical Interviews - Full Course
- Binary Tree Algorithms for Technical Interviews - Full Course
- Recursion in Programming - Full Course
- Dynamic Programming - Learn to Solve Algorithmic Problems & Coding Challenges
- 10 Common Coding Interview Problems - Solved!
- Algorithms and Data Structures Tutorial - Full Course for Beginners
- Linked Lists for Technical Interviews - Full Course
- Data Structures Easy to Advanced Course - Full Tutorial from a Google Engineer
- Solve Coding Interview Backtracking Problems - Crash Course
- What is Binary Search?
- Big O Notation - Full Course
- Common Algorithms
- Bloom Filters | Algorithms You Should Know #2 | Real-world Examples
YouTube Channels
A data sturucture (DS) is a way of organizing data so that it can be used effectively.
An abstruct data type (ADT) is an abstraction of a data structure which provides only the interface to which a data structure must adhere to. The interface does not give any specific details about how something should be implemented or in what programming language.
| Abstraction (ADT) | Implementation (DS) |
|---|---|
| List | Dynamic Array, Linked List |
| Queue | Linked List based Queue, Array based Queue, Stack based Queue |
| Map | Tree Map, Hash Map / Hash Table |
| List | Dynamic Array, Linked List |
Big-O Noation gives an upper bound of the complexity in the worst case, healping to quantify performance as the input size becomes arbitararily large.
Big-O only cares about the worst case.
| X | Y |
|---|---|
| Constant Time: | O(1) |
| Logarithmic Time: | O(log(n)) |
| Linear Time: | O(n) |
| Linearithmic Time: | O(nlog(n)) |
| Quadric Time: | O(n2) |
| Cubic Time: | O(n3) |
| Exponential Time: | O(bn) |
| Factorial Time: | O(n!) |
Fidning all the subsets of a set - O(2n)
Fidning all permutation of a string - O(n!)
Sorting using mergesort - O(nlog(n))
Iterating over all the cells in a matrix of size n by m - O(nm)
- Arrays
