Skip to content

Latest commit

 

History

History
252 lines (218 loc) · 6.06 KB

File metadata and controls

252 lines (218 loc) · 6.06 KB

📁 Repository Structure

The repository is organized into the following sequence:

Level 1: Linear Data Structures

  1. Linked Lists (18 Problems)

    • Singly Linked List
    • Insertion at the front
    • Insertion at the end
    • Insertion at k-th position
    • Deletion in a linked list
    • Circular Linked List
    • Doubly Linked List
  2. Stacks and Queues (27 Problems)

    • Stack Introduction
    • Push, Pop, Peek, isEmpty, isFull functions
    • Implementing a Stack
    • Stacks using inbuilt libraries
    • Valid Parenthesis Problem
    • Dealing with Reverse Polish Notation
    • Finding Next Greater Element
    • Largest Rectangle in a Histogram
    • Queue Introduction - Enqueue / Dequeue
    • Queue Implementation
    • To-do List using a Queue

Level 2: Basic Algorithms

  1. Time Complexity (39 Problems)

    • Fundamentals of Time Complexity
    • Applying Time Complexity to DSA Problems
    • Log and Square Root Time Complexity
    • Practice Problems
  2. Searching and Sorting Algorithms (35 Problems)

    • Introduction to Linear Search
    • Practice Linear Search
    • Introduction to Sorting
    • Bubble Sort
    • Selection Sort
    • Insertion Sort
    • Merge Sort
    • Quick Sort
    • Counting Sort
    • Radix Sort
  3. Greedy Algorithms (22 Problems)

    • Introduction to Greedy Algorithms
    • Basics of Greedy and Proofs
    • Chopsticks Problem
    • Evacuate to Moon Problem
    • Snakes and Mongoose Problem
    • Maximum Score Problem
    • Maximize Disjoint Pair Sum
  4. Two Pointers and Sliding Window Technique

    • Two Pointers Technique
    • Sliding Window Technique
    • Remove duplicates from a sorted array
    • Find if absolute difference of two elements equals B
    • Find common elements in two arrays
    • Minimum Similar Substring
    • Palindrome by Splitting
    • More practice problems
  5. Prefix Sum Problems

    • Creating Prefix Array
    • Optimizations using Prefix Sum
    • Suffix Arrays
    • Good Subarrays problem
    • Counting Pretty Numbers problem
    • Mystical Numbers problem
    • Rectangular Queries problem
    • More Practice Problems
  6. Binary Search

    • What is Binary Search?
    • Visualization of Binary Search
    • Time Complexity Analysis of Binary Search
    • Using Inbuilt libraries
    • Solve Average Flex
    • Solve The Wave
    • Implicit Binary Search
    • Binary Search Templates
    • Solve Coins and Triangle
  7. Recursion

    • Introduction to Recursion
    • Base Condition
    • Solve Sum of N Numbers using Recursion
    • Factorial using Recursion
    • Fibonacci series
    • Linear search and patterns using Recursion
    • Palindrome using Recursion
    • All Possible Subsets
    • Backtracking - Unique Combinations Sum
    • Backtracking - Find Unique Permutations

Level 3: Non-Linear Data Structures

  1. 2D Array / Matrices

    • Representing a Matrix
    • Matrix traversal
    • Matrix multiplication
    • Matrix rotations
    • Finding path with minimum sum
    • Search in Matrix
    • Median in Matrix
  2. Trees and Binary Trees

    • Introduction to Trees
    • Nodes, Edges, Root, Leaves
    • Tree property
    • Degree of a Node
    • Depth and Height of a Tree
    • Adjacency matrix representation
    • Adjacency list representation
    • Depth First Search
    • Breadth First Search
    • Binary Trees
    • Types of Binary Trees
    • PreOrder, PostOrder and InOrder traversal
    • Height of a Binary Tree
    • Binary Search Tree
    • Search in Binary Search Tree
  3. Graphs

    • Introduction to Graphs
    • Undirected and Directed Graphs
    • Representation as Adjacency Matrix
    • Representation as Adjacency List
    • Graph Traversal
    • Depth First Search
    • Breadth First Search
    • Connected Components
    • Cycles in Graphs
    • Directed Acyclic Graph
    • Topological Sorting
  4. Heaps

    • Introduction to Heaps
    • Max Heap and Min Heap
    • Representation as an Array
    • Insertion in Heap
    • Deletion of root
    • Time complexity of operations
    • Heap Sort
    • Find K-th largest number

Level 4: Advanced Algorithms

  1. Bit Manipulation

    • Binary Number System
    • Converting Decimal to Binary
    • Bitwise Operators
    • AND Operator
    • OR Operator
    • XOR Operator
    • Solve Dull Operation
    • Not Operator
    • Signed and Unsigned Data Types
    • Left and Right Shift
    • Practice Problems
  2. Dynamic Programming

    • Introduction to Dynamic Programming
    • Maximum Subset Sum
    • Maximum Sum of a Valid Subset
    • Comparing with Greedy and Brute Force
    • Finding Subproblems
    • Solving Subproblems
    • Partitioning Problem
    • Maximum Sum Subarray
    • Longest Increasing Subsequence
    • Sums in a Triangle
    • Maximum sum path in a 2D Grid
  3. Number Theory

    • Prime Factorization
    • Prime Factorization in Sqrt(n)
    • Counting Divisors - I
    • GCD and LCM
    • Euclid Algorithm for GCD
    • Modular Arithmetic
    • Fast Exponentiation
    • Modular Multiplicative Inverse
    • Fermat Binomials
    • Sieve of Eratosthenes
    • Primality Test
    • Prime Factorization Method using Sieve O (log n)
  4. Combinatorics

    • Introduction to Combinatorics
    • Conceptual Problems

Level 5: Advanced Data Structures

  1. Disjoint Set Union

    • Introduction to Disjoint Set Union
    • Parent Find and Union operations
    • Naive DSU implementation
    • Path Compression Optimization
    • Optimal Union
    • Practice Problems
  2. Tries

    • Structure of a Trie
    • Insertion in Trie
    • Searching for a string in Trie
    • Deleting a string in Trie
    • Applications - Spell Check, Autocomplete

Level 6: Extra Practice

  1. Data Structures Interview Questions

    • Basic programming - 1
    • Basic programming - 2
    • Arrays
    • Sorting
    • Strings
    • Linkedlist
    • Stacks
    • Queues
    • Binary Search
    • Graphs
    • Trees
    • Hashing
    • Two pointers
    • Dynamic Programming
    • Bit Manipulation
    • Backtracking
  2. Linked Lists

    • Linked List
  3. Stacks and Queues

    • Stack and Queue
  4. Heaps

    • Heap