Leetcode 22. 括号生成(回溯) —— python

1. 题目描述

给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。

例如,给出 n = 3,生成结果为:

[
“((()))”,
“(()())”,
“(())()”,
“()(())”,
“()()()”
]
链接:https://leetcode-cn.com/problems/generate-parentheses

2. 解题思路

用回溯法求解所有的可能情况,但递归需要限制条件。
限制条件如下:
(1)左括号与右括号的数量,最多放n个;
(2)当右括号的数量比左括号多时,不必再往下递归。

3. 代码实现

class Solution:
    def generateParenthesis(self, n: int):
        self.res = []
        self.search(n,n, '')
        return len(self.res)
     #left和right分表表示能再放入左右括号的数量
    def search(self, left, right,temp):
        if(left == 0 and right == 0):
            self.res.append(temp)
            return
        if(left > 0):
            self.search(left - 1,right, temp + '(')
        if(left < right):
            self.search(left, right - 1,temp + ')')

你可能感兴趣的:(leetcode)