Skip to content

Comprehensive repository of DSA solutions, algorithm implementations, core CS concepts & system design fundamentals

Notifications You must be signed in to change notification settings

elilouise/Algorithms-and-Data-Structures

Repository files navigation

This repository is a collection of my solutions to various Algorithms and Data Structures (DSA) problems, along with my study notes on fundamental computer science topics, Linux, and system design.

The purpose of this repository is to document my journey of continuous learning and improvement in software engineering.

Repository Structure

This repository is organized into several directories based on different categories of problems and topics:

  • Algorithms and Data Structures: Contains detailed solutions to various DSA (LeetCode) problems, categorized by topic and difficulty.

    • Arrays and Hashing
    • Binary Search
    • Linked Lists
    • Sliding Window
    • Trees
    • Two Pointers
  • Study Notes: Contains notes and explanations on key computer science topics and concepts.

    • Algorithms and Data Structures: In-depth notes and explanations on various algorithms and data structures.
    • System Design: Principles and best practices for designing scalable and efficient systems.
    • Linux Fundamentals: Key commands, tips, and best practices for working with Linux.

Navigate the Repository

  • Algorithms and Data Structures: Each folder within the "Algorithms and Data Structures" repository corresponds to a topic (e.g., Arrays, Linked Lists). Inside each folder, you will find subfolders for each difficulty level (Easy, Medium, Hard). Each solution is provided in a separate file named after the problem title (e.g., two-sum.ipynb for the "Two Sum" problem).

    • Each solution file contains:
      • Problem Statement: A brief description of the problem.
      • Solution Approach: An explanation of the approach used to solve the problem.
      • Code: The solution code with comments.
      • Complexity Analysis: Time and space complexity analysis.
  • Study Notes: Each folder in this directory contains markdown files (.md) with notes and explanations on various topics. These files include detailed explanations, examples, and references to additional resources.

  • Projects: This directory contains any practical projects or scripts that apply the concepts learned. Each project has its own folder with a README.md that explains the project's purpose, usage, and key learnings.

How to Use This Repository

  1. Algorithms and Data Structures Practice: Browse through the "Algorithms and Data Structures" directory to find solutions to specific DSA problems. Review the problem statement and try to solve it on your own before checking the solution.
  2. Study Notes: Use the "Study Notes" directory to reinforce your understanding of fundamental concepts. These notes are useful for interview preparation and understanding key topics in computer science.
  3. Projects: Explore the "Projects" directory to see practical applications of the concepts studied. Try running the scripts and modifying them to deepen your understanding.

Contributing

If you have suggestions for improvements or want to contribute new solutions or study notes, feel free to submit a pull request.

About

Comprehensive repository of DSA solutions, algorithm implementations, core CS concepts & system design fundamentals

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published