美文网首页
LeetCode:括号生成

LeetCode:括号生成

作者: 李海游 | 来源:发表于2020-04-09 16:39 被阅读0次

    22. 括号生成

    思路:
    最终的字符串肯定是 n个'(', n个 ')' 。
    所以'('个数小于n,才可以添加'(';
    ‘(’个数大于')',才可以添加')'。
    ‘(’个数等于 n,并且')'个数等于 n,递归终止,且该结果一定是正确结果。
    递归过程中不会出现'('或')'个数大于n的情况。

    class Solution {
    public:
        vector<string> generateParenthesis(int n) {
            vector<string> v;
            generate("", n, n, v);
            return v;
        }
        void generate(string item, int lef, int rig, vector<string> &v)
        {
            if(lef==0&&rig==0)
            {
                v.push_back(item);
                return;
            }
            if(lef>0) // +(   左括号剩余数-1
                generate(item+'(', lef-1,rig,v);
            if(lef<rig)  // +)  右括号剩余数-1
                generate(item+')', lef,rig-1,v);
        }
    };
    
    没思路时不妨理一下可能的状况,哪些状况是合理的,可以用代码约束的。

    参考自:https://www.bilibili.com/video/BV19J411E7ft?from=search&seid=7281370434236405070

    相关文章

      网友评论

          本文标题:LeetCode:括号生成

          本文链接:https://www.haomeiwen.com/subject/wnwcmhtx.html