[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