LeetCode热题Hot100 - 括号生成

一刷~

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

思路:

递归,考虑手动生成有效括号的逻辑。记录当前可能组合中左括号的个数left和剩余可用括号对数n,1.当left不为0时,加一个右括号,n不变,继续下一个 递归;2.当n不为0时,为当前可能组合加一个左括号,left+1, n-1,继续下一个递归;3.当n=0时,考虑left是否为0,不为0,则在当前可能组合右侧加上left个左括号。

改变递归调用方式,可能更优雅- -

python 复制代码
class Solution:
    def generateParenthesis(self, n: int) -> List[str]:
        res = []
        self.generate(res, '', 0, n)
        return res
    
    def generate(self, res, s, left, n):
        if n == 0:
            if left:
                while left:
                    s += ')'
                    left -= 1
            res.append(s)
            return
        
        if left:
            self.generate(res, s+')', left-1, n)
        self.generate(res, s+'(', left+1, n-1)
相关推荐
ん贤17 分钟前
贪心算法.
算法·贪心算法
cndes25 分钟前
大数据算法的思维
大数据·算法·支持向量机
Mopes__2 小时前
Python | Leetcode Python题解之第461题汉明距离
python·leetcode·题解
睡不着还睡不醒2 小时前
【数据结构强化】应用题打卡
算法
sp_fyf_20242 小时前
计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-05
人工智能·深度学习·神经网络·算法·机器学习·语言模型·自然语言处理
Mopes__3 小时前
Python | Leetcode Python题解之第452题用最少数量的箭引爆气球
python·leetcode·题解
C++忠实粉丝3 小时前
前缀和(6)_和可被k整除的子数组_蓝桥杯
算法
木向3 小时前
leetcode42:接雨水
开发语言·c++·算法·leetcode
TU^3 小时前
C语言习题~day16
c语言·前端·算法
DdddJMs__1353 小时前
C语言 | Leetcode C语言题解之第461题汉明距离
c语言·leetcode·题解