Welcome to the Data Structures and Algorithms Tutorials repository! This repository contains detailed tutorials on different data structures (DS) along with topic-wise problems to help you understand and master these fundamental concepts.
- What is Data Structure: Types, Classifications and Applications
- Introduction to Data Structures
- Common operations on various Data Structures
- Search, insert and delete in an unsorted array
- Search, insert and delete in a sorted array
- Write a program to reverse an array
- Leaders in an array
- Given an array A[] and a number x, check for a pair in A[] with sum as x
- Majority Element
- Find the Number Occurring Odd Number of Times
- Largest Sum Contiguous Subarray
- Find the Missing Number
- Search an element in a sorted and pivoted array
- Merge an array of size n into another array of size m+n
- Median of two sorted arrays
- Program for array rotation
- Reversal algorithm for array rotation
- Block swap algorithm for array rotation
- Maximum sum such that no two elements are adjacent
- Sort elements by frequency | Set 1
- Count Inversions in an array
- Introduction to Linked List
- Linked List vs Array
- Linked List Insertion
- Linked List Deletion (Deleting a given key)
- Linked List Deletion (Deleting a key at a given position)
- A Programmer’s approach of looking at Array vs. Linked List
- Find Length of a Linked List (Iterative and Recursive)
- How to write C functions that modify the head pointer of a Linked List?
- Swap nodes in a linked list without swapping data
- Reverse a linked list
- Merge two sorted linked lists
- Merge Sort for Linked Lists
- Reverse a Linked List in groups of a given size
- Detect and Remove Loop in a Linked List
- Add two numbers represented by linked lists | Set 1
- Rotate a Linked List
- Generic Linked List in C
- Circular Linked List Introduction and Applications
- Circular Singly Linked List Insertion
- Circular Linked List Traversal
- Split a Circular Linked List into two halves
- Sorted insert for circular linked list
- Doubly Linked List Introduction and Insertion
- Delete a node in a Doubly Linked List
- Reverse a Doubly Linked List
- The Great Tree-List Recursion Problem
- QuickSort on Doubly Linked List
- Merge Sort for Doubly Linked List
- Introduction to Stack
- Infix to Postfix Conversion using Stack
- Evaluation of Postfix Expression
- Reverse a String using Stack
- Implement two stacks in an array
- Check for balanced parentheses in an expression
- Next Greater Element
- Reverse a stack using recursion
- Sort a stack using recursion
- The Stock Span Problem
- Design and Implement Special Stack Data Structure
- Implement Stack using Queues
- Design a stack with operations on middle element
- How to efficiently implement k stacks in a single array?
- Queue Introduction and Array Implementation
- Linked List Implementation of Queue
- Applications of Queue Data Structure
- Priority Queue Introduction
- Deque (Introduction and Applications)
- Implementation of Deque using a circular array
- Implement Queue using Stacks
- Find the first circular tour that visits all petrol pumps
- Maximum of all subarrays of size k
- An Interesting Method to Generate Binary Numbers from 1 to n
- How to efficiently implement k Queues in a single array?
- Binary Tree Introduction
- Binary Tree Properties
- Types of Binary Tree
- Handshaking Lemma and Interesting Tree Properties
- Enumeration of Binary Tree
- Applications of tree data structure
- Tree Traversals
- BFS vs DFS for Binary Tree
- Level Order Tree Traversal
- Diameter of a Binary Tree
- Inorder Tree Traversal without Recursion
- Inorder Tree Traversal without recursion and without stack!
- Threaded Binary Tree
- Maximum Depth or Height of a Tree
- If you are given two traversal sequences, can you construct the binary tree?
- Clone a Binary Tree with Random Pointers
- Construct Tree from given Inorder and Preorder traversals
- Maximum width of a binary tree
- Print nodes at k distance from root
- Print Ancestors of a given node in Binary Tree
- Check if a binary tree is a subtree of another binary tree
- Connect nodes at the same level
- Search and Insert in BST
- Deletion from BST
- Minimum value in a Binary Search Tree
- Inorder predecessor and successor for a given key in BST
- Check if a binary tree is BST or not
- Lowest Common Ancestor in a Binary Search Tree
- Inorder Successor in Binary Search Tree
- Find k-th smallest element in BST (Order Statistics in BST)
- Merge two BSTs with limited extra space
- Two nodes of a BST are swapped, correct the BST
- Floor and Ceil from a BST
- In-place conversion of Sorted DLL to Balanced BST
- Find a pair with given sum in a Balanced BST
- Total number of possible Binary Search Trees with n keys
- Merge Two Balanced Binary Search Trees
- Binary Tree to Binary Search Tree Conversion
- Binary Heap
- Why is Binary Heap Preferred over BST for Priority Queue?
- Heap Sort
- K’th Largest Element in an array
- Sort an almost sorted array
- Binomial Heap
- Fibonacci Heap
- Tournament Tree (Winner Tree) and Binary Heap
- Hashing Introduction
- Separate Chaining for Collision Handling
- Open Addressing for Collision Handling
- Print a Binary Tree in Vertical Order
- Find whether an array is a subset of another array
- Union and Intersection of two Linked Lists
- Find a pair with given sum
- Check if a given array contains duplicate elements within k distances from each other
- Find Itinerary from a given list of tickets
- Find the number of Employees Under every Employee
- Graph and its representations
- Breadth First Traversal for a Graph
- Depth First Traversal for a Graph
- Applications of Depth First Search
- Applications of Breadth First Traversal
- Detect Cycle in a Directed Graph
- Detect Cycle in Graph using DSU
- Detect cycle in an Undirected Graph using DFS
- Longest Path in a Directed Acyclic Graph
- Topological Sorting
- Check whether a given graph is Bipartite or not
- Snake and Ladder Problem
- Minimize Cash Flow among a given set of friends who have borrowed money from each other
- Boggle (Find all possible words in a board of characters)
- Assign directions to edges so that the directed graph remains acyclic
- Memory efficient doubly linked list
- XOR Linked List – A Memory Efficient Doubly Linked List | Set 1
- XOR Linked List – A Memory Efficient Doubly Linked List | Set 2
- Skip List | Set 1 (Introduction)
- Self Organizing List | Set 1 (Introduction)
- Unrolled Linked List | Set 1 (Introduction)
- Segment Tree | Set 1 (Sum of given range)
- Segment Tree | Set 2 (Range Minimum Query)
- Lazy Propagation in Segment Tree
- Persistent Segment Tree | Set 1 (Introduction)
- Trie | (Insert and Search)
- Trie | (Delete)
- Longest prefix matching – A Trie based solution in Java
- Print unique rows in a given boolean matrix
- How to Implement Reverse DNS Look Up Cache?
- How to Implement Forward DNS Look Up Cache?
- Binary Indexed Tree
- Two Dimensional Binary Indexed Tree or Fenwick Tree
- Binary Indexed Tree : Range Updates and Point Queries
- Binary Indexed Tree : Range Update and Range Queries
- Suffix Array Introduction
- Suffix Array nLogn Algorithm
- kasai’s Algorithm for Construction of LCP array from Suffix Array
- Suffix Tree Introduction
- Ukkonen’s Suffix Tree Construction – Part 1
- Ukkonen’s Suffix Tree Construction – Part 2
- Ukkonen’s Suffix Tree Construction – Part 3
- Ukkonen’s Suffix Tree Construction – Part 4
- Ukkonen’s Suffix Tree Construction – Part 5
- Ukkonen’s Suffix Tree Construction – Part 6
- Generalized Suffix Tree
- Build Linear Time Suffix Array using Suffix Tree
- Substring Check
- Searching All Patterns
- Longest Repeated Substring
- Longest Common Substring
- Longest Palindromic Substring
- Red-Black Tree Introduction
- Red Black Tree Insertion
- Red-Black Tree Deletion
- Program for Red Black Tree Insertion
- Treap (A Randomized Binary Search Tree)
- Ternary Search Tree
- Interval Tree
- Implement LRU Cache
- Sort numbers stored on different machines
- Find the k most frequent words from a file
- Given a sequence of words, print all anagrams together
- Tournament Tree (Winner Tree) and Binary Heap
- Decision Trees – Fake (Counterfeit) Coin Puzzle (12 Coin Puzzle)
- Spaghetti Stack
- Data Structure for Dictionary and Spell Checker?
- Cartesian Tree
- Cartesian Tree Sorting
- Sparse Set
- Centroid Decomposition of Tree
- Gomory-Hu Tree
- Search in a row wise and column-wise sorted matrix
- Print a given matrix in spiral form
- A Boolean Matrix Question
- Print unique rows in a given boolean matrix
- Maximum size square sub-matrix with all 1s
- Print unique rows in a given boolean matrix
- Inplace M x N size matrix transpose | Updated
- Dynamic Programming | Set 27 (Maximum sum rectangle in a 2D matrix)
- Strassen’s Matrix Multiplication
- Create a matrix with alternating rectangles of O and X
- Print all elements in sorted order from row and column-wise sorted matrix
- Given an n x n square matrix, find the sum of all sub-squares of size k x k
- Count the number of islands where every island is row-wise and column-wise separated
- Find a common element in all rows of a given row-wise sorted matrix
- Commonly Asked Data Structure Interview Questions | Set 1
- A data structure for n elements and O(1) operations
- Expression Tree
Provide step-by-step instructions for installing any dependencies and running code examples. Include code blocks or terminal commands if necessary.
# Clone the repository
git clone https://github.com/mozammilrja/DASProblem
# Change directory
cd js-dsa
# Install dependencies (if applicable)
npm install