/DSA_Questions

Beginner-friendly approach to DSA in Java

Primary LanguageJava

Data Structures and Algorithms - Java

This repo contains everything needed to learn and master DSA from scratch in a beginner-friendly structure.

Each topic has theory as well as questions to practice, both in the same place.

There will also be Topic wise Leetcode questions linked to practice.

Disclaimer

I'm a B.tech Mech. graduate with an initial 3.5 years professional career in various Non-tech fields as a Mech R&D Design engg. followed by a SaaS Sales Person.

I truly understand the challenges faced by a non-CS background person to learn and understand the concepts of DSA and Software engg. in general.

Total transparency, I enrolled myself in the 1st Master's cohort of Scaler Neovarsity to learn Software engg., but I am also studying the topics from the internet as well.

So I'll be including all my learnings to give a very solid foundation which is easy to understand and retain.

Content

  1. Absolute Basics to start coding in Java
    1. Basic Syntax
    2. Data Types, Variables and Operators
    3. Conditional Statements
    4. Loops
    5. Typecasting
    6. Time Complexity
    7. Space Complexity
  2. Maths topics required for DSA
  3. Concepts and Techniques required to solve DSA problems
    1. Bruteforce
    2. Bit Manipulation
    3. Recursion
    4. Backtracking
    5. Memoization (Top-Down DP)
    6. Tabulation (Bottom-Up DP)
    7. Greedy
    8. Divide and Conquer
  4. Data Structures
    1. Fundamental Data Structures
      1. 1D Arrays and Arraylists
        1. Basic Operations //To create, traverse, insert, delete, modify, search and sort an array.
        2. Special Techniques
          1. Prefix Sum and Suffix Sum
          2. Carry Forward
          3. Subarray Problems
          4. Subsequence Problems
          5. Sliding Window
          6. Two Pointer Technique
      2. Matrix (2D Arrays and Arraylists)
      3. Strings
      4. Linked List
      5. Stacks and Queues
        1. Stacks
        2. Queues
    2. Advanced Data Structures
      1. Trees
        1. Fundamental Trees
          1. Binary Trees
          2. Ternary Trees
          3. N-ary Trees
        2. Tries
        3. Heaps
      2. Hashmaps
      3. Graphs
  5. Algorithms
    1. Searching
      1. Linear Search
      2. Binary Search
      3. Two Pointer Technique
      4. Hashing
      5. Interpolation Search
    2. Sorting
      1. Selection Sort
      2. Bubble Sort
      3. Insertion Sort
      4. Merge Sort
      5. Quick Sort
      6. Heap Sort
      7. Counting Sort
    3. String Algorithms
      1. KMP Algorithm
      2. Boyer-Moore Algorithm
      3. Rabin-Karp Algorithm
      4. Z Algorithm
      5. Suffix Array
    4. Backtracking Algorithms
      1. N-Queens Problem
      2. Sudoku Solver
      3. Maze Solver (Rat in a Maze)
      4. Knight's Tour
    5. Graph Algorithms
      1. BFS
      2. DFS
      3. Dijkstra's Algorithm
      4. Bellman-Ford Algorithm
      5. Floyd-Warshall Algorithm
    6. Dynamic Programming
      1. Knapsack Problem
      2. Longest Common Subsequence
      3. Longest Increasing Subsequence
      4. Matrix Chain Multiplication
      5. Edit Distance
    7. Greedy Algorithms
      1. Activity Selection
      2. Huffman Coding
      3. Interval Scheduling
    8. Divide and Conquer
      1. Strassen's Matrix Multiplication
      2. Closest Pair of Points
      3. Convex Hull
      4. Karatsuba Algorithm