漯河网做网站/seo关键词排名优化如何
题目描述
数字 n
代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。
求解思路
基本思路就是生成出来所有可能的字符串,然后再从中选择出有效的字符串括号组合。
这位大佬讲的比较好简单易懂Java/C++ /Python/js/go 培养抽象思维【回溯解法】- 括号生成https://leetcode.cn/problems/generate-parentheses/solution/pei-yang-chou-xiang-si-wei-hui-su-jie-fa-7dwu/
我们只需要归纳出剪枝的条件:
- 左括号的个数大于 n ;
- 右括号的个数大于左括号。
输入输出示例
代码
class Solution {public List<String> res = new ArrayList<>();public List<String> generateParenthesis(int n) {if(n <= 0) return res;dfs(n, "", 0, 0);return res;}private void dfs(int n, String path, int left,int right){if(left > n || right > left) return;if(path.length() == 2*n){res.add(path);return;}dfs(n,path+"(",left+1,right);dfs(n,path+")",left,right+1);}
}