LeetCode系列22 括號生成

2021-10-25 12:15:55 字數 804 閱讀 7775

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

回溯法

class

solution

;// 記錄所有合法的括號組合

vector res;

// 路徑

string track;

// 可用的左括號和右括號的數量初始化為n

backtrack

(n, n, track, res)

;return res;

}// 可用的左括號數量為left個,可用的右括號數量為right個

void

backtrack

(int left,

int right, string& track, vector

& res)

// 嘗試放乙個左括號

track.

push_back

('(');

backtrack

(left-

1, right, track, res)

; track.

pop_back()

;// 嘗試放乙個右括號

track.

push_back

(')');

backtrack

(left, right-

1, track, res)

; track.

pop_back()

;}};

LeetCode 22 生成括號

22 生成括號 給出 n 代表生成括號的對數,請你寫出乙個函式,使其能夠生成所有可能的並且有效的括號組合。例如,給出 n 3,生成結果為 生成所有 2 個 和 字元構成的序列。然後,我們將檢查每乙個是否有效。為了檢查序列是否為有效的,我們會跟蹤平衡,也就是左括號的數量減去右括號的數量的淨值。如果這個...

22 生成括號

n n組括號,括號字串長度為2n2n 字串中的每個字元有兩種選擇可能,或 故有22n 2 22 n種可能。分析 1 我們定義兩個變數left和right分別表示剩餘左右括號的個數,如果在某次遞迴時,左括號的個數大於右括號的個數,說明此時生成的字串中右括號的個數大於左括號的個數,即會出現 或者 這樣的...

Leetcode演算法 22 生成括號字串

給定整數n,要求輸出 n 對左右括號的所有可能的有效組合。示例 輸入 n 3 輸出 為了保證括號字串是有效的,需要滿足兩個條件 可以使用遞迴法,來保證這兩個條件,步驟如下 1 起始有 n 個左括號和 n 個右括號需要拼接到字串中。2 先將結果字串初始化為空。3 每次遞迴時,選擇其中一種括號,拼接到結...