[腾讯]生成格雷码

Posted 草莓鲍鲍

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[腾讯]生成格雷码相关的知识,希望对你有一定的参考价值。

时间限制:3秒 空间限制:32768K 热度指数:24655
本题知识点: 递归

题目描述

在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同, 则称这种编码为格雷码(Gray Code),请编写一个函数,使用递归的方法生成N位的格雷码。

给定一个整数n,请返回n位的格雷码,顺序为从0开始。

测试样例:
1
返回:["0","1"]

思路:

class GrayCode {
public:
    vector<string> getGray(int n) {
        // write code here
        vector<string> gray;  
        if(n==1)
            {
               gray.push_back("0");
               gray.push_back("1");
            
           return gray;
        }
        else{
                vector<string> gray1;
                gray1=getGray(n-1);
                
                int graySize=gray1.size();
                vector<string> gray2;
                
                for(int i=0;i<graySize;i++)
                    {
                        if(i%2==0)
                            {
                               gray2.push_back(gray1[i]+"0");
                               gray2.push_back(gray1[i]+"1");
                        }
                    else{
                          gray2.push_back(gray1[i]+"1");
                          gray2.push_back(gray1[i]+"0");
                    }
                }
            return gray2;
        }
            
    }
};
 

以上是关于[腾讯]生成格雷码的主要内容,如果未能解决你的问题,请参考以下文章

腾讯编程

递归实现生成Grey码

#yyds干货盘点# LeetCode 腾讯精选练习 50 题:格雷编码

LeetCode 格雷码序列的生成

递归生成格雷码

格雷码生成