Data Structures
Before dive into this repo you should know why do we need these concepts. What is Role of DSA in your real life??
Before getting into this repo lets understand the Importance of Problem solving and DSA in coming 10 to 20 years click below video to understand more.
Let’s connect on discord for Technical and DSA related Discussion: DisCord
“ For solving any realworld problem with programming approach we need to follow some steps & strategy. The collection of that steps is Algorithm, whereas a data structure is a way to store and organize data during solving that problem or constructing any software so that it can be used efficiently in terms of time and space, this way Data structure & Algorithms always allow us to write efficient and optimized computer programs.”
 STL is standard template library, It is most powerful & useful while doing competitive coding questions Read More.
 Problems on Data structure & Algorithms (Competitive coding) Click Here to get into problems section…
 NOTE : Click on [] for getting hand written notes on particular topic.
Show some by starring this repository! It will push me to give more percentage of efforts.
Data Structures
Topics Of Datastructure & Algorithms and Related Programs:telescope:
 Recursion
 Array
 String
 LinkedList
 Stack
 Queue
 Tree
 Binary Search Tree
 AVL Trees
 Graph
 Heap
 Sorting Techniques
 Divide & Conquer
 Sliding Window
 Dynamic Programming
Recursion
 01 Head Recursion
 02 Tail Recursion
 03 Global variable recursion
 04 Static variable reciursion
 05 Tree recursion
 06 Nested recursion
 07 Sum of n number using recursion
 08 Sum Of given number using loop
 09 Power using recursion
 10 Taylor Series using Static variables
 11 Taylor Series honers rule
 12 Taylor Series Iterative
 13 Indirect Recursion
 14 Fibbonaci series using loop and recursion
 15 Fibbonacci using Memoization
 16 nCr formula
 17 Tower of Hanoi
* Array
 01 Static and dynamic array
 02 Increasing size of array in heap
 03 Creating 2D array & Accessing
 04 Array ADT1
 05 inserting an element)
 06 Deleting element
 07 Linear search
 08 Improving Linear search
 09 Binary Search Using Recursion
 10 Binary Search using loop
 11 Get Set max min sum avg) &&
 12 Reverse and Shift
 13 IsSorted
 14 Mergeing 2 Array
 15 InsertSort
 16 Set Operation (Union,Intersec,diff)
 17 Insertion and Deletion
 18 Menu Based problem
 19 Single Missing Element in Sorted Array
 20 Single Missing Value in a sorted array M2
 21 Multiple Missing Elements in Sorted Array
 22 Missing elements in Unsorted Array (HASH TABLE)
 23 Finding Duplicate in Soorted Array
 24 Counting Duplicate Elements In Sorted M2
 25 Counting Duplicate elements using hash table (SA)
 26 Counting Duplicate elements using hash table (USA)
 27 Finding Duplicate in Unsoorted Array
 28 Find a pair with sum k
 29 Find a pair with sum k in unsorted
 30 Find a pair with sum k using Hashing
 31 Finding max & min in single scan
* String
 01 Length of string
 02 Upper to Lower
 03 lower to upper
 04 Upper to Lower & Lower to upper
 05 Vowel & Counstant count
 06 Word Count
 07 Reverse the string
* Linkedlist
 01 Display LL
 02 Display LL Using Recursion
 03 Count and sum of LL
 04 Printing max element
 05 Searching Element
 06 Searching Elements using Recursion & Move to 1st
 07 Insertion in linkedlist
 08 Insert in sorted
 09 All in one 1 to 8
 10 project sll
 11 Delete from ll.
 12 Remove duplicate
 13 Reversing Using Array
 14 Reversing by Sliding Links
 15 Reversing using Recursion
 16 Concatenate linkedlist
 17 Merge LL
 18 Liner Singly Linked List in Single Project
 19 Display Circular LL using Loop & Recursion
 20 Insert in Circular LL
 21 Delete from cll from pos
 22 Delete an element in CLL from pos
 23 Create,Display,count DLL
 24 Insert at any pos in dll
 25 Delete from any pos from DLL
 26 Reverse DLL
 27 Middle of Linkedlist
 28 Polynomial of Linkedlist
* Stack
 01 Operation on stack
 02 Stack using linkedlist
 03 Parenthesis Balance
 04 Infix to postfix
 05 infix to postfix considering Parenthesis and Associativity using Stack
 06 Evaluation of postfix expression
* Queue
 01 Queue using array enqueue & dequeue
 02 C++ Queue using Array
 03 Circular Queue using Array
 04 C++ Circular Queue
 05 Queue using Linkedlist
 06 DEQueue using Array
 07 Queue using two stack
* Tree
 01 Traversal of tree
 02 Iterative and recursive traversal of tree
 03 Traversal of Tree
 04 Level Order Traversal
 05 Count and Height of tree
 06 Recursive Count and height of tree
 07 Sum of tree
 08 D1,D2,D0(leaf node) count
 09 Leaf,D1,D2 node count
* Binary Search Tree
 01 BST Insert Inorder & Search
 02 BST Insert,Inorder&Search(cpp)
 03 Insert in BST
 04 Recursive Insert in BST
 05 Delete from BST (Height,InPre,InSucc)
 06 BST Project
* AVL Tree
* Graph
 01 BFS
 02 DFS
 03 PrimMinSpanningTreeFunction
 04 KrushalsMinCostSpanningTreeFunction
 05 DepthFirstSearchUsingRecursion
 06 BreadthFirstSearchUsingSTLQueue
* Heap
 01 InsertionHeap
 02 CreateHeapUsingSTLVector
 03 Insert in Heap
 04 Delete element from Heap
 05 Heap sort
 06 HeapifyFunctionFasterMethodtoCreateHeap
* Sorting Techniques
 01 Bubble Sort
 02 Insertionsort
 03 Selection Sort
 04 Mergesort
 05 Iterative Mergesort
 06 Nested recursion
 07 RecursiveMergeSort
 08 Count sort
 09 BinSort Based on LL
 10 RadixSort Using LL
 11 Shellsort
BigO complexities of common Data structure & Algorithm
Algorithms
Algorithms
In software development we have two phases:
 Design
 Implementation
 For designing any kind of software we should have a blueprint for that, i.e we can not develop any software on hit and trial basis.
 Algorithm: Algorithm is step by step procedure do solve any kind of computational problem & It is the core of computer science.
 There is certain point about algorithm:
 Algorithm is written at design time.
 For writing any effective one should have Proper domain Knowledge.
 Algorithm is language independent.
 And it is independent of Hardware & OS.
 We are doing priori analysis when writing algorithms.
 Mainly we are considering Time & Space function. Rather than that we are checking for Network Consumption/Data Transfer, Power consumption and Consumption of CPU Register.
 characteristics of Algorithm :

 Input

 Output

 Definiteness(Every Statement should be clear and understandable)

 Finiteness(Algorithm must terminate at some time)

 Effectiveness(Don’t write unnecessary steps)

 Independent(It can be implemented in any programming language)
* Time Complexity and Problems
* Divide & Conquer
 Merge Sort
 Quick Sort
 Binary Search (logn)
 Closest Pair of Points  O(nlogn)
 Strassen’s Matrix Multiplication
 Maximul Subarray
 Integer Multiplication
 Karatsuba Algorithm for Fast Mul
Sliding Window technique
Dynamic Programming
 01 Fibonacci Series
 02 Knapsack Recursion
 03 Knapsack Memoization  Applications of Knapsack Problem 1. Resourse allocation with financial constraints 2. Construction and Scoring of Heterogenous test 3. Selection of capital investments
 04 Knapsack BottomUp(DP)
 05 Subset sum(Knapsack Variation)
 06 Equal sum partition(subset sum & Knapsack Variation)
 07 Count of Subsets with given Sum(subset sum & Knapsack Variation)
 08 Minimum subset sum difference
 09 Count the number of subset with given difference
 10 Target sum(Leetcode)
 11 Unbounded Knapsack
 12 Rod cutting problem(Unbounded Knapsack)
 13 Coin change problem : maximum no of ways
 14 Coin change problem: Minimum number of coin
 15 Longest Common Subsequence Recursive
 16 Longest Common Subsequence Top down (Memoization)
 17 Longest Common Subsequence Bottom Up(DP)
 18 Longest Common Substring
 19 Print Longest Common Subsequence
 20 Shortest Common Supersequence
 21 Minimum insertion & deletion to convert a to b
 22 Longest Palindromic Subsequence
 23 Minimum number of deletions to make a string palindrome
 24 Print Shortest Common Supersequence
 25 Longest repeating subsequence
 26 Sequence pattern matching
 27 Minimum Number of insertion to make a string palindrome
 28 Matrix Chain Multiplication Recursive
 29 Matrix Chain Multiplication Top Down (Memoization)
 30 Palindrome Partitioning Recursive
 31 Palindrome Partitioning Memoization
 32 Palindrome Partitioning Memoized optimization
 33 Evaluate Expression to true Recursive
 34 Evaluate expression to true memoization using map
 35 Evaluate expression to true memoization using 3d array
 36 Scramble string recursive
 37 Scramble string Top Down
 38 Egg dropping problem recursive
 39 Egg dropping problem Top Down(memoization)
 40 Egg dropping problem memoization optimization
 41 Dynamic programming on trees Syntax
 42 Diameter of binary tree
 43 Max path sum from any node to any
 44 Max path sum from leaf to leaf
GitHub: