[nb] Commit
This commit is contained in:
@@ -1,4 +1,8 @@
|
||||
package main
|
||||
import (
|
||||
"strings"
|
||||
"container/list"
|
||||
)
|
||||
/*
|
||||
Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.
|
||||
Example 1:
|
||||
@@ -20,37 +24,30 @@ Constraints:
|
||||
1 <= n <= 8
|
||||
*/
|
||||
|
||||
func rec(int index, dp map[string]string) {
|
||||
func rec(input []string, left int, right int, n int, ans *[]string) {
|
||||
|
||||
if len(input) == 2*n {
|
||||
*ans = append(*ans, strings.Join(input, ""))
|
||||
return
|
||||
}
|
||||
if left < n {
|
||||
input = append(input, "(")
|
||||
rec(input, left+1, right, n, ans)
|
||||
input = input[0:len(input)-1]
|
||||
}
|
||||
if right < left {
|
||||
input = append(input, ")")
|
||||
rec(input, left, right+1, n, ans)
|
||||
input = input[0:len(input)-1]
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
func generateParenthesis(n int)[] string {
|
||||
|
||||
if n == 1 {
|
||||
return []string{"()"}
|
||||
}
|
||||
|
||||
if n == 2 {
|
||||
return []string{"()()", "(())"}
|
||||
}
|
||||
|
||||
var output = make([]string, 0)
|
||||
var dp = map[string]string{}
|
||||
var start_string string = ""
|
||||
for i := 0; i < n - 1; i++ {
|
||||
start_string = start_string + "()"
|
||||
out_arr = a
|
||||
}
|
||||
output = append(output, start_string)
|
||||
|
||||
|
||||
for i := 1; i < n - 1; i++ {
|
||||
result := rec(i+1, dp) + rec(i-1)
|
||||
}
|
||||
|
||||
|
||||
func generateParenthesis(n int) []string {
|
||||
var output = make([]string, 2*n)
|
||||
var input = make([]string, 2*n)
|
||||
rec(input, 0, 0, n, &output)
|
||||
return output
|
||||
}
|
||||
|
||||
func main() {
|
||||
|
||||
generateParenthesis(3)
|
||||
}
|
||||
|
Reference in New Issue
Block a user