LeetCode代码分析——22. Generate Parentheses(DFS模板题)
来源:互联网 发布:股票预测 python 编辑:程序博客网 时间:2024/06/12 05:12
很简单的一道问题,就是个DFS(深度优先搜索)的问题,我能想到,但是我不会。。。
所以结合本题总结下递归和DFS的解决方法。
如下图,执行的时候按从左到右的顺序,先递归执行左子树,再递归执行右子树。
代码如下:
public class Solution { public List<String> generateParenthesis(int n) { List<String> result = new ArrayList<>(); dfs(n, n, "", result); return result; } public static void dfs(int lefts, int rights, String s, List<String> result){ //递归出口,找到了一个正确结果 if (lefts == 0 && rights == 0){ result.add(s); } //第一次递归,左子树 if (lefts > 0) { dfs(lefts-1, rights, s+'(', result); } //第二次递归,右子树 if (rights > 0 && lefts < rights) { dfs(lefts, rights-1, s+')', result); } //隐藏出口,就是各种不合法的结果,比如lefts>rights,左括号有富余 } public static void main(String[] args) { Solution solution = new Solution(); List<String> result = solution.generateParenthesis(2); System.out.println(result); }}
0 0
- LeetCode代码分析——22. Generate Parentheses(DFS模板题)
- DFS leetcode 22. Generate Parentheses
- 【Leetcode】22.Generate Parentheses【DFS】
- leetcode---generate-parentheses---dfs
- 22. Generate Parentheses(dfs)
- Leetcode——22. Generate Parentheses
- LeetCode算法题——Generate Parentheses
- 22. Generate Parentheses----dfs
- LeetCode算法题——22. Generate Parentheses
- (Leetcode)22. Generate Parentheses
- LeetCode——Generate Parentheses
- LeetCode——Generate Parentheses
- LeetCode——Generate Parentheses
- leetcode——Generate Parentheses
- leetcode——Generate Parentheses
- [LeetCode]22.Generate Parentheses
- LeetCode --- 22. Generate Parentheses
- LeetCode 22.Generate Parentheses
- JZOJ1271.【USACO题库】2.4.1 The Tamworth Two两只塔姆沃斯牛
- 请编写函数fun(char *s),其功能是:删除字符串中的数字字符。主函数中输入字符串,调用函数,并输出结果字符串。例如若输入的字符串是:34AB9C6DE, 则应输出:ABCDE
- JavaScript:window.onload问题
- 复习+学习js
- ButterKnife Zelezny配置与使用说明
- LeetCode代码分析——22. Generate Parentheses(DFS模板题)
- 排错+组合数
- 理解OAuth 2.0
- 常用排序算法之堆排序
- Populating Next Right Pointers in Each Node II
- LeetCode 7. Reverse Integer
- 我的第一个程序hello word及注释
- 常用排序算法之归并排序
- 销售员业绩管理程序设计