描述
格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个二进制的差异。
给定一个非负整数 n ,表示该代码中所有二进制的总数,请找出其格雷编码顺序。一个格雷编码顺序必须以 0 开始,并覆盖所有的 2n 个整数。
说明
对于给定的 n,其格雷编码顺序并不唯一。
当n = 2时,根据上面的定义,[0,1,3,2] 和 [0,2,3,1] 都是有效的格雷编码顺序。
样例
- 样例 1:
输入: 1
输出: [0, 1]
样例 2:
- 输入: 2
输出: [0, 1, 3, 2]
解释:
0 - 00
1 - 01
3 - 11
2 - 10
挑战
O(2n) 时间复杂度。
解析
grayCode = function (n) {
if(n === 0) return [0]
list = []
a = 0
for (i = 0; i < (2 << (n - 1)); i++) {
a = i ^ (i / 2)
list.push(a)
}
return list
}