LeetCode 22. Generate Parentheses

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/y12345678904/article/details/79968975

题目

这里写图片描述

思路

dfs。用两个count记录左括号和右括号的数量,保证左括号数量大于等于右括号数量即可。

代码

class Solution:
    def __init__(self):
        self.res_list = []
    def dfs(self, nums, n, count1, count2):
        if len(nums) == 2 * n and count1 == count2:
            self.res_list.append(''.join(nums[:]))
            return
        if count1 < count2: return
        if count1 == n:
            nums.append(')')
            self.dfs(nums[:], n, count1, count2 + 1)
        else:
            nums.append('(')
            self.dfs(nums[:], n, count1 + 1, count2)
            nums.pop(-1)
            nums.append(')')
            self.dfs(nums[:], n, count1, count2 + 1)

    def generateParenthesis(self, n):
        """
        :type n: int
        :rtype: List[str]
        """
        self.dfs(['('], n, 1, 0)
        return self.res_list

阅读更多 登录后自动展开

扫码向博主提问

sparksnail

非学,无以致疑;非问,无以广识
去开通我的Chat快问
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页