LeetCode 22 括號生成

2021-09-12 13:15:38 字數 714 閱讀 7090

#!/usr/bin/python3

# -*- coding: utf-8 -*-

# @time: 2019/3/13

# @author: xfli

# the file...

"""問題分析:使用回溯法,現在要知道乙個事情,在生成的有效的字串過程中,

左括號 '(' 在前且個數大於右括號 ')' 的個數。說白就是,優先生成左括號 '(',

不能生成的時候就回溯到前乙個位置去生成右括號 ')' ,在生成的過程分別用 left、right 記錄左右括號的個數,直至結束。

"""def generateparenthesis(n):

res =

def backtrack(s='', left=0, right=0):

if len(s) == 2 * n:

if left < n:

backtrack(s + '(', left+1, right)

if left > right:

backtrack(s + ')', left, right+1)

backtrack()

return res

if __name__ == '__main__':

n = 3

result = generateparenthesis(n)

print(result)

LeetCode22 括號生成

題幹 給出 n 代表生成括號的對數,請你寫出乙個函式,使其能夠生成所有可能的並且有效的括號組合。例如,給出 n 3,生成結果為 演算法思想 先看括號匹配,既然要達到括號匹配,就一定要滿足stack的操作 不多說 則組合數的結果則是卡特蘭數。要輸出正確組合數,可採用遞迴,用兩個變數l,r分別表示剩餘左...

leetcode 22 括號生成

給出 n 代表生成括號的對數,請你寫出乙個函式,使其能夠生成所有可能的並且有效的括號組合。例如,給出 n 3,生成結果為 要把這個當成下棋,左括號為黑,右括號為白,則轉換為 3黑3白有幾種排列方式 每一步都有兩個選擇 下黑或者下白,但是場上下白子時剩下的黑子必須比剩下的白子多 比n 2時,有黑白黑白...

leetcode 22 括號生成

給出 n 代表生成括號的對數,請你寫出乙個函式,使其能夠生成所有可能的並且有效的括號組合。例如,給出 n 3,生成結果為 參考官方題解 方法二 回溯法 只有在序列仍然保持有效才會新增 如果還有位置,我們可以開始放乙個左括號。如果不超過右括號數量不超過左括號的數量可以放乙個右括號。class solu...