Leetcode 22

Question

Solution

Dfs来做,考虑left和right的各自的次数,每添加一个就-1,然后通过判断语句来剔除不正确的情况。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Solution:
def generateParenthesis(self, n: int) -> List[str]:
if n == 0:
return [""]
results = []
self.dfs(n, n, "", results)
return results


def dfs(self, left, right, temp, results):
if left > right or left < 0 or right < 0:
return
if left == 0 and right == 0:
results.append(temp)
self.dfs(left - 1, right, temp + "(", results)
self.dfs(left, right - 1, temp + ")", results)