LeetCode 22. 括号生成

2022-08-24  本文已影响0人  草莓桃子酪酪
题目

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

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

方法:暴力解法

generate 函数:生成所有组合方式

valid 函数:判断括号组合是否有效

class Solution(object):
    def generateParenthesis(self, n):
        def generate(list):
            if len(list) == 2 * n:
                if valid(list):
                    result.append(''.join(list))
            else:
                list.append('(')
                generate(list)
                list.pop()
                list.append(')')
                generate(list)
                list.pop()

        def valid(list):
            balance = 0
            for i in list:
                if i == '(':
                    balance += 1
                else:
                    balance -= 1
                if balance < 0:
                    return False
            return balance == 0

        result = []
        generate([])
        return result
参考

代码相关:https://leetcode.cn/problems/generate-parentheses/solution/gua-hao-sheng-cheng-by-leetcode-solution/

上一篇 下一篇

猜你喜欢

热点阅读