22 括號生成

2021-10-04 21:32:23 字數 1426 閱讀 1761

數字 n 代表生成括號的對數,請你設計乙個函式,用於能夠生成所有可能的並且 有效的 括號組合。

示例:輸入:n = 3

輸出:[

「((()))」,

「(()())」,

「(())()」,

「()(())」,

「()()()」

]

class

solution

public

void

generateall

(char

current,

int pos, list

result)

}else

}public

boolean

isvalid

(char

current)

else

if(balance <0)

}return

(balance ==0)

;}}

class

solution

// 進行深搜

dfs(

"", n, n, res)

;return res;}/*

* @author

* @description

* @date

* @param current 當前字串

* @param left 剩餘的左括號數

* @param right 剩餘的右括號數

* @param res 結果集

* @return

**/private

void

dfs(string current,

int left,

int right, list

res)

if(left ==

0&& right ==0)

if(left >0)

if(right >0)

}}

class

solution

}public list

generateparenthesis

(int n)

queue

queue =

newlinkedlist

<

>()

; queue.

offer

(new

node

(n, n,"")

);while

(!queue.

isempty()

)if(curnode.left >0)

if(curnode.right >

0&& curnode.left < curnode.right)

}return res;

}}

22 括號生成

參考回溯法 1.class solution def init self self.ans list defgenerateparenthesis self,n int self.parenthesisiter n,0,return self.ans list defparenthesisiter ...

22 括號生成

給出 n 代表生成括號的對數,請你寫出乙個函式,使其能夠生成所有可能的並且有效的括號組合。例如,給出 n 3,生成結果為 在leetcode中有關括號的題共有三道,除了這一道的另外兩道是valid parentheses 驗證括號和longest valid parentheses 最長有效括號,這...

22 括號生成

插空法對於乙個 可以把另乙個 插到它的任意乙個空位,形成新的組合。此處有3個空位,但插在頭部和尾部是重複的,所以要注意去重,可以用set class solution object def generateparenthesis self,n res set for i in range n 1 t...