題目的意思就是將十進位制轉換成格雷碼
首先將二進位制轉換成格雷碼
根據此圖可以看出二進位制的第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; } };