LeetCode-22 括号生成

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/generate-parentheses

题目描述

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

 

示例 1:

输入:n = 3
输出:["((()))","(()())","(())()","()(())","()()()"]
示例 2:

输入:n = 1
输出:["()"]
 

提示:

1 <= n <= 8

解题思路

由于n取值范围很小,所以可以直接进行模拟,对于n来说,组成的字符串将有2n个位置,每个位置在'('数量小于n时,可以设置为'(',在'(' 数目大于')'时,可以设置为')',通过枚举所有可能得解。

代码展示

复制代码
class Solution {
public:
    vector<string> mvstrRet;
    int mN;
    void dfs(int left, int right, string &str)
    {
        if(right == mN)
        {
            mvstrRet.push_back(str);
            return;
        }
        if(left < mN)
        {
            str.push_back('(');
            dfs(left + 1, right, str);
            str.pop_back();
        }
        if(left > right)
        {
            str.push_back(')');
            dfs(left, right + 1, str);
            str.pop_back();
        }         
        return;
    }
    vector<string> generateParenthesis(int n) {
        mN = n;
        string str;
        dfs(0, 0, str);
        return mvstrRet;
    }
};
复制代码

 

运行结果

 

 

posted @   过客匆匆,沉沉浮浮  阅读(37)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示