LeetCode Q22 括號生成

2021-10-19 09:19:13 字數 1024 閱讀 5776

原題位址

思路一

生成n=6的所有情況,然後判斷這個情況是不是符合題目要求的情況.是的話加入結果鍊錶.

一開始我嘗試使用迴圈生成所有情況.這是n=3的情況.

public list

generateparenthesis_

(int n)}}

}return res;

}

但是當我想推廣的時候,有點點卡殼.意識到可能需要用遞迴來生成才比較方便.不過遞迴寫的比較少,還是很卡殼.然後就看了下官方題解.寫出了自己版本的遞迴.

class

solution

public

void

allarray

(string s,

int pos,

int len, list

res)if(

isvalide

(s)&&pos==len) res.

add(s);}

public

boolean

isvalide

(string s)

return valid==0;

}}

思路二分析情況,直接生成符合目標的情況.或者說剪枝,跳過不合適的情況.

class

solution

public

void

allarray

(string s,

int pos,

int len, list

res)

else valid--;}

if(pos < len&&valid>=0)

if(pos==len) res.

add(s);}

}

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...