/DSA-Simplified

Designed by Engineers for Engineers. This is your One stop shop for all DSA queries! Here you will find implementation of all sorts of data structures and algorithms.

Primary LanguageC#MIT LicenseMIT

DSA Simplified - Designed by Engineers for Engineers, YouTube Channel

Goal is not to learn each and every new framework or language out there, the goal is to get better at problem solving! PERIOD. DSA Simplified is your one-stop shop for all DSA queries! Here you will find implementation of all sorts of data structures and algorithms.

To get ahead of the curve you need to go through these 3 rules of fight club.

  1. Learning Curve - Implement algorithms by yourself.
    • Code out data structures, till concepts are clear, Implement Stack with Push() and Pop() operations which run on O(1) time complexity.
  2. Problem Solving - This is where the real game begins!
    • The Beginning:
      • Initially nothing will make sense, don't worry, this is just a start.
    • The Question:
      • Read the question and try to pick hints, slowly you'd learn to recognise patterns just by reading the question.
    • The Solution:
      • Initially your solution won't even pass 5 test cases. Point is it doesn't matter but the good news is now you are able to think based on the problem.
    • Steal the code:
      • Try to solve the problem at least for 30 mins before you jump to the discussion tab. Find the best suitable solution and copy paste their entire logic, No one is judging you.
    • Debug the code:
      • Debug copied the solution and figured out what the missing puzzle was? Guess what!! Next time when you come across the same pattern you'll know what to do because you've seen this pattern. This is how I learned how to use remainder (%) LOL. That's one pattern, slowly you'd be able to figure out when to use Trie or Union-Find. Stay consistent and code for good.
  3. keep your track record on! Consistency is key my friend. You can master anything if you're consistent enough.

You can make me your leetcode partner Rikam!

Know Your Complexities!

Sorting

Code Best Avg Worst Space Learn Here
Bubble Sort O(n) O(n^2) O(n^2) O(1) Back To Back SWE
Insertion Sort O(n) O(n^2) O(n^2) O(1) Back To Back SWE
Selection Sort O(n^2) O(n^2) O(n^2) O(1) Mycodeschool
Quick Sort O(n Log(n)) O(n Log(n)) O(n^2) O(n Log(n)) Back To Back SWE
Heap Sort O(n Log(n)) O(n Log(n)) O(n Log(n)) O(1) Back To Back SWE
Merge Sort O(n Log(n)) O(n Log(n)) O(n Log(n)) O(n) Back To Back SWE

Trie : Example

Trie Time Space
Build Trie O(n^2) O(n^2)
Lookup O(n) O(1)

Stack

Push Pop
Stack with List O(1) O(1)
Stack with Array O(1) O(1)

Queue

Enqueue Dequeue
Queue with List O(1) O(1)

LinkedList

Insert Delete Lookup
Doubly Linked List O(1) O(1) O(n)

Graph || v = vertices, e = edges in graph

Graph Traversal Algorithms

  1. DFS: Depth First Search
Time Space
DFS with Recursion O(v + e) O(v)
DFS with Stack O(v + e) O(v)
  1. BFS: Breadth First Search
Time Space
BFS with Recursion O(v + e) O(v)
BFS with Queue O(v + e) O(v)

Dijkstra’s Shortest Path Algorithm

Time Space
Shortest Path O(v^2 + e) O(v)

Topological Sort

Time Space
Topological Sort O(v + e) O(v + e)

Heap

Build Heap Insert Remove
MinHeap Iterative O(n Log(n)) O(Log(n)) O(Log(n))
MaxHeap Recursive O(n Log(n)) O(Log(n)) O(Log(n))

LeetCode

Leetcode Question Solution Time Complexity Space Complexity Data Structure
1. Two Sum Two Sum O(n) O(n) Array