Skip to content

mathusanm6/Unit-Tested-Leetcode-Solutions

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Unit-Tested LeetCode Solutions

๐Ÿ”ฌ Code Health & Testing

C++ Tests Python Tests

๐Ÿ” Code Quality & Linting

C++ Linter Python Linter

๐Ÿ“Š Repository Stats

Last Commit C++ Solutions Python Solutions

Description

This repository contains comprehensive, unit-tested solutions to LeetCode problems implemented in both C++20 and Python 3. Each solution includes:

  • ๐Ÿงช Comprehensive test suites with multiple test cases
  • ๐Ÿ“ Detailed documentation with complexity analysis
  • ๐Ÿ”ง Automated code quality checks and formatting
  • ๐Ÿš€ CI/CD pipeline with automated testing and linting

๐Ÿ“ Project Structure

โ”œโ”€โ”€ problems/                    # Problem solutions organized by name
โ”‚   โ”œโ”€โ”€ two_sum/                 # Individual problem directories
โ”‚   โ”‚   โ”œโ”€โ”€ config.yml           # Problem metadata and configuration
โ”‚   โ”‚   โ”œโ”€โ”€ two_sum.py           # Python solution
โ”‚   โ”‚   โ”œโ”€โ”€ two_sum.cc           # C++ solution
โ”‚   โ”‚   โ”œโ”€โ”€ two_sum.h            # C++ header
โ”‚   โ”‚   โ”œโ”€โ”€ two_sum_test.py      # Python unit tests
โ”‚   โ”‚   โ””โ”€โ”€ two_sum_test.cc      # C++ unit tests
โ”‚   โ””โ”€โ”€ ...
โ”œโ”€โ”€ config/                      # Global configuration files
โ”‚   โ”œโ”€โ”€ difficulties.yml         # Difficulty level definitions
โ”‚   โ””โ”€โ”€ tags.yml                 # Problem tag categories
โ”œโ”€โ”€ scripts/                     # Automation and utility scripts
โ”‚   โ”œโ”€โ”€ generate_readme.py       # Auto-generate README content
โ”‚   โ”œโ”€โ”€ update_badges.py         # Update repository badges
โ”‚   โ””โ”€โ”€ update_badges.sh         # Badge update automation
โ”œโ”€โ”€ .github/workflows/           # CI/CD automation
โ”‚   โ”œโ”€โ”€ code-health-*.yml        # Comprehensive testing workflows
โ”‚   โ”œโ”€โ”€ linter-*.yml             # Code quality workflows
โ”‚   โ”œโ”€โ”€ presubmit-*.yml          # Pre-merge validation
โ”‚   โ””โ”€โ”€ update-badges.yml        # Automated badge updates
โ”œโ”€โ”€ Makefile                     # Build and test automation
โ”œโ”€โ”€ requirements.txt             # Python dependencies
โ”œโ”€โ”€ .clang-format                # C++ code formatting rules
โ””โ”€โ”€ .clang-tidy                  # C++ linting configuration

๐Ÿ› ๏ธ Technologies & Tools

Languages & Standards

  • C++: C++20 with modern features and best practices
  • Python: Python 3.x with type hints and modern syntax

Testing Frameworks

  • C++: Google Test (gtest) for comprehensive unit testing
  • Python: pytest with coverage reporting

Code Quality Tools

  • C++ Formatting: clang-format for consistent code style
  • C++ Linting: clang-tidy for static analysis and best practices
  • Python Formatting: ruff for fast, comprehensive code formatting
  • Python Linting: ruff for linting, import sorting, and code quality

Build & Automation

  • Make: Cross-platform build system with intelligent target detection
  • GitHub Actions: Automated CI/CD with parallel testing and validation

Running Tests

The project includes comprehensive test suites for all solutions with cross-platform support.

๐Ÿ Python Tests

# Run all Python tests with coverage
make test-py:all

# Run tests for a specific problem (e.g., two-sum)
make test-py:two-sum

โšก C++ Tests

# Run all C++ tests (auto-detects macOS/Linux)
make test-cpp:all

# Run tests for a specific problem (e.g., two-sum)
make test-cpp:two-sum

# Run all tests (both languages)
make test:all

Requirements:

  • macOS: brew install googletest
  • Linux: sudo apt-get install libgtest-dev or build from source

Code Quality

This project maintains high code quality standards through automated tooling and CI/CD integration.

๐ŸŽจ Formatting & Linting

# Format all code (C++ with clang-format, Python with ruff)
make format

# Lint all code with comprehensive checks
make lint

# Language-specific operations
make format-cpp     # Format C++ files with clang-format
make format-python  # Format Python files with ruff
make lint-cpp       # Lint C++ files with clang-tidy
make lint-python    # Lint Python files with ruff

๐Ÿ”„ Continuous Integration

The project includes a comprehensive CI/CD pipeline:

  • ๐Ÿ” Presubmit Checks: Validate code changes before merge

    • Format validation (clang-format, ruff)
    • Linting checks (clang-tidy, ruff)
    • Unit test execution for changed files
  • ๐Ÿงช Code Health: Full validation after merge to main

    • Complete test suite execution
    • Cross-platform compatibility testing
    • Coverage reporting
  • ๐Ÿ“Š Automated Maintenance:

    • Badge updates reflecting current status
    • PR size labeling for review optimization
    • Workflow status monitoring

All workflows leverage the project's Makefile for consistency across local development and CI environments.

๐Ÿงฎ Algorithms & Data Structures

This repository covers a comprehensive range of algorithmic patterns and data structures commonly found in technical interviews:

Arrays & Hashing

# Title Solution Time Space Difficulty Tag Note
1 Two Sum Python, C++ O(n) O(n) Easy
217 Contains Duplicate Python, C++ O(n) O(n) Easy

Two Pointers

# Title Solution Time Space Difficulty Tag Note
125 Valid Palindrome Python, C++ O(n) O(1) Easy

Trees

# Title Solution Time Space Difficulty Tag Note
2313 Minimum Flips in Binary Tree to Get Result Python, C++ O(n) O(1) Hard n is the number of nodes in the binary tree.

About

A collection of LeetCode problem solutions, rigorously tested with GoogleTest for C++ and pytest for Python.

Topics

Resources

Stars

Watchers

Forks

Contributors 2

  •  
  •