package main func generateParenthesis( n int ) []string { // write code here ans, oneShot := []string{}, []byte{} var helper func(int, int) helper = func(lBracketNum, rBracketNum int) { if len(oneShot) == 2 * n { ans = append(ans, string(oneShot)) return } if lBracketNum > 0 { oneShot = append(oneShot, '(') helper(lBracketNum-1, rBracketNum) oneShot = oneShot[:len(oneShot)-1] } if rBracketNum > 0 && rBracketNum > lBracketNum { oneShot = append(oneShot, ')') helper(lBracketNum, rBracketNum-1) oneShot = oneShot[:len(oneShot)-1] } } helper(n, n) return ans }