回溯 高频追问 Q&A
1. Q: 回溯和暴力枚举区别?
A: 回溯是带剪枝的系统枚举,能提前砍掉无效分支。
2. Q: 组合、排列、子集模板差异?
A: 组合靠 start 控制顺序;排列靠 used 防重复;子集每层先收集路径。
3. Q: 去重常见写法?
A: 排序 + 同层去重(i > start && nums[i] === nums[i-1])。
4. Q: 剪枝怎么设计?
A: 用上下界估计、剩余可选数量判断、约束冲突立即返回。
5. Q: N 皇后为何效率高于纯暴力?
A: 列与对角线冲突可 O(1) 检查,显著剪枝。
6. Q: 回溯复杂度怎么答?
A: 一般按“分支因子^深度”估算,再说明剪枝后实际会更小。