Update .gitignore, add scripts documentation, and update notes for problem 167
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,6 +1,7 @@
|
|||||||
# Created by https://www.toptal.com/developers/gitignore/api/node,java,python,c++
|
# Created by https://www.toptal.com/developers/gitignore/api/node,java,python,c++
|
||||||
# Edit at https://www.toptal.com/developers/gitignore?templates=node,java,python,c++
|
# Edit at https://www.toptal.com/developers/gitignore?templates=node,java,python,c++
|
||||||
.cursor*
|
.cursor*
|
||||||
|
*sync_leetcode.sh
|
||||||
### C++ ###
|
### C++ ###
|
||||||
# Prerequisites
|
# Prerequisites
|
||||||
*.d
|
*.d
|
||||||
|
|||||||
366
SCRIPTS_DOCUMENTATION.md
Normal file
366
SCRIPTS_DOCUMENTATION.md
Normal file
@@ -0,0 +1,366 @@
|
|||||||
|
# LeetCode Repository Scripts Documentation
|
||||||
|
|
||||||
|
This document provides comprehensive guidance on using the automation scripts in this LeetCode solutions repository.
|
||||||
|
|
||||||
|
## 📋 Table of Contents
|
||||||
|
|
||||||
|
- [Overview](#overview)
|
||||||
|
- [Scripts Overview](#scripts-overview)
|
||||||
|
- [Installation & Setup](#installation--setup)
|
||||||
|
- [create_missing_notes.sh](#create_missing_notessh)
|
||||||
|
- [update_difficulties.sh](#update_difficultiessh)
|
||||||
|
- [Workflow Examples](#workflow-examples)
|
||||||
|
- [File Structure](#file-structure)
|
||||||
|
- [Troubleshooting](#troubleshooting)
|
||||||
|
- [Advanced Usage](#advanced-usage)
|
||||||
|
|
||||||
|
## 🎯 Overview
|
||||||
|
|
||||||
|
This repository contains two powerful automation scripts designed to streamline your LeetCode learning journey:
|
||||||
|
|
||||||
|
1. **`create_missing_notes.sh`** - Automatically generates structured note templates for solved problems
|
||||||
|
2. **`update_difficulties.sh`** - Manages problem difficulty mappings dynamically
|
||||||
|
|
||||||
|
These scripts help maintain a professional, well-organized repository with proper documentation, badges, and links.
|
||||||
|
|
||||||
|
## 🔧 Scripts Overview
|
||||||
|
|
||||||
|
| Script | Purpose | Key Features |
|
||||||
|
|--------|---------|--------------|
|
||||||
|
| `create_missing_notes.sh` | Generate note templates | • Auto-detects solved problems<br>• Creates structured markdown notes<br>• Includes badges and links<br>• Skips existing files |
|
||||||
|
| `update_difficulties.sh` | Manage difficulty mappings | • Add/remove difficulty mappings<br>• Update all note files<br>• List current mappings<br>• Dynamic difficulty management |
|
||||||
|
|
||||||
|
## 🚀 Installation & Setup
|
||||||
|
|
||||||
|
### Prerequisites
|
||||||
|
- Bash shell (macOS, Linux, or WSL on Windows)
|
||||||
|
- Git repository with LeetCode solutions
|
||||||
|
|
||||||
|
### Setup Steps
|
||||||
|
1. Ensure scripts are executable:
|
||||||
|
```bash
|
||||||
|
chmod +x create_missing_notes.sh
|
||||||
|
chmod +x update_difficulties.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Verify your directory structure:
|
||||||
|
```
|
||||||
|
leetcode/
|
||||||
|
├── src/
|
||||||
|
│ ├── exercises/ # Your Python solutions
|
||||||
|
│ └── notes/ # Generated notes (created automatically)
|
||||||
|
├── create_missing_notes.sh
|
||||||
|
├── update_difficulties.sh
|
||||||
|
└── SCRIPTS_DOCUMENTATION.md
|
||||||
|
```
|
||||||
|
|
||||||
|
## 📝 create_missing_notes.sh
|
||||||
|
|
||||||
|
### Purpose
|
||||||
|
Automatically generates structured markdown note files for all solved problems that don't have notes yet.
|
||||||
|
|
||||||
|
### Usage
|
||||||
|
```bash
|
||||||
|
./create_missing_notes.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### What It Does
|
||||||
|
1. **Scans** `src/exercises/` directory for Python solution files
|
||||||
|
2. **Extracts** problem numbers and titles from filenames
|
||||||
|
3. **Creates** corresponding note files in `src/notes/` with:
|
||||||
|
- Professional badges and shields
|
||||||
|
- Links to LeetCode problems
|
||||||
|
- Structured sections for learning notes
|
||||||
|
- Navigation links
|
||||||
|
4. **Skips** files that already have notes
|
||||||
|
|
||||||
|
### Generated Note Structure
|
||||||
|
Each note file includes:
|
||||||
|
- **Header** with problem title and badges
|
||||||
|
- **Problem metadata** (number, difficulty, category, LeetCode link)
|
||||||
|
- **Learning sections**:
|
||||||
|
- Problem Description
|
||||||
|
- My Approach
|
||||||
|
- Solution
|
||||||
|
- Time & Space Complexity
|
||||||
|
- Key Insights
|
||||||
|
- Mistakes Made
|
||||||
|
- Related Problems
|
||||||
|
- **Navigation links** back to index and solution
|
||||||
|
|
||||||
|
### Example Output
|
||||||
|
```
|
||||||
|
🧠 Scanning exercises directory and generating missing LeetCode problem notes...
|
||||||
|
✅ Created: src/notes/001_two_sum.md
|
||||||
|
⏭️ Skipped: src/notes/002_add_two_numbers.md (already exists)
|
||||||
|
✅ Created: src/notes/003_longest_substring_without_repeating_characters.md
|
||||||
|
|
||||||
|
🎉 Note generation complete!
|
||||||
|
📝 Files processed: 95
|
||||||
|
✅ New notes created: 15
|
||||||
|
⏭️ Notes skipped (already exist): 80
|
||||||
|
📁 Notes directory: src/notes
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🎯 update_difficulties.sh
|
||||||
|
|
||||||
|
### Purpose
|
||||||
|
Manages problem difficulty mappings dynamically without hardcoding, and updates note files accordingly.
|
||||||
|
|
||||||
|
### Usage Options
|
||||||
|
|
||||||
|
#### Add/Update Difficulty
|
||||||
|
```bash
|
||||||
|
./update_difficulties.sh -a <problem_number> <difficulty>
|
||||||
|
```
|
||||||
|
**Examples:**
|
||||||
|
```bash
|
||||||
|
./update_difficulties.sh -a 1 Easy
|
||||||
|
./update_difficulties.sh -a 4 Hard
|
||||||
|
./update_difficulties.sh -a 15 Medium
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Remove Difficulty Mapping
|
||||||
|
```bash
|
||||||
|
./update_difficulties.sh -r <problem_number>
|
||||||
|
```
|
||||||
|
**Example:**
|
||||||
|
```bash
|
||||||
|
./update_difficulties.sh -r 1
|
||||||
|
```
|
||||||
|
|
||||||
|
#### List All Mappings
|
||||||
|
```bash
|
||||||
|
./update_difficulties.sh -l
|
||||||
|
```
|
||||||
|
**Output:**
|
||||||
|
```
|
||||||
|
📋 Current Difficulty Mappings:
|
||||||
|
Problem | Difficulty
|
||||||
|
--------|-----------
|
||||||
|
1 | Easy
|
||||||
|
2 | Medium
|
||||||
|
4 | Hard
|
||||||
|
15 | Medium
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Update All Note Files
|
||||||
|
```bash
|
||||||
|
./update_difficulties.sh -u
|
||||||
|
```
|
||||||
|
Updates all note files to reflect correct difficulties from the mapping file.
|
||||||
|
|
||||||
|
#### Show Help
|
||||||
|
```bash
|
||||||
|
./update_difficulties.sh -h
|
||||||
|
```
|
||||||
|
|
||||||
|
### Difficulty Mapping File
|
||||||
|
The script creates and manages a `.difficulty_mapping` file:
|
||||||
|
```
|
||||||
|
1:Easy
|
||||||
|
2:Medium
|
||||||
|
4:Hard
|
||||||
|
15:Medium
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🔄 Workflow Examples
|
||||||
|
|
||||||
|
### New Problem Workflow
|
||||||
|
When you solve a new problem:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 1. Add your solution to src/exercises/
|
||||||
|
# 2. Generate note template
|
||||||
|
./create_missing_notes.sh
|
||||||
|
|
||||||
|
# 3. Add correct difficulty
|
||||||
|
./update_difficulties.sh -a 42 Hard
|
||||||
|
|
||||||
|
# 4. Update all notes with correct difficulties
|
||||||
|
./update_difficulties.sh -u
|
||||||
|
|
||||||
|
# 5. Edit the generated note with your insights
|
||||||
|
# File: src/notes/042_trapping_rain_water.md
|
||||||
|
```
|
||||||
|
|
||||||
|
### Batch Processing
|
||||||
|
Process multiple problems at once:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Generate notes for all solved problems
|
||||||
|
./create_missing_notes.sh
|
||||||
|
|
||||||
|
# Add difficulties for multiple problems
|
||||||
|
./update_difficulties.sh -a 1 Easy
|
||||||
|
./update_difficulties.sh -a 2 Medium
|
||||||
|
./update_difficulties.sh -a 4 Hard
|
||||||
|
./update_difficulties.sh -a 15 Medium
|
||||||
|
|
||||||
|
# Update all notes
|
||||||
|
./update_difficulties.sh -u
|
||||||
|
```
|
||||||
|
|
||||||
|
### Maintenance Workflow
|
||||||
|
Regular maintenance tasks:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Check current difficulty mappings
|
||||||
|
./update_difficulties.sh -l
|
||||||
|
|
||||||
|
# Remove incorrect mapping
|
||||||
|
./update_difficulties.sh -r 1
|
||||||
|
|
||||||
|
# Add correct mapping
|
||||||
|
./update_difficulties.sh -a 1 Easy
|
||||||
|
|
||||||
|
# Update all notes
|
||||||
|
./update_difficulties.sh -u
|
||||||
|
```
|
||||||
|
|
||||||
|
## 📁 File Structure
|
||||||
|
|
||||||
|
After running the scripts, your repository will have this structure:
|
||||||
|
|
||||||
|
```
|
||||||
|
leetcode/
|
||||||
|
├── src/
|
||||||
|
│ ├── exercises/
|
||||||
|
│ │ ├── 1.two-sum.py
|
||||||
|
│ │ ├── 2.add-two-numbers.py
|
||||||
|
│ │ └── ...
|
||||||
|
│ └── notes/
|
||||||
|
│ ├── 001_two_sum.md
|
||||||
|
│ ├── 002_add_two_numbers.md
|
||||||
|
│ └── ...
|
||||||
|
├── .difficulty_mapping # Created by update_difficulties.sh
|
||||||
|
├── create_missing_notes.sh
|
||||||
|
├── update_difficulties.sh
|
||||||
|
├── SCRIPTS_DOCUMENTATION.md
|
||||||
|
└── README.md
|
||||||
|
```
|
||||||
|
|
||||||
|
### Generated Note Example
|
||||||
|
```markdown
|
||||||
|
# Two Sum
|
||||||
|
|
||||||
|
[](https://leetcode.com/problems/two-sum/)
|
||||||
|
[](https://leetcode.com/problemset/?difficulty=EASY)
|
||||||
|
[](https://leetcode.com/problems/two-sum/)
|
||||||
|
|
||||||
|
**Problem Number:** [1](https://leetcode.com/problems/two-sum/)
|
||||||
|
**Difficulty:** [Easy](https://leetcode.com/problemset/?difficulty=EASY)
|
||||||
|
**Category:**
|
||||||
|
**LeetCode Link:** [https://leetcode.com/problems/two-sum/](https://leetcode.com/problems/two-sum/)
|
||||||
|
|
||||||
|
## Problem Description
|
||||||
|
|
||||||
|
> **View the full problem description on LeetCode:** [Two Sum](https://leetcode.com/problems/two-sum/)
|
||||||
|
|
||||||
|
## My Approach
|
||||||
|
|
||||||
|
## Solution
|
||||||
|
|
||||||
|
## Time & Space Complexity
|
||||||
|
|
||||||
|
## Key Insights
|
||||||
|
|
||||||
|
## Mistakes Made
|
||||||
|
|
||||||
|
## Related Problems
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
[](../../README.md#-problem-index) | [](../exercises/1.two-sum.py)
|
||||||
|
|
||||||
|
*Note: This is a work in progress. I'll add more details as I reflect on this problem.*
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🔧 Troubleshooting
|
||||||
|
|
||||||
|
### Common Issues
|
||||||
|
|
||||||
|
#### Script Permission Denied
|
||||||
|
```bash
|
||||||
|
chmod +x create_missing_notes.sh
|
||||||
|
chmod +x update_difficulties.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Notes Directory Not Found
|
||||||
|
The script automatically creates the `src/notes/` directory if it doesn't exist.
|
||||||
|
|
||||||
|
#### Invalid Difficulty
|
||||||
|
Valid difficulties are: `Easy`, `Medium`, `Hard` (case-sensitive)
|
||||||
|
|
||||||
|
#### File Not Found Errors
|
||||||
|
Ensure your Python solution files follow the naming convention: `number.problem-name.py`
|
||||||
|
|
||||||
|
### Error Messages
|
||||||
|
|
||||||
|
| Error | Cause | Solution |
|
||||||
|
|-------|-------|----------|
|
||||||
|
| `❌ Error: Invalid difficulty` | Wrong difficulty format | Use: Easy, Medium, or Hard |
|
||||||
|
| `⚠️ Skipped empty file` | Empty solution file | Add solution code |
|
||||||
|
| `⚠️ Skipped invalid filename` | Wrong file naming | Use: `number.problem-name.py` |
|
||||||
|
|
||||||
|
## 🚀 Advanced Usage
|
||||||
|
|
||||||
|
### Customizing Note Templates
|
||||||
|
Edit the `create_note_file()` function in `create_missing_notes.sh` to customize note structure.
|
||||||
|
|
||||||
|
### Batch Difficulty Updates
|
||||||
|
Create a script to update multiple difficulties:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
#!/bin/bash
|
||||||
|
# batch_update_difficulties.sh
|
||||||
|
|
||||||
|
difficulties=(
|
||||||
|
"1:Easy"
|
||||||
|
"2:Medium"
|
||||||
|
"4:Hard"
|
||||||
|
"15:Medium"
|
||||||
|
)
|
||||||
|
|
||||||
|
for mapping in "${difficulties[@]}"; do
|
||||||
|
problem_num=$(echo $mapping | cut -d':' -f1)
|
||||||
|
difficulty=$(echo $mapping | cut -d':' -f2)
|
||||||
|
./update_difficulties.sh -a $problem_num $difficulty
|
||||||
|
done
|
||||||
|
|
||||||
|
./update_difficulties.sh -u
|
||||||
|
```
|
||||||
|
|
||||||
|
### Integration with Git
|
||||||
|
Add to your workflow:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# After solving a problem
|
||||||
|
./create_missing_notes.sh
|
||||||
|
./update_difficulties.sh -a <problem_number> <difficulty>
|
||||||
|
./update_difficulties.sh -u
|
||||||
|
git add .
|
||||||
|
git commit -m "Add solution and notes for problem <number>"
|
||||||
|
```
|
||||||
|
|
||||||
|
## 📚 Best Practices
|
||||||
|
|
||||||
|
1. **Run `create_missing_notes.sh`** after solving new problems
|
||||||
|
2. **Update difficulties** as you learn them
|
||||||
|
3. **Use `-u` flag** to keep all notes synchronized
|
||||||
|
4. **Edit generated notes** with your personal insights
|
||||||
|
5. **Commit changes** regularly to track your progress
|
||||||
|
|
||||||
|
## 🤝 Contributing
|
||||||
|
|
||||||
|
To improve these scripts:
|
||||||
|
1. Test changes thoroughly
|
||||||
|
2. Update this documentation
|
||||||
|
3. Follow the existing code style
|
||||||
|
4. Add error handling for edge cases
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Happy Coding! 🎉**
|
||||||
|
|
||||||
|
*These scripts are designed to make your LeetCode learning journey more organized and professional.*
|
||||||
@@ -5,7 +5,7 @@
|
|||||||
[](https://leetcode.com/problems/two-sum-ii-input-array-is-sorted/)
|
[](https://leetcode.com/problems/two-sum-ii-input-array-is-sorted/)
|
||||||
|
|
||||||
**Problem Number:** [167](https://leetcode.com/problems/two-sum-ii-input-array-is-sorted/)
|
**Problem Number:** [167](https://leetcode.com/problems/two-sum-ii-input-array-is-sorted/)
|
||||||
**Difficulty:** [Medium](https://leetcode.com/problemset/?difficulty=MEDIUM)
|
**Difficulty:** [Medium](https://leetcode.com/problemset/?difficulty=MEDIUM)(https://leetcode.com/problemset/?difficulty=MEDIUM)
|
||||||
**Category:**
|
**Category:**
|
||||||
**LeetCode Link:** [https://leetcode.com/problems/two-sum-ii-input-array-is-sorted/](https://leetcode.com/problems/two-sum-ii-input-array-is-sorted/)
|
**LeetCode Link:** [https://leetcode.com/problems/two-sum-ii-input-array-is-sorted/](https://leetcode.com/problems/two-sum-ii-input-array-is-sorted/)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user