Welcome to my collection of all topics completed during my journey learning Data Structures and Algorithms (DSA) with Java! π
This repository contains various problem sets I completed while diving into the world of DSA with Java. Each topic covers different aspects of computer science and algorithms, ranging from basic variables and operators to complex data structures and algorithms.
- Description: Introduction to variables in Java, including data types and variable declarations.
- Folder: 001-variables
- Description: Exploration of different operators in Java, including arithmetic, relational, and logical operators.
- Folder: 002-operators
- Description: Implementation of conditional statements such as if-else and switch-case in Java.
- Folder: 003-conditional-statements
- Description: Understanding and implementing various loops, including for, while, and do-while loops.
- Folder: 004-loops
- Description: Creating basic patterns using loops.
- Folder: 005-pattern-part-1
- Description: Introduction to functions, including defining and calling functions, and understanding function scope.
- Folder: 006-functions
- Description: Creating more complex patterns using nested loops.
- Folder: 007-pattern-part-2
- Array Part 1: Introduction to arrays, including declaration, initialization, and basic operations.
- Folder: 008-array-part-1
- Array Part 2: Advanced operations on arrays, including sorting and searching algorithms.
- Folder: 009-array-part-2
- Description: Implementation of various sorting algorithms, such as bubble sort, selection sort, and insertion sort.
- Folder: 010-sorting
- Description: Working with 2D arrays, including declaration, initialization, and traversal.
- Folder: 011-2darrays
- Description: Manipulation of strings, including basic operations, string methods, and string comparison.
- Folder: 012-strings
- Description: Understanding and implementing bit manipulation techniques and operations.
- Folder: 013-bitmanipulation
- Description: Introduction to OOP concepts in Java, including classes, objects, inheritance, and polymorphism.
- Folder: 014-oops
- Description: Understanding and implementing recursion, including basic recursive functions and backtracking.
- Folder: 015-recursion
- Description: Implementation of divide-and-conquer algorithms, such as merge sort and quicksort.
- Folder: 016-divide-and-conquer
- Description: Analyzing the time and space complexity of algorithms using Big O notation.
- Folder: 017-time-and-space-complexity
- Description: Solving problems using backtracking techniques, including N-Queens and Sudoku solver.
- Folder: 018-backtracking
- Description: Understanding and using ArrayLists in Java, including basic operations and methods.
- Folder: 019-arraylists
- Linked Lists Part 1: Introduction to linked lists, including singly linked lists and basic operations.
- Folder: 020-linkedlist1
- Linked Lists Part 2: Advanced operations on linked lists, including doubly linked lists and circular linked lists.
- Folder: 021-linkedlist2
- Description: Understanding and implementing stacks, including basic operations and applications.
- Folder: 022-stack
- Description: Understanding and implementing queues, including basic operations and applications.
- Folder: 023-queue
- Description: Solving problems using greedy algorithms, including the knapsack problem and activity selection.
- Folder: 024-greedy
- Description: Introduction to binary trees, including traversal techniques and basic operations.
- Folder: 025-binary-tree
- Binary Search Tree Part 1: Understanding and implementing binary search trees, including insertion and deletion.
- Folder: 026-binarysearch-tree1
- Binary Search Tree Part 2: Advanced operations on binary search trees, including balancing and AVL trees.
- Folder: 027-binarysearch-tree2
- Description: Understanding and implementing heaps, including heap operations and heap sort.
- Folder: 028-heap
- Graphs Part 1: Introduction to graph theory, including representation and traversal algorithms.
- Folder: 031-graph1
- Graphs Part 2: Advanced graph algorithms, including shortest path and spanning tree algorithms.
- Folder: 032-graph2
- Graph Supplemental: Supplemental materials and problems on graphs.
- Folder: 033-graph-supplemental
- Description: Solving problems using dynamic programming techniques, including memoization and tabulation.
- Folder: 034-dp
- Description: Understanding and implementing segment trees for range query problems.
- Folder: 035-segment-trees
Feel free to explore the folders to see my implementations and solutions. If you have any questions or suggestions, don't hesitate to reach out! π
Thank you for visiting and happy coding! π

