π― Master Coding Interviews & Competitive Programming | π Learn Data Structures & Algorithms | π System Design Patterns
A comprehensive open-source collection of problem-solving algorithms, data structures, and system design implementations in TypeScript/JavaScript. Perfect for coding interview preparation, competitive programming, and computer science education. This monorepo contains 500+ solutions for various coding challenges including HackerRank problems, LeetCode-style questions, algorithmic implementations, and scalable system design patterns.
π Keywords: algorithms
data-structures
coding-interview
hackerrank
leetcode
typescript
javascript
competitive-programming
system-design
interview-preparation
computer-science
software-engineering
dynamic-programming
graph-algorithms
technical-interview
.
βββ codespaces/
β βββ hackerrank/ # HackerRank challenge solutions
β β βββ DynamicProgram/ # Dynamic programming problems
β β βββ Strings/ # String manipulation problems
β β βββ MultiPointers/ # Two-pointer technique problems
β β βββ Search/ # Search algorithm problems
β β βββ Sortings/ # Sorting algorithm problems
β β βββ Implementation/ # Implementation challenges
β β βββ Constructive Algo/ # Constructive algorithms
β βββ MergeInterval/ # Merge interval algorithm implementations
β βββ system-design/ # System design patterns and solutions
βββ package.json # Root package.json with workspace configs
βββ tsconfig.base.json # Base TypeScript configuration
βββ eslint.base.js # Base ESLint configuration
@problem-solving/hackerrank
: Comprehensive solutions to HackerRank challenges organized by category@problem-solving/algorithms
: Implementation of classic algorithms and merge interval problems@problem-solving/system-design
: System design problems, patterns, and architectural solutions
- TypeScript/JavaScript - Primary programming languages
- Node.js - Runtime environment
- Yarn Workspaces - Monorepo management
- ESLint - Code linting and quality assurance
- Prettier - Code formatting
- ts-node - TypeScript execution environment
- Node.js (version 18+)
- Yarn package manager
# Clone the repository
git clone <repository-url>
cd problems-solving
# Install dependencies for all workspaces
yarn install
# Build all workspaces
yarn build
# Start development mode (runs React workspace)
yarn dev
# Lint all workspaces
yarn lint
# Fix linting issues across all workspaces
yarn lint:fix
# Format code in all workspaces
yarn format
# Type check all workspaces
yarn type-check
# Clean build artifacts
yarn clean
You can run commands for individual workspaces:
# HackerRank solutions
yarn workspace @problem-solving/hackerrank dev
yarn workspace @problem-solving/hackerrank build
yarn workspace @problem-solving/hackerrank lint
# Algorithm implementations
yarn workspace @problem-solving/algorithms dev
yarn workspace @problem-solving/algorithms build
# System design
yarn workspace @problem-solving/system-design dev
yarn workspace @problem-solving/system-design build
- Dynamic Programming: Optimal substructure and overlapping subproblems
- String Algorithms: Pattern matching, anagrams, and string manipulation
- Two Pointers: Efficient array/string traversal techniques
- Search Algorithms: Binary search, linear search variations
- Sorting Algorithms: Custom sorting implementations and applications
- Implementation: Logic and simulation problems
- Constructive Algorithms: Building solutions step by step
- Merge Intervals: Overlapping interval problems and solutions
- Data Structures: Implementation of fundamental data structures
- Graph Algorithms: Traversal, shortest path, and connectivity problems
- Scalability Patterns: Load balancing, caching, database sharding
- Architecture Patterns: Microservices, event-driven architecture
- Distributed Systems: Consensus algorithms, fault tolerance
Most solutions can be executed directly:
# Run a specific TypeScript solution
cd codespaces/hackerrank/DynamicProgram/CommonChild
ts-node index.ts
# Run JavaScript solutions
node solution.js
- Fork the repository
- Create a feature branch (
git checkout -b feature/new-algorithm
) - Commit your changes (
git commit -am 'Add new algorithm implementation'
) - Push to the branch (
git push origin feature/new-algorithm
) - Create a Pull Request
- Follow TypeScript/JavaScript best practices
- Use meaningful variable and function names
- Add comments for complex algorithms
- Include time and space complexity analysis
- Ensure all linting rules pass
This project is open source and available under the MIT License.
For questions or suggestions, please open an issue or reach out via email.
β Star this repository if you find it helpful!