題目描述:
解題思路:
使用深度優先搜索的方法找到所有符合條件的答案。
這裏引用大佬的解題思路圖,原圖鏈接
對於 n=2 的情況如下圖所示。
從圖中可以看出,深度優先遍歷的函數包含的步驟爲:
- 如果當前剩餘的左右括號數都爲0,則將當前的括號字符串添加進結果中
- 如果當前剩餘的左括號數量大於右括號數量,那麼得到的括號字符串不符合條件,需要進行剪枝
- 如果當前剩餘的左括號數量大於0,則可進行左分支
- 如果當前剩餘的右括號數量大於0,則可進行右分支
python代碼
class Solution(object):
def generateParenthesis(self, n):
"""
:type n: int
:rtype: List[str]
"""
result = []
self.dfs("", n, n, result)
return result
def dfs(self, curStr, left, right, result):
"""
-curStr: 當前的括號字符串, type: str
-left: 當前左括號剩餘數量, type: int
-right: 當前右括號剩餘數量, type: int
-result: 存儲的所有的結果, type: List[str]
"""
if left == 0 and right == 0:
result.append(curStr)
return
if left > right:
return
if left > 0:
self.dfs(curStr + "(", left - 1, right, result)
if right > 0:
self.dfs(curStr + ")", left, right - 1, result)
參考資料:
https://leetcode-cn.com/problems/generate-parentheses/solution/hui-su-suan-fa-by-liweiwei1419/