美文网首页
22. 括号生成-动态规划

22. 括号生成-动态规划

作者: gykimo | 来源:发表于2020-06-18 20:54 被阅读0次

https://leetcode-cn.com/problems/generate-parentheses/

我的方法一:动态规划+哈希表

步骤

  1. 给出n
  2. 从1开始,1是(),2是分别在()的左、中、右插入(),并去重
  3. 即f(n) 是在f(n-1)的最左到最右边位置插入(),并去重
  4. 去重利用哈希表

初始条件和边界条件

  1. n=0,返回""
  2. n=1,返回"()"

复杂度

时间复杂度:O(n!)
空间复杂度:O(n!)

代码

class Solution {
public:
    vector<string> generateParenthesis(int n) {
        if(n == 0){
            return vector<string>();
        }

        unordered_set<string> s;
        vector<string> ret1;
        ret1.push_back("()");
        vector<string> ret2;
        string combine;

        vector<string>* ret_tmp1 = 0;
        vector<string>* ret_tmp2 = 0;
        for(int i = 1; i<n; i++){
            if(ret1.size() > 0){
                ret_tmp1 = &ret1;
                ret_tmp2 = &ret2;
            }else{
                ret_tmp1 = &ret2;
                ret_tmp2 = &ret1;
            }

            for(auto & itor : *ret_tmp1){
                for(int j = 0; j<=itor.size(); j++){
                    combine = string(itor.c_str(), j) + "()" + string(itor.c_str()+j, itor.size() - j);
                    if(s.find(combine) == s.end()){
                        ret_tmp2->push_back(combine);
                        s.insert(combine);
                    }
                }
            }
            ret_tmp1->clear();
        }

        if(ret1.size() > 0){
            return ret1;
        }else{
            return ret2;
        }
    }
};

相关文章

  • 22. 括号生成-动态规划

    https://leetcode-cn.com/problems/generate-parentheses/ 我的...

  • 动态规划:22.括号生成

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

  • LeetCode-22. 括号生成

    参考:第7课-泛型递归、树的递归 LeetCode-22. 括号生成 22. 括号生成 数字 n 代表生成括号的对...

  • LeetCodeDay51 —— 括号生成★★☆

    22. 括号生成 描述 给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。...

  • leetcode(python)22.括号生成

    22.括号生成 给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。 例如,...

  • 22. 括号生成

    22. 括号生成[https://leetcode.cn/problems/generate-parenthese...

  • [day7] [LeetCode] [title22,3,26]

    22.括号生成 给出n代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。 例如,给出...

  • 每周 ARTS 第 24 期

    1. Algorithm 22. 生成括号(中等) 描述: 给出 n 代表生成括号的对数,请你写出一个函数,使其能...

  • LeetCode:22. 括号生成

    问题链接 22. 括号生成[https://leetcode.cn/problems/generate-paren...

  • 22. 括号生成

    给出n代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。 例如,给出n=3,生成结果...

网友评论

      本文标题:22. 括号生成-动态规划

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