Files
coding-practice/templates/problem-template.md.tmpl

106 lines
3.1 KiB
Cheetah
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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