Leetcode Gray Code

题目的意思就是将十进制转换成格雷码

首先将二进制转换成格雷码

根据此图可以看出二进制的第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;
    }
};
原文地址:https://www.cnblogs.com/xiongqiangcs/p/3823442.html