• [腾讯]生成格雷码


    时间限制: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;
            }
                
        }
    };
     
  • 相关阅读:
    ubuntu16.04自动删除内核
    禅道服务数据的迁移
    k8s常用命令3
    使用logstash迁移es集群数据
    es集群迁移脚本
    helm常用命令1
    【操作】python2升级到python3
    【推荐】构建脚本之shell编写规范
    【推荐】linux使用zip命令
    Sublime使用大全
  • 原文地址:https://www.cnblogs.com/bxyan/p/6925780.html
Copyright © 2020-2023  润新知