This repository is a collection of algorithmic exercises and solutions, primarily in Python, aimed at enhancing problem-solving skills in various computer science domains. It's structured into different sections, each focusing on a specific area of algorithms.
- Part 0: Warm-up: Basic exercises to get started with algorithmic challenges.
- Part 1: Sorting: Algorithms and exercises related to different sorting techniques.
- Part 2: Hash: Challenges involving hash functions, string manipulations, and related concepts.
- Part 3: Graphs: Graph algorithms including shortest path, Dijkstra's algorithm, etc.
- Part 4: Optimization: Advanced problems focusing on optimization techniques.
- Part 1: Complexity, Testing, Special Cases: Focuses on algorithmic complexity, strategies for testing and handling special cases.
- Part 2: Linear Search: Dedicated to exercises and theories about linear search methods.
- Part 3: Sets and Dictionaries: Explores the use of sets and dictionaries in algorithms for efficient data manipulation.
- Part 4: Binary Search: Concentrates on binary search techniques for finding items in sorted lists.
- Part 1: Complexity, Testing, Special Cases: Focuses on algorithmic complexity, strategies for testing and handling special cases.
- Part 2: Prefix Sums and Two Pointers: Explains the prefix sum technique for optimizing range queries and introduces the two-pointer technique for solving array-based problems efficiently.
- Part 3: STACKS, QUEUES, DEQUES: Covers the usage of stacks, queues, and deques, emphasizing their applications in algorithmic problems such as expression evaluation and sliding window computations.
- Part 4:TREES, REPRESENTATIONS, AND TRAVERSALS: Introduces tree data structures, various ways to represent them (e.g., adjacency lists, parent arrays), and traversal methods such as DFS, BFS, and inorder, preorder, and postorder traversals.
To get started with these exercises:
- Clone the repository.
- Navigate to the desired section.
- Each file is a standalone Python script representing a specific problem.