LeetCode Hot 100 括号生成

数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的括号组合。

示例 1:

复制代码
输入:n = 3
输出:["((()))","(()())","(())()","()(())","()()()"]

示例 2:

复制代码
输入:n = 1
输出:["()"]

提示:

  • 1 <= n <= 8

方法二:回溯法
思路和算法

方法一还有改进的余地:我们可以只在序列仍然保持有效时才添加 '(' 或 ')',而不是像 方法一 那样每次添加。我们可以通过跟踪到目前为止放置的左括号和右括号的数目来做到这一点,

如果左括号数量不大于 n,我们可以放一个左括号。如果右括号数量小于左括号的数量,我们可以放一个右括号。

cpp 复制代码
class Solution {
public:
    void back(vector<string>& ans,string& cur,int open,int close,int n)
    {
        if(cur.size() == n * 2)
        {
            ans.push_back(cur);
            return;
        }
        if(open < n)
        {
            cur.push_back('(');
            back(ans,cur,open + 1,close,n);
            cur.pop_back();
        }
        if(close < open)
        {
            cur.push_back(')');
            back(ans,cur,open ,close + 1,n);
            cur.pop_back();
        }
    }
    vector<string> generateParenthesis(int n) {
        vector<string> ans;
        string cur;
        back(ans,cur,0,0,n);
        return ans;
    }
};
相关推荐
仰泳的熊猫2 小时前
题目2570:蓝桥杯2020年第十一届省赛真题-成绩分析
数据结构·c++·算法·蓝桥杯
似水明俊德5 小时前
02-C#.Net-反射-面试题
开发语言·面试·职场和发展·c#·.net
无极低码5 小时前
ecGlypher新手安装分步指南(标准化流程)
人工智能·算法·自然语言处理·大模型·rag
软件算法开发6 小时前
基于海象优化算法的LSTM网络模型(WOA-LSTM)的一维时间序列预测matlab仿真
算法·matlab·lstm·一维时间序列预测·woa-lstm·海象优化
superior tigre6 小时前
22 括号生成
算法·深度优先
腾阳7 小时前
99%的人忽视了这一点:活着本身就是人生的意义,别让抑郁和内耗成为你的枷锁!
经验分享·程序人生·职场和发展·跳槽·学习方法·媒体
不吃西红柿的857 小时前
[职场] 内容运营求职简历范文 #笔记#职场发展
笔记·职场和发展·内容运营
liyang_8307 小时前
邦芒秘诀:职场高手都具备的三个特征
职场和发展
普通网友7 小时前
十大秘闻:揭秘霍兰德职业兴趣理论的未知面!
职场和发展·求职招聘·职场发展·单一职责原则