LeetCode刷题_c++版-22括号生成

class Solution {
    
    
public:

    void generate(vector<string> &result, string tmp, int left, int right){
    
    
        if(left == 0 && right == 0) {
    
    //左右括号都用完了就返回
            result.push_back(tmp);
            return;
        }
        //每次递归要么放左括号,要么放右括号
        if(left > 0){
    
    
            generate(result, tmp+"(", left-1, right);
        }
        if(right > left){
    
    //但是右括号是有条件的,有了左括号才能放右括号
            generate(result, tmp+")", left, right-1);
        }
    }

    vector<string> generateParenthesis(int n) {
    
    
        int right = n;
        int left = n;
        vector<string> result;
        string tmp;
        generate(result, tmp, right, left);
        return result;

    }
};

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44343355/article/details/128826163
今日推荐