/DSA-Progress-Tracker

This repository contains progress of my DSA Learning

Progress Tracker

DSA

  • Complete Git & GitHub Course
  • Introduction to Programming
      • Types of languages
      • Memory management
  • Flow of the program
      • Flowcharts
      • Pseudocode
  • Introduction to Java
      • Introduction
      • How it works
      • Setup Installation
      • Input and Output in Java
      • Conditionals & Loops in Java
        • if else
        • loops
        • Switch statements
      • Data types
      • Coding best practices
  • Functions
      • Introduction
      • Scoping in Java
      • Shadowing
      • Variable Length Arguments
      • Overloading
  • Arrays
      • Introduction
      • Memory management
      • Input and Output
      • ArrayList Introduction
      • Sorting
        • Insertion Sort
        • Selection Sort
        • Bubble Sort
        • Cyclic Sort (Merge sort etc after recursion)
    • Searching
        • Linear Search
        • Binary Search
        • Modified Binary Search
        • Binary Search Interview questions
        • Binary Search on 2D Arrays
  • Pattern questions
  • Strings
    • Introduction
    • How Strings work
    • Comparison of methods
    • Operations in Strings
    • StringBuilder in java
  • Maths for DSA
      • Introduction
      • Complete Bitwise Operators
      • Prime numbers
      • HCF / LCM
      • Sieve of Eratosthenes
      • Newton's Square Root Method
      • Number Theory
      • Euclidean algorithm
  • Space and Time Complexity Analysis
      • Introduction
      • Comparion of various cases
      • Solving Linear Recurrence Relations
      • Solving Divide and Conquer Recurrence Relations
      • Big-O, Big-Omega, Big-Theta Notations
      • Get equation of any relation easily - best and easiest approach
      • Complexity discussion of all the problems we do
      • Space Complexity
      • Memory Allocation of various languages
      • NP Completeness and Hardness
  • Recursion
      • Introduction
      • Why recursion?
      • Flow of recursive programs - stacks
      • Convert recursion to iteration
      • Tree building of function calls
      • Tail recursion
      • Sorting:
          • Merge Sort
          • Quick Sort
      • Backtracking
          • Sudoku Solver
          • N-Queens
          • N-Knights
          • Maze problems
      • Recursion String Problems
      • Recursion Array Problems
      • Recursion Pattern Problems
      • Subset Questions
      • Recursion - Permutations, Dice Throws etc Questions
  • Object Oriented Programming
      • Introduction
      • Classes & its instances
      • this keyword in Java
      • Properties
          • Inheritance
          • Abstraction
          • Polymorphism
          • Encapsulation
      • Overloading & Overriding
      • Static & Non-Static
      • Access Control
      • Interfaces
      • Abstract Classes
      • Singleton Class
      • final, finalize, finally
      • Exception Handling
  • Linked List
      • Introduction
      • Singly and Doubly Linked List
      • Circular Linked List
      • Fast and slow pointer
      • Cycle Detection
      • Reversing of LinkedList
      • Linked List Interview questions
  • Stacks & Queues
      • Introduction
      • Interview problems
      • Push efficient
      • Pop efficient
      • Queue using Stack and Vice versa
      • Circular Queue
  • Dynamic Programming
      • Introduction
      • Recursion + Recursion DP + Iteration + Iteration Space Optimized
      • Complexity Analysis
      • 0/1 Knapsack
      • Subset Questions
      • DP on Grids
      • LC Questions on Above topics
      • Unbounded Knapsack
      • Subseq questions
      • String DP
  • Trees
      • Introduction
      • Binary Trees
      • Recursive Preorder, Inorder, Postorder Traversals
      • Iterative Preorder, Inorder, Postorder Traversals
      • LC Questions
      • DFS
      • BFS
      • Morris Traversal O(1) Space
      • Binary Search Trees
      • LC Questions
      • AVL Trees
      • Segment Tree
      • Fenwick Tree / Binary Indexed Tree
  • Heaps
      • Introduction
      • Theory
      • Priority Queue
      • Two Heaps Method
      • k-way merge
      • top k elements
      • interval problems
  • Hashmaps
      • Introduction
      • Theory - how it works
      • Comparisons of various forms
      • Limitations and how to solve
      • Map using LinkedList
      • Map using Hash
      • Chaining
      • Probing
      • Huffman-Encoder
  • Tries
      • Introduction
      • Theory - how it works
      • Applications
      • Insert and Search
      • GFG articles and Questions
      • Interview Questions
  • Graphs
      • Introduction
      • BFS
      • DFS
      • Working with graph components
      • Bipartite Graph
      • LC Questions
      • Minimum Spanning Trees
      • Kruskal Algorithm
      • Prims Algorithm
      • Dijkstra’s shortest path algorithm
      • Topological Sort
      • Kahn's Algorithm
      • Bellman ford
      • A* pathfinding Algorithm
  • Greedy Algorithms
      • Introduction
      • Applications
      • LC,GFG Questions
      • Interview Questions

Advanced concepts apart from interviews

  • Fast IO
  • File handling
  • Bitwise + DP
  • Extended Euclidean algorithm
  • Modulo Multiplicative Inverse
  • Linear Diophantine Equations
  • Matrix Exponentiation
  • Mathematical Expectation
  • Catalan Numbers
  • Fermat’s Theorem
  • Wilson's Theorem
  • Euler's Theorem
  • Lucas Theorem
  • Chinese Remainder Theorem
  • Euler Totient
  • NP-Completeness
  • Multithreading
  • Fenwick Tree / Binary Indexed Tree
  • Square Root Decomposition