本文共 472 字,大约阅读时间需要 1 分钟。
格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个位数的差异。
给定一个代表编码总位数的非负整数 n,打印格雷码序列。格雷码序列必须以 0 开头。
例如,给定 n = 2,返回 [0,1,3,2]
。其格雷编码是:
00 - 001 - 111 - 310 - 2
说明:
对于给定的 n,其格雷编码的顺序并不唯一。
例如 [0,2,3,1]
也是一个有效的格雷编码顺序。
思路:n位元的格雷码可以从n-1位元的格雷码以上下镜射后加上新位元的方式快速的得到,如下图所示一般。
class Solution {public: vector grayCode(int n) { vector re{0}; for(int k=0; k=0; --i){ re.push_back(pow(2, k) + re[i]); } } return re; }};
转载地址:http://reabi.baihongyu.com/