WEI-CHENG CHEN

說明

給一個 n,要做出他的格雷編碼(gray code)(長度會為 2 的 n 次方)

e.g. n = 2:00、01、11、10

e.g. n = 3:000、001、011、010、110、111、101、100

e.g. n = 4:0000、0001、0011、0010、0110、0111、0101、0100、1100、1101、1111、1100、1010、1011、1001、1000

至於【2 的 n 次方】實現方式:1 << n(就是看要把 1 左移幾位)

解法

格雷編碼的位元操作原理為:Gray(i) = i ^ (i >> 1)

class Solution {
public:
    vector<int> grayCode(int n) {
        vector<int> ans;
        for(int i=0;i<(1 << n);i++){
            int temp = i ^ (i >> 1);
            ans.push_back(temp);
        }
        return ans;
    }
};