0089.格雷编码
方法一:对称生成
时间复杂度 $O(2^n)$,空间复杂度 $O(n)$。
func grayCode(n int) []int {
if n == 1 {
return []int{0, 1}
}
ans := grayCode(n - 1)
for i := len(ans) - 1; i >= 0; i-- {
ans = append(ans, ans[i]+1<<(n-1))
}
return ans
}
时间复杂度 $O(2^n)$,空间复杂度 $O(n)$。
func grayCode(n int) []int {
if n == 1 {
return []int{0, 1}
}
ans := grayCode(n - 1)
for i := len(ans) - 1; i >= 0; i-- {
ans = append(ans, ans[i]+1<<(n-1))
}
return ans
}