Skip to content

Commit 064f2f9

Browse files
authored
Merge pull request #11 from rihib/generate_parentheses
Generate Parentheses
2 parents 7246e66 + 1428f88 commit 064f2f9

File tree

1 file changed

+34
-0
lines changed
  • pullrequests/generate_parentheses

1 file changed

+34
-0
lines changed
+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
//lint:file-ignore U1000 Ignore all unused code
2+
package generateparentheses
3+
4+
/*
5+
初見で解くことができず、他の人の回答を見ながら解く形になってしまいました。
6+
一応自分でもバックトラッキングをちゃんと理解して自力で下記のコードを書けるようにはなりました。
7+
8+
時間計算量と空間計算量はカタラン数になるという認識。
9+
https://github.com/SuperHotDogCat/coding-interview/pull/7#discussion_r1577988152
10+
https://github.com/Mike0121/LeetCode/pull/1#discussion_r1577919957
11+
*/
12+
func generateParenthesis_step1(n int) []string {
13+
var parentheses []string
14+
var stack []byte
15+
var generate func(int, int)
16+
generate = func(open int, closed int) {
17+
if open == n && closed == n {
18+
parentheses = append(parentheses, string(stack))
19+
return
20+
}
21+
if open < n {
22+
stack = append(stack, '(')
23+
generate(open+1, closed)
24+
stack = stack[:len(stack)-1]
25+
}
26+
if open > closed {
27+
stack = append(stack, ')')
28+
generate(open, closed+1)
29+
stack = stack[:len(stack)-1]
30+
}
31+
}
32+
generate(0, 0)
33+
return parentheses
34+
}

0 commit comments

Comments
 (0)