LeetCode22:Generate Parentheses

原创 2015年07月07日 11:27:50

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

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

“((()))”, “(()())”, “(())()”, “()(())”, “()()()”

如果这道题是求上面括号的组合有多少种方式,那么这是一道卡塔兰数的题目,最开始就陷入到这里了,按照卡塔兰数的思路找寻递归关系式,怎么也寻找不到,但这道题好像是另一类问题的一个标准模板,就是求解卡塔兰数的具体组合是什么样的,这又是一种通用的解法。

对于这道题,第一个肯定是’(‘,接下来即可以是’(‘也可以是’)’,只需要满足下面三条规则:

left:表示剩余左括号的数目
right:表示剩余右括号的数目

满足的条件如下:

  1. 当left=0&&right=0时表示找到一条路径
  2. 当left!=0时可以向左子树伸展
  3. 当right!=0&&left< right时可以向右子树伸展

进行深度搜索就可以了,如下图:
这里写图片描述

runtime:0ms

class Solution {
public:
    vector<string> generateParenthesis(int n) {
       vector<string> result;
       string path;
       helper(n,n,path,result);
       return result;
    }

    void helper(int left,int right,string path,vector<string> & result)
    {
        if(left==0&&right==0)
        {
            result.push_back(path);
            return ;
        }
        if(left!=0)
            helper(left-1,right,path+"(",result);
        if(right!=0&&left<right)
            helper(left,right-1,path+")",result);
    }



};

【LeetCode-面试算法经典-Java实现】【022-Generate Parentheses(生成括号)】

【022-Generate Parentheses(生成括号)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题  Given n pairs of parentheses, ...
  • DERRANTCM
  • DERRANTCM
  • 2015年07月23日 07:52
  • 2368

LeetCode 22:Generate Parentheses的递归,回溯两种解法

Generate Parentheses Given n pairs of parentheses, write a function to generate all combination...
  • liuyuan185442111
  • liuyuan185442111
  • 2015年08月24日 11:29
  • 616

22.Generate Parentheses&n对括号的全部有效组合

Given n pairs of parentheses, write a function to generate all combinations of well-formed parenthes...
  • sjt091110317
  • sjt091110317
  • 2015年06月05日 15:51
  • 496

每日算法之二十:Generate Parentheses

Given n pairs of parentheses, write a function to generate all combinations of well-formed parenthes...
  • yapian8
  • yapian8
  • 2014年05月26日 21:10
  • 741

Leetcode22. Generate Parentheses(生成有效的括号组合)

输入一个正整数N,打印出所有符合要求的括号组合。
  • qq_25827845
  • qq_25827845
  • 2017年07月10日 22:27
  • 758

代码的优化过程: 生成括号 Generate Parentheses

我是DFS的初学者,所以比较在意一些形式化的东西。现在我一步步得出那样的代码。   版本0:  学习permutation unique 的解法。    5     vector > permuteU...
  • zhangxx0811
  • zhangxx0811
  • 2014年02月22日 00:58
  • 584

LeetCodet题解--22. Generate Parentheses(生成n对匹配的括号)

链接 LeetCode题目:https://leetcode.com/problems/generate-parentheses GitHub代码:https://github.com/...
  • gatieme
  • gatieme
  • 2016年04月08日 11:45
  • 1579

算法设计与分析(15) -- Generate Parentheses(难度:Medium)

Generate Parentheses
  • alexlau8
  • alexlau8
  • 2017年05月29日 17:22
  • 143

关于generate用法的总结【Verilog】

Abtract generate语句允许细化时间(Elaboration-time)的选取或者某些语句的重复。这些语句可以包括模块实例引用的语句、连续赋值语句、always语句、initial语句和...
  • BBS_vip
  • BBS_vip
  • 2015年06月26日 20:21
  • 3711

CodeRush使用教程十五:代码修复提示

当你把鼠标放在code issue指示器上或标记的代码上时,就会出现一个代码修复提示,它会指出你代码的错误并给出解决方法。CodeRush 通常使用代码分发模块或重构来消除错误,而要用代码修复提示来...
  • xieyufei
  • xieyufei
  • 2013年09月12日 14:06
  • 901
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:LeetCode22:Generate Parentheses
举报原因:
原因补充:

(最多只允许输入30个字)