package q22 func gen(n, lvl, used int, buf []byte, ret []string) []string { if buf == nil { buf = make([]byte, 0, n*2) } if len(buf) == n*2 { return append(ret, string(buf)) } if used < n { buf = append(buf, '(') ret = gen(n, lvl+1, used+1, buf, ret) buf = buf[:len(buf)-1] } if lvl > 0 { buf = append(buf, ')') ret = gen(n, lvl-1, used, buf, ret) } return ret } func generateParenthesis(n int) []string { return gen(n, 0, 0, nil, nil) } var _ = generateParenthesis