面試題 08 09 括號 (遞迴回溯)

2021-10-10 22:13:32 字數 1193 閱讀 2015

leetcode: 面試題 08.09. 括號

回溯題根據給定的個數 n, 既有 n 個 左括號,n 個 右括號, 輸出這 2∗n

2*n2∗

n 個括號的 所有組合

思路:當右括號使用完了, 這次的組合結束, 儲存結果

l ef

tleft

left

代表 左括號的剩餘個數, rig

htright

righ

t 代表右括號的剩餘個數

當 左括號個數大於 0 的時候,才能繼續新增左括號,當左括號的剩餘個數小於右括號剩餘個數的時候,且右括號剩餘個數大於 0 , 才能進行新增右括號。

遞迴回溯

更清晰的回溯

list

list =

newarraylist

<

>()

;public list

generateparenthesis

(int n)

dfs(n, n,

newstring()

);return list;

}public

void

dfs(

int left,

int right, string s)

if(left >0)

if(left < right && right >0)

}

面試題 08 09 括號

括號。設計一種演算法,列印n對括號的所有合法的 例如,開閉一一對應 組合。說明 解集不能包含重複的子集。例如,給出 n 2,生成結果為 演算法步驟 前提 p,q分別代表左括號,右括號數量.class solution def generateparenthesis self,n int re sta...

程式設計師面試金典 面試題 08 09 括號

括號。設計一種演算法,列印n對括號的所有合法的 例如,開閉一一對應 組合。說明 解集不能包含重複的子集。例如,給出 n 3,生成結果為 dfs搜尋,如果當前左括號用超了,右括號用超了,或者右括號的數量大於左括號的數量直接返回。而如果左右括號剛好用盡,代表生成乙個結果,記錄下來。然後就是遞迴,新增左括...

java遞迴面試題

題目1 斐波那契數列 一列數的規則如下 1 1 2 3 5 8 13 21 34.求第30位數是多少,用遞迴演算法實現。public static int getfabonaccisequencebynum int num logic return getfabonaccisequencebynum...