Leetcode——22. Generate Parentheses
来源:互联网 发布:西门子系统数控编程 编辑:程序博客网 时间:2024/06/15 00:59
1. 概述
1.1 题目
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:
[ "((()))", "(()())", "(())()", "()(())", "()()()"]
1.2 解题思路
这道题中使用的是递归算法实现。left和right两个变量记录左括号和右括号的个数,每增加一个对应的括号之后就将响应的括号数减一,因而最后的情况就可能出现下面几种情况
(1)到了最后left和right两个变量都为0了,那么代表的含义就是全部的括号都添加完成了,现在的解是一个可行的解
(2)当前left和right两个变量的值都大于0,那么代表的含义是还没有添加完所有的括号,算法还需要继续递归下去
(3)最后的一个条件left>right条件就比较难了,若是不加上这个条件就会出现“)(”这样的情况,这是属于先遍历右子树再遍历左子树的情况产生的括号匹配不正确的情况正确的顺序应该是‘(’在‘)’的左边,这就要求解是在left小于right的基础上达到left==right==0的条件的,这样的解才是可行的。以上是我个人的理解,若有不正确的地方欢迎指正。
参考文章:http://www.cnblogs.com/grandyang/p/4444160.html
2. 编码
class Solution {public: vector<string> generateParenthesis(int n) { vector<string> res; generateParenthesisDFS(n, n, "", res); return res; } void generateParenthesisDFS(int left, int right, string out, vector<string> &res) { if (left > right) return; if (left == 0 && right == 0) //这个时候括号加完了,得到一个解,保存并返回 res.push_back(out); else //左括号和右括号还没有加完,那就递归添加 { if (left > 0) generateParenthesisDFS(left - 1, right, out + '(', res); if (right > 0) generateParenthesisDFS(left, right - 1, out + ')', res); } }};
阅读全文
0 0
- 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
- [Leetcode] 22. Generate Parentheses
- 【LeetCode】22.Generate Parentheses
- [leetcode] 22.Generate Parentheses
- 【leetcode】22. Generate Parentheses
- Leetcode-22.Generate Parentheses
- [leetcode] 22. Generate Parentheses
- 22. Generate Parentheses LeetCode
- leetcode 22. Generate Parentheses
- [LeetCode]22. Generate Parentheses
- MS SQL Server学习笔记(二)
- Java实现-Find the Duplicate Number
- vue遇到过的坑(父组件向输入框组件传值进去,然后子组件利用传进来的数据进行数据绑定的问题与解决方法)
- 身份证读取
- 包的引入(base版本)
- Leetcode——22. Generate Parentheses
- 系统解耦问题-不同系统间dubbo调用的异常处理-ExceptionFilter
- MySQL中常用的三种插入数据的语句
- 入门篇(3)NAO机器人的NAOqi框架和模块代理
- 关于为什么使用文档注释
- memcache数据的同步读写
- day06
- enum枚举型的使用
- ajax跨域问题解决方案