LintCode 411. 格雷编码 JavaScript算法

描述

格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个二进制的差异。

给定一个非负整数 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
}

运行结果

在这里插入图片描述

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/SmallTeddy/article/details/108614813