题解模板说明
一句话说明
题解模板的目标不是把内容写长,而是把“题目本质、状态定义、为什么这么做、Go 实现”讲清楚。
推荐题解结构
# [题号] 题目名称
**难度**:简单 / 中等 / 困难
**标签**:#数组 #动态规划 #二分查找
## 题目本质
- 这题到底在考什么
- 为什么第一反应该想到这个算法
## 核心思路
- 关键观察
- 状态定义 / 不变量
- 转移或决策过程
## Go 代码
```go
// 只保留当前题真正需要的核心实现易错点
- 边界条件
- 去重 / 下标 / 溢出
复杂度
- 时间复杂度:
- 空间复杂度:
## 推荐写法
### 1. 先说题目本质
不要一上来就贴代码。
先回答:
- 这题本质是搜索、DP、贪心还是数据结构维护
- 为什么暴力不行
- 为什么当前解法成立
### 2. 代码只保留主解法
题解不是代码垃圾场。
如果暴力解法没有教学价值,可以只保留:
- 最推荐的做法
- 一段 Go 代码
### 3. 易错点单独列
很多题真正难的地方不在主思路,而在:
- 边界条件
- 去重
- 下标转换
- 状态更新顺序
这些最好单独写出来。
## Go 题解示例骨架
```go
func solve(nums []int) int {
// 1. 边界处理
if len(nums) == 0 {
return 0
}
// 2. 状态初始化
answer := 0
// 3. 主逻辑
for _, x := range nums {
_ = x
}
// 4. 返回答案
return answer
}
一个简化示例:两数之和
题目本质
不是枚举,而是:
对每个数,快速判断 target-num 是否已经出现过Go 代码
func twoSum(nums []int, target int) []int {
seen := map[int]int{}
for i, num := range nums {
if j, ok := seen[target-num]; ok {
return []int{j, i}
}
seen[num] = i
}
return nil
}易错点
- 返回的是下标,不是数值
- 不能先把当前值放进哈希表再查自己
写题解时优先回答的问题
- 这题最自然的状态定义是什么?
- 这题为什么不是别的算法?
- 代码里最容易错的 1-2 个点是什么?
相关页面
返回:LeetCode题解