If you appreciate my work, please 🌟 this repository. It motivates me. 🚀 🚀
DSA Sheet: https://bit.ly/pranayDSAsheet
Data-Structures-and-Algorithms
├── 01. DataStructures
│ ├── 01. Linked List
│ │ ├── 1. Singly-Linked-List
│ │ │ ├── Basic Operations
│ │ │ │ ├── Find Middle Element
│ │ │ │ │ ├── find_middle_element.cpp
│ │ │ │ │ ├── output.png
│ │ │ │ │ └── README.md
│ │ │ │ ├── README.md
│ │ │ │ ├── SinglyLL.cpp
│ │ │ │ └── SinglyLL.java
│ │ │ └── InterviewBit Questions
│ │ │ ├── 01. ReverseLL
│ │ │ │ ├── README.md
│ │ │ │ └── solution 1.java
│ │ │ ├── 02. IntersectionOfLL
│ │ │ │ ├── README.md
│ │ │ │ └── solution 2.java
│ │ │ ├── 03. Kth Node From Middle
│ │ │ │ ├── README.md
│ │ │ │ └── solution 3.java
│ │ │ ├── 04. Palindrome List GQ
│ │ │ │ ├── README.md
│ │ │ │ └── solution 4.java
│ │ │ ├── 05. Merge Two Sorted List GQ
│ │ │ │ ├── Apna College Solution (Good Explaination).md
│ │ │ │ ├── solution 5 ApnaCollege.java
│ │ │ │ ├── solution 5 Striver.java
│ │ │ │ └── Striver Solution.md
│ │ │ ├── 06. Remove Duplicates From Sorted List
│ │ │ │ ├── README.md
│ │ │ │ └── solution 6.java
│ │ │ ├── 07. Remove Duplicates From Sorted List- II GQ
│ │ │ │ ├── README.md
│ │ │ │ └── solution 7.java
│ │ │ ├── 08. Remove nth Node from List end GQ
│ │ │ │ ├── README.md
│ │ │ │ └── solution 8.java
│ │ │ ├── 09. Add two no. as List
│ │ │ │ ├── README.md
│ │ │ │ └── solution 9.java
│ │ │ ├── 10. Reverse LL in K group GQ
│ │ │ │ ├── Iterative Solution Self.md
│ │ │ │ ├── Recursive Solution Apna College.md
│ │ │ │ ├── solution 10-AC.java
│ │ │ │ └── solution 10-self.java
│ │ │ ├── 11. Rotate LL by K place
│ │ │ │ ├── README.md
│ │ │ │ └── solution 11.java
│ │ │ └── 12. Reverse LL-ii
│ │ │ ├── README.md
│ │ │ └── solution 12.java
│ │ ├── 2. Doubly-Linked-List
│ │ │ ├── Basic Operations
│ │ │ │ ├── DoublyLL.java
│ │ │ │ └── README.md
│ │ │ └── Questions
│ │ │ └── 1. Two Pair Sum
│ │ │ ├── 2 pair sum Q.pdf
│ │ │ └── 2 pair sum solution.java
│ │ └── 3. Circular-Linked-List
│ │ ├── CircularLL.java
│ │ └── README.md
│ ├── 02. Stack
│ │ ├── Basic Operation
│ │ │ ├── 1. Stack using Array
│ │ │ │ ├── README.md
│ │ │ │ └── Stack_Array.java
│ │ │ ├── 2. Stack using LinkList
│ │ │ │ ├── README.md
│ │ │ │ └── Stack_LinkList.java
│ │ │ ├── 3. Stack using Queue
│ │ │ │ ├── README.md
│ │ │ │ └── Stack_Queue.java
│ │ │ └── 4. Stack using Priority Queue
│ │ │ ├── README.md
│ │ │ └── Stack_Priority.java
│ │ ├── Infix Prefix Postfix
│ │ │ ├── 01. Infix to Postfix
│ │ │ │ ├── infixPostfix.cpp
│ │ │ │ ├── InfixPostfix.java
│ │ │ │ ├── pseudocode.png
│ │ │ │ └── README.md
│ │ │ ├── 02. Infix to Prefix
│ │ │ │ ├── InfixPrefix.java
│ │ │ │ ├── pseudocode.png
│ │ │ │ └── README.md
│ │ │ ├── 03. Postfix to Infix
│ │ │ │ ├── PostfixInfix.java
│ │ │ │ ├── pseudocode.png
│ │ │ │ └── README.md
│ │ │ ├── 04. Prefix to Infix
│ │ │ │ ├── PrefixInfix.java
│ │ │ │ ├── pseudocode.png
│ │ │ │ └── README.md
│ │ │ ├── 05. Postfix to Prefix
│ │ │ │ ├── PostfixPrefix.java
│ │ │ │ ├── pseudocode.png
│ │ │ │ └── README.md
│ │ │ └── 06. Prefix to Postfix
│ │ │ ├── PrefixPostfix.java
│ │ │ ├── pseudocode.png
│ │ │ └── README.md
│ │ └── LeetCode Questions
│ │ ├── 01. Remove Outermost Parentheses #1021
│ │ │ ├── Remove Outermost Parentheses.md
│ │ │ └── Solution.java
│ │ ├── 02. Remove All Adjacent Duplicates In String #1047
│ │ │ ├── Remove All Adjacent Duplicates In String.md
│ │ │ ├── Solution.java
│ │ │ └── Solution_Vikash.java
│ │ ├── 03. Build an Array With Stack Operations #1441
│ │ │ ├── Resources.md
│ │ │ └── Solution.java
│ │ ├── 04. Baseball Game #682
│ │ │ ├── Resources.md
│ │ │ └── Solution.java
│ │ ├── 05. Next Greater Element I #496
│ │ │ ├── Resources.md
│ │ │ ├── Solution_Optimised.java
│ │ │ └── Solution_self.java
│ │ ├── 06. Crawler Log Folder #1598
│ │ │ ├── Resources.md
│ │ │ └── Solution.java
│ │ ├── 07. Make The String Great #1544
│ │ │ ├── Resources.md
│ │ │ ├── Solution_self.java
│ │ │ └── Solution_Vikash.java
│ │ ├── 08. Backspace String Compare #844
│ │ │ ├── Resources.md
│ │ │ ├── Solution_self.java
│ │ │ └── Solution_Vikash.java
│ │ ├── 09. Valid Parentheses #20
│ │ │ ├── Resources.md
│ │ │ └── Solution.java
│ │ ├── 10. Design a Stack With Increment Operation #1381
│ │ │ ├── Resources.md
│ │ │ └── Solution.java
│ │ ├── 11. Minimum Add to Make Parentheses Valid #921
│ │ │ ├── Resources.md
│ │ │ └── Solution.java
│ │ ├── 12. Score of Parentheses #856
│ │ │ ├── Resources.md
│ │ │ └── Solution.java
│ │ ├── 13. Daily Temperatures #739
│ │ │ ├── Resources.md
│ │ │ └── Solution.java
│ │ └── 14. Validate Stack Sequences #946
│ │ ├── Resources.md
│ │ └── Solution.java
│ ├── 03. Queue
│ │ └── Basic Operations
│ │ ├── 01. Queue using Array
│ │ │ ├── pseudocode.png
│ │ │ ├── Queue_Array.java
│ │ │ └── README.md
│ │ ├── 02. Queue using Linked List
│ │ │ ├── Queue_LinkedList.java
│ │ │ └── README.md
│ │ ├── 03. Queue using Stacks
│ │ │ ├── Queue_Stack.java
│ │ │ └── README.md
│ │ ├── 04. Circular Queue using Array
│ │ │ ├── CircularQueue_Array.java
│ │ │ └── README.md
│ │ ├── 05. Circular Queue using Linked List
│ │ │ ├── CircularQueue_LinkedList.java
│ │ │ └── README.md
│ │ ├── 06. Dequeue using circular array
│ │ │ ├── Dequeue_CircularArray.java
│ │ │ └── README.md
│ │ └── 07. Priority Queue
│ │ ├── KLargestElement.java
│ │ ├── PriorityQueue.java
│ │ └── README.md
│ ├── 04. Tree
│ │ ├── 01. Introduction to Binary Tree
│ │ │ ├── README.md
│ │ │ └── traversals.cpp
│ │ ├── 02. Binary Search Tree
│ │ │ ├── BinarySearchTree.cpp
│ │ │ ├── BinarySearchTree.java
│ │ │ └── Readme.md
│ │ ├── 03. AVL Tree
│ │ │ ├── AVLTree.cpp
│ │ │ ├── AVLTree.java
│ │ │ └── README.md
│ │ ├── 04. Trie
│ │ │ ├── README.md
│ │ │ ├── Trie_Array.java
│ │ │ └── Trie_HashMap.java
│ │ └── 05. Heap
│ │ ├── Leetcode Questions
│ │ │ ├── 01. Kth Largest Element in an Array #215
│ │ │ │ ├── Kth Largest Element in an Array.md
│ │ │ │ └── Solution.java
│ │ │ └── 02. K Closest Points to Origin #973
│ │ │ ├── K Closest Points to Origin.md
│ │ │ └── Solution.java
│ │ ├── MinHeap.cpp
│ │ ├── MinHeap.java
│ │ └── README.md
│ ├── 05. ArrayList
│ │ └── ArrayList.java
│ ├── 06. HashMap
│ │ ├── MyHashMap.java
│ │ └── README.md
│ ├── 07. Set
│ │ ├── MyHashSet.java
│ │ ├── MyLinkedHashSet.java
│ │ ├── MyTreeSet.java
│ │ ├── README.md
│ │ └── SubarrayWith0Sum.java
│ └── 08. Graph
│ ├── MyGraph.java
│ └── README.md
├── 02. Algorithms
│ ├── 01. Arrays
│ │ ├── 01. Reverse an Array
│ │ │ ├── README.md
│ │ │ └── ReverseArray.java
│ │ ├── 02. Find the maximum and minimum element in an array
│ │ │ └── README.md
│ │ ├── 03. 215. Kth Largest Element in an Array
│ │ │ ├── brute_force.java
│ │ │ ├── README.md
│ │ │ └── Using_priorityQueue.java
│ │ ├── 04. 75. Sort Colors OR Sort012
│ │ │ ├── brute_force.java
│ │ │ ├── Optimal_Solution.java
│ │ │ ├── README.md
│ │ │ └── Solution.cpp
│ │ ├── 05. Move all negative numbers to one side
│ │ │ ├── README.md
│ │ │ └── Solution.java
│ │ ├── 06. Find the Union and Intersection of Two Arrays
│ │ │ ├── README.md
│ │ │ ├── Union_and_Intersection.java
│ │ │ └── Using_BinarySearch.java
│ │ ├── 07. Cyclically Rotate an Array
│ │ │ ├── Brute_Force.java
│ │ │ ├── Optimal_Solution.java
│ │ │ └── README.md
│ │ ├── 08. Kadane's Algorithm
│ │ │ ├── 53. Maximum Subarray
│ │ │ │ ├── README.md
│ │ │ │ └── Solution.java
│ │ │ └── 918. Maximum Sum Circular Subarray
│ │ │ ├── README.md
│ │ │ ├── Solution2.java
│ │ │ └── Solution.java
│ │ ├── 09. Minimize the Heights II
│ │ │ ├── README.md
│ │ │ └── Solution.java
│ │ ├── 10. 45. Jump Game II
│ │ │ ├── README.md
│ │ │ └── Solution.java
│ │ └── 11. Jumping on the Clouds
│ │ ├── README.md
│ │ ├── Solution2.java
│ │ └── Solution.java
│ ├── 02. Sorting
│ │ ├── 01. Bubble Sort
│ │ │ ├── BubbleSort.java
│ │ │ └── README.md
│ │ ├── 02. InsertionSort
│ │ │ ├── Insertion_Sort.java
│ │ │ └── README.md
│ │ ├── 03. Selection Sort
│ │ │ ├── README.md
│ │ │ └── Selection_Sort.java
│ │ ├── 04. Quick Sort
│ │ │ ├── Quick_Sort.java
│ │ │ └── README.md
│ │ ├── 05. Merge Sort
│ │ │ ├── Merge_Sort.java
│ │ │ └── README.md
│ │ ├── 06. Count Sort
│ │ │ ├── Count_Sort.java
│ │ │ └── README.md
│ │ ├── 07. Radix Sort
│ │ │ ├── Radix_Sort.java
│ │ │ └── README.md
│ │ ├── 08. Heap Sort
│ │ │ └── README.md
│ │ ├── 09. Cyclic Sort
│ │ │ └── CyclicSort.java
│ │ └── README.md
│ ├── 03. Searching
│ │ ├── 01. Linear Search
│ │ │ ├── Linear_Search.java
│ │ │ ├── Notes.pdf
│ │ │ └── README.md
│ │ ├── 02. Binary Search
│ │ │ ├── Binary_Search.java
│ │ │ ├── Notes.pdf
│ │ │ ├── OrderAgnostic_BinarySearch.java
│ │ │ └── README.md
│ │ └── Problems
│ │ ├── 01. 1295. Find Numbers with Even Number of Digits
│ │ │ ├── README.md
│ │ │ └── Solution.java
│ │ ├── 02. 1672. Richest Customer Wealth
│ │ │ ├── README.md
│ │ │ └── Solution.java
│ │ ├── 03. Floor in a Sorted Array
│ │ │ ├── README.md
│ │ │ └── Solution.java
│ │ ├── 04. Ceil in a Sorted Array
│ │ │ ├── README.md
│ │ │ └── Solution.java
│ │ ├── 05. 744. Find Smallest Letter Greater Than Target
│ │ │ ├── README.md
│ │ │ └── Solution.java
│ │ ├── 06. 34. Find First and Last Position of Element in Sorted Array
│ │ │ ├── README.md
│ │ │ └── Solution.java
│ │ ├── 07. Find position of an element in an infinite sorted array
│ │ │ ├── BS_in_InfiniteArray.java
│ │ │ └── README.md
│ │ ├── 08. 852. Peak Index in a Mountain Array
│ │ │ ├── README.md
│ │ │ ├── Solution1.java
│ │ │ └── Solution2.java
│ │ ├── 09. 162. Find Peak Element
│ │ │ ├── README.md
│ │ │ └── Solution.java
│ │ ├── 10. 1095. Find in Mountain Array
│ │ │ ├── README.md
│ │ │ └── Solution.java
│ │ ├── 11. 33. Search in Rotated Sorted Array
│ │ │ ├── README.md
│ │ │ └── Solution.java
│ │ ├── 12. Find the Rotation Count in Rotated Sorted array
│ │ │ └── README.md
│ │ ├── 13. 410. Split Array Largest Sum
│ │ │ ├── Dry run.pdf
│ │ │ ├── README.md
│ │ │ └── Solution.java
│ │ ├── 14. 69. Sqrt(x)
│ │ │ ├── README.md
│ │ │ ├── Solution2.java
│ │ │ └── Solution.java
│ │ ├── 15. 278. First Bad Version
│ │ │ ├── README.md
│ │ │ └── Solution.java
│ │ └── 16. 167. Two Sum II - Input array is sorted
│ │ ├── better_approach.java
│ │ ├── brute-force.java
│ │ ├── optimal_approach.java
│ │ └── README.md
│ ├── 04. Recursion
│ │ ├── Problems
│ │ │ ├── 00. Maximum and Minimum Value in an Array
│ │ │ │ ├── README.md
│ │ │ │ └── Solution.java
│ │ │ ├── 00. Sum triangle from array
│ │ │ │ ├── README.md
│ │ │ │ └── Solution.java
│ │ │ ├── 01. 509. Fibonacci Number
│ │ │ │ └── README.md
│ │ │ ├── 02. 344. Reverse String
│ │ │ │ ├── README.md
│ │ │ │ └── Solution.java
│ │ │ ├── 03.Towers of Hanoi
│ │ │ │ └── Towers_of_Hanoi.cpp
│ │ │ └── 04. Recursive Insertion Sort
│ │ │ ├── README.md
│ │ │ └── Solution.java
│ │ └── README.md
│ ├── 05. Graphs
│ │ └── 01. Depth First Search
│ │ ├── DFS.cpp
│ │ ├── output.png
│ │ └── README.md
│ └── README.md
├── CODE_OF_CONDUCT.md
├── dir_tree.txt
├── LICENSE
├── PREREQUISITES.md
├── README.md
├── SYLLABUS.md
└── Towers_of_Hanoi.cpp
128 directories, 255 files