LeetCode89. 格雷编码

找规律,格雷码的一种生成方法如下图。对于n先将n-1的所有格雷码复制一下,然后轴对称所有n-1的格雷码,然后前半部分补0,后半部分补1,
就得到了n的格雷码。

class Solution {
public:
    vector<int> grayCode(int n) {
        vector<int> res(1, 0);      
        while(n--) {                        //经过n次复制+轴对称+补0补1操作,得到的就是n的格雷码
            for(int i = res.size() - 1; i >= 0; --i) {      //轴对称操作
                res[i] *= 2;                                //补0,相当于乘2(因为是二进制串)
                res.push_back(res[i] + 1);                  //补1,相当于乘2的数再加1
            }
        }
        return res;
    }
};
posted @ 2020-07-18 00:19  machine_gun_lin  阅读(120)  评论(0编辑  收藏  举报