题目
描述
给出n对括号,请编写一个函数来生成所有的由n对括号组成的合法组合。
例如,给出n=3,解集为:
“((()))”, “(()())”, “(())()”, “()()()”, “()(())”
数据范围:0≤n≤10
要求:空间复杂度 O(n!),时间复杂度 O(n!)
思路
第一时间想到了全排列的问题,所以这道题也用深度优先搜索的方法来做,设定一个当前状态和可用状态,然后递归。
代码
python版本:
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param n int整型
# @return string字符串一维数组
#
class Solution:
def generateParenthesis(self , n: int) -> List[str]:
# write code here
res = []
cur_str = ''
def dfs(cur_str, left, right):#左括号或者右括号可以使用的个数
if left==0 and right==0:
res.append(cur_str)
return
if left>0:
dfs(cur_str+"(", left-1, right)
if left<right and right>0:
dfs(cur_str+")", left, right-1)
dfs(cur_str, n, n)
return res
c++版本:
无