位运算规律——格雷编码

Posted C+++++++++++++++++++

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了位运算规律——格雷编码相关的知识,希望对你有一定的参考价值。

题目

解题分析

这里挂上原图的b站up主讲解视频链接:视频讲解

我觉得应该看这张图,然后就能了解其中的规律了吧。

解题代码

class Solution 
public:
    vector<int> grayCode(int n) 
        vector<int> ret;
        ret.reserve(1 << n);    //TODO 提前分配好底层的内存为 2^n 个
        ret.push_back(0);       //TODO 第一个一定是0
        for (int i = 1; i <= n; i++) 
            int m = ret.size();
            for (int j = m - 1; j >= 0; j--) //TODO 根据之前的答案倒序镜像得到新的结果
                ret.push_back(ret[j] | (1 << (i - 1)));
            
        
        return ret;
    
;

以上是关于位运算规律——格雷编码的主要内容,如果未能解决你的问题,请参考以下文章

LC.89. 格雷编码(规律)

LeetCode 格雷码序列的生成

构造N位格雷码(递归,面向对象)

51nod.3395n位格雷码(位运算)

51nod.3395n位格雷码(位运算)

51nod.3395n位格雷码(位运算)