Golang刷LeetCode 22. 括号生成

it2024-08-13  37

22. 括号生成 代码实现:

func generateParenthesis(n int) []string { if n == 0 { return []string{} } res := []string{} findGenerateParenthesis(n, n, "", &res) return res } /* 回溯跳出条件, 并不需要判断左括号是否用完,因为右括号生成的条件 right > left , 所以右括号用完了就意味着左括号必定用完了 */ func findGenerateParenthesis(left, right int, str string, res *[]string) { if left == 0 && right == 0 { *res = append(*res, str) return } // 生成左括号 if left > 0 { findGenerateParenthesis(left-1, right, str+"(", res) } // 括号成对存在,有左括号才会有右括号 if right > 0 && left < right { findGenerateParenthesis(left, right-1, str+")", res) } }

解题思路: DFS 回溯,看注释即可。

最新回复(0)