kunal-kushwaha / DSA-Bootcamp-Java

This repository consists of the code samples, assignments, and notes for the Java data structures & algorithms + interview preparation bootcamp of WeMakeDevs.
https://www.youtube.com/playlist?list=PL9gnSGHSqcnr_DxHsP7AW9ftq0AtAyYqJ
17.25k stars 11.08k forks source link

DSA-Progress Tracker #1043

Open ashwinkumarsekar opened 1 year ago

ashwinkumarsekar commented 1 year ago

Started the preparation of DSA

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 LinekdList 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 Unbounded Knapsack Subseq questions String DP Trees Introduction Binary Trees Binary Search Trees DFS BFS 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 Graphs Introduction BFS DFS Working with graph components Minimum Spanning Trees Kruskal Algorithm Prims Algorithm Dijkstra’s shortest path algorithm Topological Sort Bellman ford A* pathfinding Algorithm Greedy Algorithms 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