一、 Generate Parentheses
补充:深入理解递归的过程
https://www.coursera.org/lecture/c-chengxu-sheji/di-gui-diao-yong-de-guo-cheng-3JLR6
理解:递归本身实现一种栈的数据结构
思路:递归+剪枝
开始用分治、递归和回溯的函数,必须要开一个递归的函数
_gen()中,left指的是左边的括号已经用了多少个,right表示右边的括号已经用了多少个了,n表示总数,result表示当前产生的括号的序列
注意:仔细体会下面这句话的意思
class Solution:
def generateParenthesis(self, n: int) -> List[str]:
self.list=[]
self._gen(0,0,n,"")
return self.list
def _gen(self,left,right,n,result):
#递归终止条件
if left==n and right==n:
self.list.append(result)
return
if left<n:
self._gen(left+1,right,n,result+"(")
if left>right and right<n:
self._gen(left,right+1,n,result+")")