22. 括号生成(深搜+回溯)
Posted baboon
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了22. 括号生成(深搜+回溯)相关的知识,希望对你有一定的参考价值。
题目描述
leetcode - 22:https://leetcode-cn.com/problems/container-with-most-water/
解题关键
- 深搜
- 回溯
碎碎念
感觉自己一直对dfs这东西有点迷,不太会写,这次主要参考了大佬的答案。希望自己多写写有一天能灵光一现彻底搞懂了这玩意儿吧。嗨。
- https://leetcode-cn.com/problems/generate-parentheses/solution/ru-men-ji-bie-de-hui-su-fa-xue-hui-tao-lu-miao-don/
- 回溯法的代码套路是使用两个变量:
res
和path
,res
表示最终的结果,path
保存已经走过的路径。如果搜到一个状态满足题目要求,就把path
放到res
中。 - 向下搜索要满足两个条件:
- 插入数量不超过n
- 可以插入
)
的前提是(
的数量大于)
代码
void dfs(vector<string>& ans,string tmp,int n, int left, int right){
if( right>left || left>n || right>n ) return;
if(left == right && left == n) ans.push_back(tmp);
dfs(ans,tmp+‘(‘,n,left+1,right);
dfs(ans,tmp+‘)‘,n,left,right+1);
}
vector<string> generateParenthesis(int n) {
vector<string> ans;
int left = 0;
int right = 0;
dfs(ans,"",n,left,right);
return ans;
}
以上是关于22. 括号生成(深搜+回溯)的主要内容,如果未能解决你的问题,请参考以下文章