leetcode-22-Generate Parentheses

    xiaoxiao2021-03-25  100

    问题

    题目:[Generate Parentheses]

    思路

    卡特兰数的思路。 任意时刻左括号的数量要多于右括号。 我的思路也很简单,那就是每一位挨个试探就好了。 搜索的思路。

    至于参数传递,我没有选择引用。而是值传递,这一块我不是很熟。 传递引用后面要将变化改回来。

    代码

    class Solution { public: vector<string> generateParenthesis(int n) { std::vector<std::string> ret; std::string s(2*n, ' '); dfs(s, 0, n, 0, 0, ret); return ret; } private: void dfs(std::string s, int depth, int n, int cnt_left, int cnt_right, std::vector<std::string>& ret){ if(depth == 2*n) ret.push_back(s); else{ if( cnt_left < n && cnt_left >= cnt_right ){ s[depth] = '('; dfs( s, depth + 1, n, cnt_left + 1, cnt_right, ret ); } if( cnt_right < n && cnt_right < cnt_left ){ s[depth] = ')'; dfs( s, depth + 1, n, cnt_left, cnt_right + 1, ret ); } } } };
    转载请注明原文地址: https://ju.6miu.com/read-25795.html

    最新回复(0)