Giter Club home page Giter Club logo

armageddon's Introduction

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)

Shell Sort Cocktail Sort Comb Sort Gnome Sort Odd-Even Sort Pancake Sort Stooge Sort Cocktail Sort Bead Sort Pigeonhole Sort Bitonic Sort Bogo Sort Cycle Sort

Bubble Sort :- Time Complexity: O(n^2) Space Complexity: O(1) Selection Sort Time Complexity: O(n^2) Space Complexity: O(1) Insertion Sort Time Complexity: O(n^2) (worst case), O(n) (best case) Space Complexity: O(1) Merge Sort Time Complexity: O(n log n) Space Complexity: O(n) Quick Sort Time Complexity: O(n log n) (average case), O(n^2) (worst case) Space Complexity: O(log n) (average case), O(n) (worst case) Heap Sort Time Complexity: O(n log n) Space Complexity: O(1) Counting Sort Time Complexity: O(n+k) (where k is the range of the input) Space Complexity: O(n+k) Radix Sort Time Complexity: O(d(n+k)) (where d is the number of digits in the largest number, and k is the range of the input) Space Complexity: O(n+k) Bucket Sort Time Complexity: O(n+k) (where k is the number of buckets) Space Complexity: O(n+k)

  • Searching
    • Linear Search - - [ ] Sentinel Linear Search - - [ ] Binary Search - - [ ] Modified Binary Search - - [ ] Binary Search Interview questions - - [ ] Binary Search on 2D Arrays - - [ ] Jump search - - [ ] Meta Binary Search | One-Sided Binary Search - - [ ] Ternary Search - - [ ] Fibonacci Search - - [ ] The Ubiquitous Binary Search - - [ ] Sublist search (Search a linked list in another list) - - [ ] substring search - - [ ] unbounded binary search - - [ ] interval search - - [ ] The Bidirectional Search - - [ ] Uniform Cost Search - - [ ] Greedy Best First Search - - [ ] Interpolation search - - [ ] Exponential search - - [ ] Depth-first search (DFS) - - [ ] Breadth-first search (BFS) - - [ ] Best-first search - - [ ] A* search - - [ ] Hill climbing - - [ ] Beam search - - [ ] Simulated annealing - - [ ] Genetic algorithms - - [ ] Ant colony optimization - - [ ] Particle Swarm Optimization
  • 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 - - [x] Quick Sort
      • Backtracking
      • Sudoku Solver - - [x] N-Queens - - [x] N-Knights - - [x] 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 - - [x] Abstraction - - [x] Polymorphism - - [x] 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

Insertion at the beginning: A new node is added to the beginning of the list. This operation is also called push. Insertion at the end: A new node is added to the end of the list. This operation is also called append. Insertion at a specific position: A new node is added at a specific position in the list. Deletion from the beginning: The first node in the list is removed. Deletion from the end: The last node in the list is removed. Deletion from a specific position: A node at a specific position in the list is removed. Traversal: The list is traversed, i.e., all the nodes are visited one by one. Searching: A specific element is searched in the list. Length: The length of the list is calculated. Concatenation: Two linked lists are merged together to form a single linked list. Reversal: The order of the nodes in the list is reversed. Sorting: The elements in the list are arranged in a sorted order. Find the length of a linked list - We can find the number of elements in the linked list by traversing the list and counting the number of nodes. Check if a linked list is empty - We can check if a linked list is empty by checking if the head node is null. Swapping: Exchanging the positions of two nodes in the linked list. Create a linked list - A linked list can be created by dynamically allocating memory for nodes and linking them together. Splitting: Dividing a linked list into two separate lists. Circularization: This operation is used to convert a singly linked list into a circular linked list by making the last node point to the first node. Counting: This operation is used to count the number of nodes in the linked list.

Cycle Detection: Write a function that detects if a linked list has a cycle or not.

Intersection Detection: Write a function that detects if two linked lists intersect and returns the intersecting node. Palindrome Detection: Write a function that detects if a linked list is a palindrome. Duplicate Removal: Write a function that removes duplicates from a linked list. Middle Element: Write a function that finds the middle element of a linked list. Nth Element from End: Write a function that finds the Nth element from the end of a linked list. Addition: Write a function that adds two numbers represented as linked lists and returns the result as a linked list. Subtraction: Write a function that subtracts two numbers represented as linked lists and returns the result as a linked list. Multiplication: Write a function that multiplies two numbers represented as linked lists and returns the result as a linked list.

Find the middle node of the linked list. Determine if the linked list is circular (i.e. has a cycle). Remove any cycles in the linked list. Implement a LRU cache using a doubly linked list and a hash map. Flatten a nested linked list and return it as a single linked list. Write a program to convert a binary tree into a linked list.

Implement a function to clone a linked list with arbitrary pointers.

  • 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
      • Union find
      • Degree
      • Working with graph components
      • Bipartite Graph
      • LC Questions
      • Minimum Spanning Trees
      • Kruskal Algorithm
      • Prims Algorithm
      • Dijkstra’s shortest path algorithm
      • Topologically sort the vertices of a directed acyclic graph (DAG).
      • Kahn's Algorithm
      • Bellman ford
      • A* pathfinding Algorithm Create an empty graph with a given number of vertices. Add a new vertex to the graph. Add a new edge between two vertices in the graph. Remove a vertex from the graph. Remove an edge between two vertices in the graph. Check if a given vertex is in the graph. Get the list of all vertices in the graph. Get the list of all edges in the graph. Get the neighbors of a given vertex in the graph. Check if there is an edge between two given vertices in the graph. Check if the graph is connected (i.e., there is a path between every pair of vertices). Detect cycles in the graph. Check if edge exists: Check if an edge between two vertices is present in the graph. Get degree of a vertex: Retrieve the number of edges incident to a given vertex.
  • Greedy Algorithms
      • Introduction
      • Applications
      • LC,GFG Questions
      • Interview Questions
  • Bloom Filters
  • Matrix Operations -- [ ] Addition of matrix -- [ ] Substraction of matrix -- [ ] Multiplication of matrix -- [ ] Division of matrix -- [ ] inverse of matrix -- [ ] Adjoint of matrix -- [ ] transpose of matrix -- [ ] Scalar Multiplication: Multiplying a matrix by a scalar value -- [ ] Determinant: Calculating a scalar value that can be used to determine invertibility and other properties of a square matrix -- [ ] Trace: The sum of the diagonal entries of a square matrix -- [ ] Rank: The number of linearly independent rows or columns in a matrix -- [ ] Eigenvalues and Eigenvectors: A scalar and corresponding non-zero vector that satisfy a certain equation -- [ ] Diagonalization: Finding a diagonal matrix that is similar to a given matrix -- [ ] LU Factorization: Factorizing a matrix into a lower triangular matrix and an upper triangular matrix -- [ ] QR Factorization: Factorizing a matrix into an orthogonal matrix and an upper triangular matrix -- [ ] Singular Value Decomposition (SVD): Factorizing a matrix into three matrices that describe the matrix's rank and singular values. -- [ ] Orthogonalization -- [ ] Null space -- [ ] Row echelon form -- [ ] Reduced row echelon form -- [ ] Gram-Schmidt process -- [ ] Projection -- [ ] Reflection -- [ ] Rotation -- [ ] Cross product -- [ ] Dot product

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

armageddon's People

Contributors

divsriv avatar vishalpandey-9891 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.