Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# backtracking
class Solution:
def generateParenthesis(self, n: int) -> List[str]:
def make_combination(current):
if remain["("] > remain[")"]:
return
if remain["("] < 0:
return
if remain[")"] == 0:
parentheses.append(current)
return
for bracket in brackets:
remain[bracket] -= 1
make_combination(current + bracket)
remain[bracket] += 1

brackets = ["(", ")"]
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

個人的には、関数内関数で使用する変数は、関数内関数より前に定義したいです。ですが、好みの問題かもしれません。

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

先に変数の定義を見ておくほうが私もわかりやすいなと思いました。
今後は先に書くようにしてみます。

remain = {"(": n, ")": n}
parentheses = []
make_combination("")
return parentheses
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# backtracking
# 括弧の数を引数にする
class Solution:
def generateParenthesis(self, n: int) -> List[str]:
def make_combination(current, remain_left, remain_right):
if remain_left == 0 and remain_right == 0:
parentheses.append(current)
return
if 0 < remain_left:
make_combination(current + "(", remain_left - 1, remain_right)
if remain_left < remain_right:
make_combination(current + ")", remain_left, remain_right - 1)

parentheses = []
make_combination("", n, n)
return parentheses
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
class Solution:
def generateParenthesis(self, n: int) -> List[str]:
def make_combination(current, remain_left, remain_right):
if remain_left == 0 and remain_right == 0:
parentheses.append(current)
return
if 0 < remain_left:
make_combination(current + "(", remain_left - 1, remain_right)
if remain_left < remain_right:
make_combination(current + ")", remain_left, remain_right - 1)

parentheses = []
make_combination("", n, n)
return parentheses
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
class Solution:
def generateParenthesis(self, n: int) -> List[str]:
stack = [("", n, n)]
parentheses = []
while stack:
current, remain_left, remain_right = stack.pop()
if remain_left == 0 and remain_right == 0:
parentheses.append(current)
continue
if 0 < remain_left:
stack.append((current + "(", remain_left - 1, remain_right))
if remain_left < remain_right:
stack.append((current + ")", remain_left, remain_right - 1))

return parentheses


# backtracking
# 関数内で使う変数は先に定義する
class Solution:
def generateParenthesis(self, n: int) -> List[str]:
parentheses = []

def make_combination(current, remain_left, remain_right):
if remain_left == 0 and remain_right == 0:
parentheses.append(current)
return
if 0 < remain_left:
make_combination(current + "(", remain_left - 1, remain_right)
if remain_left < remain_right:
make_combination(current + ")", remain_left, remain_right - 1)

make_combination("", n, n)
return parentheses