- Welcome
- Introduction
- 1. Getting Started with Data Structures, Algorithms, and Complexity
- 1.1. What is DSA?
- 1.2. What is an Algorithms?
- 1.3. What is pseudocode?
- 1.4. Why Learn DSA?
- 1.5. Applications of DSA(Where It’s Used)
- 1.6. Impact of Using vs. Not Using DSA
- 1.7. Introduction to Big-O Notation
- 1.8. Common Big-O Complexities
- 1.9. What is Complexity?
- 1.10. Common Algorithmic Complexities with Examples
- 2. Introduction to Recursion
- 2.1. Factorial Example
- 2.2. Recursion vs Iteration
- 2.3. Tail Recursion
- 3. Data Structures
- 3.1. Array
- 3.1.1. 2D Array
- 3.1.2. Jagged Array
- 3.2. Strings
- 3.2.1. Mutable Strings
- 3.3. Stacks
- 3.4. Queues
- 3.4.1. Priority Queue
- 3.5. Linked Lists
- 3.5.1. Doubly Linked Lists
- 3.5.2. Circular Linked Lists
- 3.6. Hashing
- 3.7. Trees
- 3.8. Graphs
- 4. Sorting Algorithms
- 4.1. Bubble Sort
- 4.2. Selection Sort
- 4.3. Insertion Sort
- 4.4. Merge Sort
- 5. Searching Algorithms
- 5.1. Linear Search
- 5.2. Binary Search
- 6. Recursion Problem Solving with DSA
- 6.1. BinarySearchRecursion
- 6.2. FactorialWithMemoization
- 6.3. RecursiveArraySum
- 6.4. ReverseStringRecursively
- 6.5. TowerOfHanoi
- 6.6. FibonacciOptimization
- 6.7. LinkedListTraversal
- 6.8. PowerFunction
- 6.9. RecursiveVsIterativeSum
- 6.10. ReverseStringComparison
- 6.11. FactorialConversion
- 6.12. ReverseStringTailRecursion
- 6.13. TailRecursiveListLength
- 6.14. TailRecursivePower
- 6.15. TailRecursiveSum
- 7. Array Problem Solving with DSA
- 7.1. ArrayReversal
- 7.2. ArrayRotation
- 7.3. ArraySorting
- 7.4. DuplicateFinder
- 7.5. MaximumElement
- 7.6. 3DArraySummation
- 7.7. DiagonalElements
- 7.8. MatrixMultiplication
- 7.9. TransposeMatrix
- 7.10. WaveTraversal
- 7.11. AdjacencyListRepresentation
- 7.12. DynamicRowAddition
- 7.13. JaggedArrayTranspose
- 7.14. RowSorting
- 7.15. SparseMatrixSum
- 8. Strings Problem Solving with DSA
- 8.1. PalindromeChecker
- 8.2. ReverseString
- 8.3. StringCompression
- 8.4. StringPoolExperiment
- 8.5. SubstringFrequency
- 8.6. DynamicTextBuilder
- 8.7. InsertAndDeleteSimulation
- 8.8. StringBuilderCapacityManagement
- 8.9. StringReversal
- 8.10. ThreadSafeConcatenation
- 9. Stacks Problem Solving with DSA
- 9.1. BrowserBackButtonSimulation
- 9.2. InfixToPostfixConversion
- 9.3. ParenthesesChecker
- 9.4. StackMinFunction
- 9.5. StringBuilderCapacityManagement
- 10. Queues Problem Solving with DSA
- 10.1. CircularQueueTest
- 10.2. PrintJobSimulator
- 10.3. QueueBasedBFS
- 10.4. QueueReversal
- 10.5. TicketCounterSimulation
- 10.6. DijkstrasAlgorithm
- 10.7. KthLargestElement
- 10.8. MergeKSortedLists
- 10.9. MinHeapToMaxHeap
- 10.10. TaskScheduler
- 11. Linked Lists Problem Solving with DSA
- 11.1. CycleDetection
- 11.2. MergeTwoSortedLists
- 11.3. MiddleElementFinder
- 11.4. PlaylistManager
- 11.5. ReverseLinkedList
- 11.6. BidirectionalTraversal
- 11.7. BrowserHistorySimulator
- 11.8. DequeImplementation
- 11.9. InsertAfterValue
- 11.10. ReverseDoublyLinkedList
- 11.11. InsertAfterValueCircular
- 11.12. JosephusProblem
- 11.13. RotateCircularLinkedList
- 11.14. RoundRobinScheduler
- 11.15. SplitCircularLinkedList
- 12. Hashing Problem Solving with DSA
- 12.1. CollisionAnalysis
- 12.2. CustomHashFunction
- 12.3. PhoneBookApplication
- 12.4. TwoSumProblem
- 12.5. WordFrequencyCounter
- 13. Trees Problem Solving with DSA
- 13.1. BSTValidator
- 13.2. HeightOfBST
- 13.3. LowestCommonAncestor
- 13.4. PreorderPostorderTraversals
- 13.5. RangeSumQuery
- 14. Graphs Problem Solving with DSA
- 14.1. CycleDetection
- 14.2. GraphConnectivity
- 14.3. ShortestPathUnweighted
- 14.4. SocialNetworkSimulation
- 14.5. WeightedGraphExtension
- 15. Sorting Algorithms Problem Solving with DSA
- 15.1. BasicBubbleSort
- 15.2. BubbleSortEdgeCaseHandling
- 15.3. BubbleSortFlagOptimization
- 15.4. BubbleSortPerformanceAnalysis
- 15.5. DescendingBubbleSort
- 15.6. BasicSelectionSort
- 15.7. DescendingSelectionSort
- 15.8. SelectionSortMinimumSwapCount
- 15.9. SelectionSortPerformanceAnalysis
- 15.10. SelectionSortStringArray
- 15.11. BasicInsertionSort
- 15.12. DescendingInsertionSort
- 15.13. InsertionSortNearlySortedArrays
- 15.14. InsertionSortObjectSorting
- 15.15. InsertionSortPerformanceAnalysis
- 15.16. BasicMergeSort
- 15.17. DescendingMergeSort
- 15.18. MergeSortObjectSorting
- 15.19. MergeSortPerformanceAnalysis
- 15.20. MergeSortSpaceOptimization
- 16. Searching Algorithms
- 16.1. BasicLinearSearch
- 16.2. LinearSearchLastOccurrence
- 16.3. LinearSearchMultipleTargets
- 16.4. LinearSearchObjectSearch
- 16.5. LinearSearchPerformanceAnalysis
- 16.6. BasicBinarySearch
- 16.7. BinarySearchFirstLastOccurrence
- 16.8. BinarySearchObjectSearch
- 16.9. BinarySearchPerformanceAnalysis
- 16.10. BinarySearchRecursiveImplementation
- 17. Appendix-Glossary of Terms
- 18. Appendix-Pseudocode Symbols
- 19. Appendix-Java Code Templates