I am 11 year experienced Java, Spring Boot, Microservices, AWS, Azure, GCP, DevOps, CI/CD, Docker, Kubernetes, Terraform, Ansible, Jenkins, GitHub Actions, and Python developer. I am looking to improve my data structures and algorithms skills. I want to do a 100-day challenge where I will solve one problem every day related to data structures and algorithms. I want to share my solutions on GitHub and write a blog post about each problem I solve. Cover following data structures and algorithms
a. Basics - Variables - System Defined vs User Defined, Data Types, Data Structure ,ADT, Algorithms b.Why Analysis of Algorithms, Goal of analysis of algorithms, Running time analysis, how to Compare Algorithms, Rate of growth, Commonly used rate of growth functions, Logarithmic time complexity, Linear time complexity, Quadratic time complexity, Exponential time complexity, Factorial time complexity, Constant time complexity, Log Linear time complexity, Sub-linear time complexity, Super-linear time complexity, Polynomial time complexity, c. Types of analysis, Worst case analysis, Best case analysis, Average case analysis, Amortized analysis - Big O Notation, Omega Notation, Theta Notation, Little o Notation, Little omega Notation d. Why Asymptotic Notation, Time Complexity, Space Complexity e. Master Theorem for Divide and Conquer, Recurrence Relations, Solving Recurrence Relations using Master Theorem, Solving Recurrence Relations using Substitution Method, Solving Recurrence Relations using Iteration Method
a. Introduction to Recursion,Why Recursion, b. Base Case, Recursive Case, Recursion and memory, c. Recursion vs Iteration, Advantages and Disadvantages of Recursion d. Types of Recursion, Tail Recursion, Head Recursion, Linear Recursion, Binary Recursion, Multiple Recursion, Tree Recursion, Indirect Recursion, Nested Recursion, Infinite Recursion, Tail Recursion Optimization e. Practice Problems on Recursion - Tower of Hanoi, Three Sum, Generate Parentheses, Permutations, Combinations, Subsets, N-Queens Problem, Sudoku Solver, Word Search, Palindrome Partitioning, Letter Combinations of a Phone Number, Binary Tree Paths, Unique Binary Search Trees, Unique Binary Search Trees II, Combinations Sum, Combinations Sum II, Combinations Sum III, Combinations Sum IV, Combinations Sum V, f. Introduction to Backtracking, Why Backtracking, Backtracking vs Recursion, Advantages and Disadvantages of Backtracking, Practice Problems on Backtracking - N-Queens Problem, Sudoku Solver, Word Search, Palindrome Partitioning, Letter Combinations of a Phone Number, Binary Tree Paths, Unique Binary Search Trees, Unique Binary Search Trees II, Combinations Sum, Combinations Sum II, Combinations Sum III, Combinations Sum IV, Combinations Sum V
a. Introduction to Arrays, Types of Arrays, Advantages and Disadvantages of Arrays, Practice Problems on Arrays - Two Sum, Best Time to Buy and Sell Stock, Contains Duplicate, Product of Array Except Self, Maximum Subarray, Maximum Product Subarray, Find Minimum in Rotated Sorted Array, Search in Rotated Sorted Array, 3Sum, 3Sum Closest, 4Sum, 4Sum II, Valid Anagram, Valid Palindrome, Longest Common Prefix, Longest Substring, Longest Repeating Character Replacement, Minimum Window Substring, Group Anagrams,
b. Introduction to Strings, String Manipulation, String Matching Algorithms, Practice Problems on Strings - Valid Anagram, Valid Palindrome, Longest Common Prefix, Longest Substring, Longest Repeating Character Replacement, Minimum Window Substring, Group Anagrams
c. Introduction to 2D Arrays, Types of 2D Arrays, Advantages and Disadvantages of 2D Arrays, Practice Problems on 2D Arrays - Set Matrix Zeroes, Spiral Matrix, Rotate Image, Word Search, Pascal's Triangle, Pascal's Triangle II, Unique Paths, Unique Paths II, Minimum Path Sum, Dungeon Game, Maximal Square, Maximal Rectangle, Count of Smaller Numbers After Self,
d. Introduction to Matrix, Types of Matrix, Advantages and Disadvantages of Matrix, Practice Problems on Matrix - Set Matrix Zeroes, Spiral Matrix, Rotate Image, Word Search, Pascal's Triangle, Pascal's Triangle II, Unique Paths, Unique Paths II, Minimum Path Sum, Dungeon Game, Maximal Square, Maximal Rectangle, Count of Smaller Numbers After Self
-
What is a Linked List, Linked List ADT
-
Why Linked List, Advantages and Disadvantages of Linked Lists,
-
Array vs Linked List, When to use Array vs Linked List
-
Introduction to Singly Linked List,Basic Operations on Singly Linked List - Insertion, Deletion, Traversal, Searching,
-
Practice Problems on Linked Lists - Reverse Linked List, Merge Two Sorted Lists, Remove Nth Node From End of List, Palindrome Linked List, Intersection of Two Linked Lists, Linked List Cycle, Linked List Cycle II, Add Two Numbers, Copy List with Random Pointer, Flatten a Multilevel Doubly Linked List
-
Introduction to Doubly Linked List, Advantages and Disadvantages of Doubly Linked Lists,
-
Practice Problems on Doubly Linked Lists - Reverse Doubly Linked List,
-
Insert at the end of Doubly Linked List, at the beginning of Doubly Linked List, at a given position in Doubly Linked List, Delete a node from Doubly Linked List - first node, last node, a given position in Doubly Linked List, Traversal of Doubly Linked List - forward and backward, Searching in Doubly Linked List, Merge Two Sorted Doubly Linked Lists, Remove Nth Node From End of Doubly Linked List, Palindrome Doubly Linked List, Intersection of Two Doubly Linked Lists, Doubly Linked List Cycle, Add Two Numbers in Doubly Linked List, Copy Doubly Linked List with Random Pointer, Flatten a Multilevel Doubly Linked List
-
Introduction to Circular Linked List, Advantages and Disadvantages of Circular Linked Lists,
-
Practice Problems on Circular Linked Lists - Count Nodes in Circular Linked List,Printing content, Insert at start,Delete at start,Insert at end,Delete from end, Reverse Circular Linked List, Josephus Problem
-
Memory Efficient Linked List - XOR Linked List, Advantages and Disadvantages of XOR Linked List, Practice Problems on XOR Linked List - Insertion, Deletion, Traversal, Searching
-
Unrolled Linked List, Advantages and Disadvantages of Unrolled Linked List, Practice Problems on Unrolled Linked List - Insertion, Deletion, Traversal, Searching
-
Introduction to Fast and Slow Pointer, Advantages and Disadvantages of Fast and Slow Pointer, Practice Problems on Fast and Slow Pointer - Linked List Cycle, Linked List Cycle II, Find the Duplicate Number, Happy Number, Middle of the Linked List, Intersection of Two Linked Lists
-
Array vs Linked List, Advantages and Disadvantages of Array vs Linked List, When to use Array vs Linked List
-
Use Cases of Linked Lists - Implementing Stacks and Queues, Dynamic Memory Allocation, Hash Tables, Graphs, etc.
-
Problems - Implement stack using linked list, Implement queue using linked list, find nth element from the end of a linked list, find the middle element of a linked list, reverse a linked list, detect a cycle in a linked list, find the starting point of the cycle in a linked list, merge two sorted linked lists, add two numbers represented by linked lists, copy a linked list with random pointer, flatten a multilevel doubly linked list, etc.
-
What is stack, How stack is used, Stack ADTs
-
Types of Stacks, Advantages and Disadvantages of Stacks, Application of Stack - Expression Evaluation, Infix to Postfix, Infix to Prefix, Postfix to Infix, Prefix to Infix, Postfix to Prefix, Prefix to Postfix
-
Stack Implementation using Array, Stack Implementation using Linked List, Stack Implementation using Dynamic Array, Stack Implementation using Two Queues, Stack Implementation using One Queue, Stack Implementation using Recursion, Comparison of Stack Implementations, When to use which Stack Implementation
-
Practice Problems on Stacks - Valid Parentheses, Min Stack, Evaluate Reverse Polish Notation, Daily Temperatures, Next Greater Element I, Next Greater Element II, Next Greater Element III, Largest Rectangle in Histogram, Maximal Rectangle, permuations of a given string, permutations of a given array, palindrome, reverse a string, 3 stack in one array, etc.
-
Get minimum element from stack in O(1) time, Implement a stack that supports getMin() in O(1) time and O(1) extra space, Implement a stack that supports getMin() in O(1) time and O(n) extra space, Implement a stack that supports getMin() in O(1) time and O(n) extra space using two stacks, Implement a stack that supports getMin() in O(1) time and O(n) extra space using one stack, Implement a stack that supports getMin() in O(1) time and O(n) extra space using recursion
-
Largest Rectangle in Histogram, Maximal Rectangle, sorting in asendinc order, etc.
-
Application of Stack - Expression Evaluation, Infix to Postfix, Infix to Prefix, Postfix to Infix, Prefix to Infix, Postfix to Prefix, Prefix to Postfix
-
What is queue, How queue is used, Queue ADTs, Application of Queue - BFS, Level Order Traversal, etc.
-
Types of Queues, Advantages and Disadvantages of Queues
-
Queue Implementation using Array - simple circular array implementation, dynamic circular array implementation
-
Queue Implementation using Linked List, Queue Implementation using Dynamic Array, Queue Implementation using Two Stacks, Queue Implementation using One Stack, Queue Implementation using Recursion, Comparison of Queue Implementations, When to use which Queue Implementation
-
Queue Implementation using Linked List, Queue Implementation using Dynamic Array, Queue Implementation using Two Stacks, Queue Implementation using One Stack, Queue Implementation using Recursion, Comparison of Queue Implementations, When to use which Queue Implementation
-
Practice Problems on Queues - Implement Queue using Stacks, Implement Stack using Queues, Moving Average from Data Stream, Design Circular Queue, Design Circular Deque, Sliding Window Maximum
-
Application of Queue - BFS, Level Order Traversal, etc.
-
Reverse a queue, sort a queue, using 2 stacks, using 1 stack, using recursion, using 2 queues, using 1 queue, maximum sum of k consecutive elements in a queue, etc.
-
What is Tree, Concepts of Tree, Tree ADTs, Why Trees, Advantages and Disadvantages of Trees, Application of Trees - Hierarchical Data Representation, File System, etc.
-
Basics of Trees, Types of Trees, Advantages and Disadvantages of Trees,
-
Types of Trees - Binary Tree, Binary Search Tree, AVL Tree, Red-Black Tree, Segment Tree, Fenwick Tree, Trie, etc.
-
Binary Tree - Properties of Binary Tree, Types of Binary Trees, Advantages and Disadvantages of Binary Trees, Practice Problems on Binary Trees - Maximum Depth of Binary Tree, Minimum Depth of Binary Tree, Diameter of Binary Tree, Balanced Binary Tree, Symmetric Tree, Path Sum, Binary Tree Paths, Sum Root to Leaf Numbers, Flatten Binary Tree to Linked List, Populating Next Right Pointers in Each Node, etc.
-
Binary Tree Traversals - Preorder, Inorder, Postorder, Level Order, Zigzag Level Order, Vertical Order, etc.
-
Problems on Trees - Maximum Depth of Binary Tree, Minimum Depth of Binary Tree, Diameter of Binary Tree, Balanced Binary Tree, Symmetric Tree, Path Sum, Binary Tree Paths, Sum Root to Leaf Numbers, Flatten Binary Tree to Linked List, Populating Next Right Pointers in Each Node, finding maximum element in binary tree, finding minimum element in binary tree with / Without recursion, finding a given element in binary tree,Insert into a Binary Tree, delete from a Binary Tree, etc.
-
Tree implementation using Array, Tree implementation using Linked List, Tree implementation using Dynamic Array, Comparison of Tree Implementations, When to use which Tree Implementation
-
Generic Trees - N-ary Tree, Trie, etc.
-
What is a Priority Queue, Types of Priority Queues, Advantages and Disadvantages of Priority Queues, Practice Problems on Priority Queues - Kth Largest Element in an Array, Kth Smallest Element in a Sorted Matrix, Top K Frequent Elements, Sort Characters By Frequency, Find Median from Data Stream, Sliding Window Median
-
What is a Heap, Types of Heaps, Advantages and Disadvantages of Heaps, Practice Problems on Heaps - Kth Largest Element in an Array, Kth Smallest Element in a Sorted Matrix, Top K Frequent Elements, Sort Characters By Frequency, Find Median from Data Stream, Sliding Window Median, Heap Sort
-
Application of Heaps - Dijkstra's Algorithm, Prim's Algorithm, etc.
-
Comparison of Priority Queues and Heaps, When to use Priority Queue vs Heap
-
What is Disjoint set, Types of Disjoint Sets, Advantages and Disadvantages of Disjoint Sets, Practice Problems on Disjoint Sets - Number of Islands, Friend Circles, Accounts Merge, Redundant Connection, Redundant Connection II, Graph Valid Tree, Satisfiability of Equality Equations
-
Equivalence Relations, Equivalence Classes
-
Disjoint Set Union (DSU) - Union by Rank, Path Compression, etc.
-
Application of Disjoint Set Union - Kruskal's Algorithm, etc.