• 22. 括号生成-递归dfs回溯-中等难度


    问题描述

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

    示例:

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

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/generate-parentheses

    解答

    '''
    递归,dfs,回溯:
    唯一独特的点,是用value表示括号是否匹配,value必不为负,当value=0的时候,匹配。
    '''
    class Solution:
        def generateParenthesis(self, n):
            result = []
            def backtrack(self, arr, value):
                if len(arr) == 2*n:
                    if value == 0:
                        result.append(''.join(arr))
                    return
                if value >= 0:
                    arr.append('(')
                    value += 1
                    backtrack(self, arr, value)
                    arr.pop()
    
                    arr.append(')')
                    value -= 2
                    backtrack(self, arr, value)
                    arr.pop()
                else:
                    return
            backtrack(self, [], 0)
            return result
  • 相关阅读:
    一分钟 解决Tomcat端口 占用问题
    Java 自定义注解
    Java 解析自定义XML文件
    Junit(手动/自动)加载
    Java思维题
    SSM框架中使用日志框架
    DAC
    SPI接口的FLASH
    晶振测试起振方法
    Jlink不报错的方法
  • 原文地址:https://www.cnblogs.com/xxxxxiaochuan/p/13232274.html
Copyright © 2020-2023  润新知