每日一題 LeetCode之括號生成

2021-10-03 16:03:20 字數 943 閱讀 9611

給出 n 代表生成括號的對數,請你寫出乙個函式,使其能夠生成所有可能的並且有效的括號組合。

例如,給出 n = 3,生成結果為:

[「((()))」,

「(()())」,

「(())()」,

「()(())」,

「()()()」

]思路:

使用深度優先遍歷實現,每乙個位置要麼是'(',要麼是』)',我們用兩個變數leftright儲存'('')'的剩餘個數。每次遞迴,leftright減1,字串新增乙個相應的括號,當left==0&&right==0時,即生成了一組有效的括號。

注意:

生成有效的括號前提是left<=right,已使用的')'不能少於'('

public list

generateparenthesis

(int n)

public

void

generate

(int left,

int right,string str,list list)

if(left>right)

return;if

(left>0)

generate

(left-

1,right,str+

'(',list);if

(right>0)

generate

(left,right-

1,str+

')',list)

;}

Leetcode 每日一題 22 括號生成

給出 n 代表生成括號的對數,請你寫出乙個函式,使其能夠生成所有可能的並且有效的括號組合。例如,給出 n 3,生成結果為 嗯 最開始毫無思路,看到又是個中等題覺得自己應該可以做出來,想了想應該是乙個乙個新增到字串,判斷能不能新增進去,新增左括號無限制,新增右括號時左邊的左括號數必須大於右括號數才能新...

Leetcode每日一題 有效的括號

給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。示例 1 輸入 輸出 true 示例 2 輸入 輸出 true 示例 3 輸入 輸出 false 示例 4 輸入 輸出 false 示例 5 輸入 輸...

每日一題 LeetCode

在陣列中的兩個數字,如果前面乙個數字大於後面的數字,則這兩個數字組成乙個逆序對。輸入乙個陣列,求出這個陣列中的逆序對的總數。示例 1 輸入 7,5,6,4 輸出 5 限制 0 陣列長度 50000 思想是 分治演算法 所有的 逆序對 於 3 個部分 左邊區間的逆序對 右邊區間的逆序對 橫跨兩個區間的...