首页 > 代码库 > Generate Parentheses -- leetcode
Generate Parentheses -- leetcode
Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.
For example, given n = 3, a solution set is:
"((()))", "(()())", "(())()", "()(())", "()()()"
class Solution { public: vector<string> generateParenthesis(int n) { vector<string> result; string item; traverse(result, item, n, n); return result; } void traverse(vector<string> &res, string &item, int left, int right) { if (!left && !right) return res.push_back(item); if (right < left) return; if (left) { item.push_back('('); traverse(res, item, left-1, right); item.pop_back(); // c++ 11 } if (right) { item.push_back(')'); traverse(res, item, left, right-1); item.pop_back(); // c++ 11 } } };
在leetcode上的执行时间为4ms。
此算法的关键点是,在构造子串中,确保左括号的数量必须大于或者等于右括号。
Generate Parentheses -- leetcode
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。