数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。
示例 1:
输入:n = 3
输出:["((()))","(()())","(())()","()(())","()()()"]
示例 2:
输入:n = 1
输出:["()"]
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/generate-parentheses
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题思路:
仍然是一个搜索问题,这次没看答案,终于自己写上来了
class Solution:
def generateParenthesis(self, n: int) -> List[str]:
result = []
results = []
def dfs(result, results, lindex, rindex):
if lindex > rindex:
return
if lindex == 0 and rindex == 0:
results.append(''.join(result))
return
if lindex > 0:
result.append('(')
dfs(result, results, lindex-1, rindex)
result.pop()
if rindex > 0:
result.append(')')
dfs(result, results, lindex, rindex-1)
result.pop()
dfs(result,results,n,n)
return results