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