博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode22 Generate Parentheses
阅读量:5307 次
发布时间:2019-06-14

本文共 1193 字,大约阅读时间需要 3 分钟。

题意:

iven n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.

For example, given n = 3, a solution set is: (Medium)

[  "((()))",  "(()())",  "(())()",  "()(())",  "()()()"]

 分析:

生成满足数量要求的所以可能的匹配的括号。实际就是一道回溯或者深搜题。

当左括号还没有达到数量的时候,可以添加左括号;当右括号比左括号数量少的时候可以添加右括号;

搜索所有情况即可。有了昨天的17题练习过之后,这个回溯写的就比较顺手了。

代码:

1 class Solution { 2     void dfs(vector
& v, string& s, int n,int left) { 3 if (s.size() == n) { 4 v.push_back(s); 5 return; 6 } 7 int right = s.size() - left; 8 if (left < n / 2) { 9 s.push_back('(');10 dfs(v,s,n,left+1);11 s.pop_back();12 } 13 if (right < left) {14 s.push_back(')');15 dfs(v,s,n,left);16 s.pop_back();17 }18 return;19 }20 public:21 vector
generateParenthesis(int n) {22 vector
result;23 if (n == 0) {24 return result;25 }26 string s;27 dfs(result,s,2*n,0);28 return result;29 }30 };

 

转载于:https://www.cnblogs.com/wangxiaobao/p/5768872.html

你可能感兴趣的文章
eclipse,python
查看>>
深入理解java集合框架(jdk1.6源码)
查看>>
php截取后台登陆密码的代码
查看>>
选假球的故事
查看>>
ul li剧中对齐
查看>>
关于 linux 的 limit 的设置
查看>>
模块搜索路径
查看>>
线性基学习
查看>>
序列内第k小查询(线段树)
查看>>
Compile Groovy/Spock with GMavenPlus
查看>>
[Cocoa]深入浅出Cocoa系列
查看>>
GNU flex unistd.h在VC下的编译问题
查看>>
jsp 页面获取当前路径
查看>>
实现 Bootstrap 基本布局
查看>>
国外网页设计工具大集合
查看>>
redis哈希缓存数据表
查看>>
微服务介绍
查看>>
Tarjan LCA
查看>>
【CV论文阅读】Image Captioning 总结
查看>>
Ubuntu使用adb连接android手机失败unknown的解决的方法
查看>>