leetcode 22. 括号生成

题目描述

数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。

示例:

输入:n = 3
输出:[
       "((()))",
       "(()())",
       "(())()",
       "()(())",
       "()()()"
     ]

解题思路

回溯法

通过跟踪到目前为止放置的左括号和右括号的数目,如果左括号数量不大于 n,我们可以放一个左括号。如果右括号数量小于左括号的数量,我们可以放一个右括号。

class Solution(object):
    def generateParenthesis(self, n):
        """
        :type n: int
        :rtype: List[str]
        """
        res=[]
        def trackback(s,left,right):
            if (left+right)==2*n:  #left,right分别表示左右括号数
                res.append(''.join(s))
                return
            if left

 

你可能感兴趣的:(leetcode,leetcode)