题目的意思就是将十进制转换成格雷码
首先将二进制转换成格雷码
根据此图可以看出二进制的第i和第i+1位异或为格雷码的第i+1位,对于给定的十进制数x,其(x>>1)相当于二进制向右移动一位
将 x^(x>>1)刚好能按照上述方式完成异或,故结果为x的格雷码
class Solution { public: vector<int> grayCode(int n) { vector<int> res; for(int x = 0 ; x< (1<<n);++ x) res.push_back(x^(x>>1)); return res; } };