数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。
有效括号组合需满足:左括号必须以正确的顺序闭合。
示例 1:
输入:n = 3
输出:["((()))","(()())","(())()","()(())","()()()"]
示例 2:
输入:n = 1
输出:["()"]
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/generate-parentheses
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
class Solution:
def generateParenthesis(self, n: int) -> List[str]:
def backTrack(temp,left,right):
#当temp长度与两倍的n相等时终止
if len(temp) == 2*n:
res.append(''.join(temp))
return
#当左括号个数小于n时
if left<n:
#回溯模板,最后要还原状态
temp.append('(')
backTrack(temp,left+1,right)
temp.pop()
#当右括号小于左括号时可以添加右括号
if right<left:
temp.append(')')
backTrack(temp,left,right+1)
temp.pop()
res =[]
temp = []
backTrack(temp,0,0)
return res