feat(utils, templates, docs): file-based templates + stronger README
This commit is contained in:
105
templates/problem-template.md.tmpl
Normal file
105
templates/problem-template.md.tmpl
Normal file
@@ -0,0 +1,105 @@
|
||||
# [題目編號] 題目名稱
|
||||
|
||||
## 題目資訊
|
||||
- **難度**: Easy/Medium/Hard
|
||||
- **標籤**: Array, Hash Table, Two Pointers, Sliding Window, Greedy, DP, Graph, Tree, Math, etc.
|
||||
- **題目連結**: [LeetCode](https://leetcode.com/problems/xxx/)
|
||||
- **練習日期**: YYYY-MM-DD
|
||||
- **目標複雜度**: 時間 O(?), 空間 O(?)
|
||||
|
||||
## 題目描述
|
||||
> 在這裡貼上題目的完整描述(或摘要)
|
||||
|
||||
## 先備條件與限制
|
||||
- 輸入限制:n ∈ [?, ?]、值域 ∈ [?, ?]、是否有重複、是否有負數/零
|
||||
- 回傳/輸出格式:...
|
||||
- 其他:排序是否允許改變輸入、是否需穩定、是否需就地(in-place)
|
||||
|
||||
## 解題思路
|
||||
|
||||
### 初步分析(快速定位問題類型)
|
||||
- 問題類型:如 雙指針 / 滑動視窗 / 排序 + 掃描 / 貪心 / DP / 單調結構 / 前綴和 / 二分 / 位運算 ...
|
||||
- 關鍵觀察:列出 2-4 點(不等式關係、單調性、區間性質、可分解性)
|
||||
- 目標複雜度理由:為什麼 O(n) 或 O(n log n) 足夠/必要?
|
||||
|
||||
### 解法比較
|
||||
1. **解法 A(基準/暴力/直接枚舉)**
|
||||
- 思路:步驟 1-2-3
|
||||
- 正確性:為什麼不會漏/不會重?
|
||||
- 複雜度:時間 O(?)、空間 O(?)
|
||||
- 優缺點:易寫/慢;好理解/不通過大資料
|
||||
|
||||
2. **解法 B(優化:排序/雙指針/結構)**
|
||||
- 思路:步驟 1-2-3(指出與解法 A 最大差異)
|
||||
- 正確性:單調性/貪心選擇/狀態定義 的論證要點
|
||||
- 複雜度:時間 O(?)、空間 O(?)
|
||||
- 優缺點:通過大資料/實作較複雜;可讀性需注意
|
||||
|
||||
3. (可選)**解法 C(進一步優化/其他路線)**
|
||||
- 思路、正確性、複雜度、優缺點
|
||||
|
||||
### 乾跑(Dry Run)
|
||||
使用一組小範例逐步展示索引/指標/狀態如何變化(建議附上 3-5 步驟)。
|
||||
|
||||
## 實作細節與 API 設計
|
||||
|
||||
### C# 方法簽名
|
||||
```csharp
|
||||
public class Solution {
|
||||
// TODO: 根據題意調整簽名
|
||||
public int Solve(int[] nums) {
|
||||
// ...
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Go 方法簽名
|
||||
```go
|
||||
// TODO: 根據題意調整簽名
|
||||
func solve(nums []int) int {
|
||||
// ...
|
||||
}
|
||||
```
|
||||
|
||||
### 實作要點 / 常見陷阱
|
||||
- 邊界:空集合、單元素、全相等、極值(INT_MIN/INT_MAX)
|
||||
- 去重:排序後跳重複、集合/哈希去重
|
||||
- 早停:提早終止條件(例如 window 擴不動就停)
|
||||
- 精度/溢位:除法、乘法、64 位整數
|
||||
|
||||
## 測試案例
|
||||
|
||||
### 範例輸入輸出
|
||||
```
|
||||
Input: ...
|
||||
Output: ...
|
||||
Explanation: ...
|
||||
```
|
||||
|
||||
### 邊界與特殊情況清單
|
||||
- [ ] 空陣列/空字串
|
||||
- [ ] 單一元素 / 全相同 / 全遞增 / 全遞減
|
||||
- [ ] 含負數 / 含 0 / 大數
|
||||
- [ ] 有重複值 / 需去重
|
||||
- [ ] 大資料壓力測試(n 接近上限)
|
||||
|
||||
### 對拍/隨機測試(可選)
|
||||
- 與暴力解法對拍 1000 次;隨機生成測資,確保輸出一致
|
||||
|
||||
## 複雜度分析
|
||||
- 最壞:時間 O(?)、空間 O(?)
|
||||
- 平均:時間 O(?)
|
||||
- 最佳:時間 O(?)(若有)
|
||||
|
||||
## 相關題目與 Follow-up
|
||||
- [題目編號] 題目名稱(相同套路)
|
||||
- Follow-up:若輸入動態變化/資料流版本/線上查詢如何處理?
|
||||
|
||||
## 學習筆記
|
||||
- 今天學到:
|
||||
- 卡住點與修正:
|
||||
- 下次優化想法:
|
||||
|
||||
---
|
||||
**總結**:這題的核心在於 ______,適合練習 ______ 技巧。
|
||||
|
Reference in New Issue
Block a user