本文主要是介绍22. Generate Parentheses(Leetcode每日一题-2020.04.09),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Problem
Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.
Example1
Given n = 3, a solution set is:
[ “((()))”, “(()())”, “(())()”, “()(())”, “()()()” ]
Solution
经典回溯。
class Solution {
public:vector<string> generateParenthesis(int n) {vector<string> ret;if(n == 0)return ret;backtrack(n,n,"",ret);return ret;}void backtrack(int leftRemain,int rightRemain,string cur,vector<string> &ret){if(leftRemain > rightRemain)return;if(leftRemain < 0 || rightRemain < 0)return;if(leftRemain == 0 && rightRemain == 0){ret.push_back(cur);return;}if(leftRemain > 0){backtrack(leftRemain - 1,rightRemain,cur+'(',ret);}if(rightRemain > 0){backtrack(leftRemain,rightRemain - 1,cur+')',ret);}
这篇关于22. Generate Parentheses(Leetcode每日一题-2020.04.09)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!