feat(utils, templates, docs): file-based templates + stronger README

This commit is contained in:
2025-09-12 09:44:30 +08:00
parent 002e9e6c32
commit d724a5fb65
35 changed files with 1421 additions and 727 deletions

View 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若輸入動態變化/資料流版本/線上查詢如何處理?
## 學習筆記
- 今天學到:
- 卡住點與修正:
- 下次優化想法:
---
**總結**:這題的核心在於 ______適合練習 ______ 技巧。