博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode:Gray Code
阅读量:7055 次
发布时间:2019-06-28

本文共 934 字,大约阅读时间需要 3 分钟。

一、     题目

        输入一个数n,将这个数的格雷码输出。

        比如:输入2,返回{0,1,3,2}

二、     分析

     1、二进制码->格雷码(编码):从最右边一位起。依次将每一位与左边一位异或(XOR),作为相应格雷码该位的值,最左边一位不变(相当于左边是0);(相应以上代码的for循环里的循环体)。

          格雷码->二进制码(解码):从左边第二位起,将每位与左边一位解码后的值异或,作为该位解码后的值(最左边一位依旧不变)。

2、找规律

       以3位格雷码为例。

         0 0 0

         0 0 1

         0 1 1

         0 1 0

        1 1 0

        1 1 1

        1 0 1

        1 0 0

能够看到第n位的格雷码由两部分构成,一部分是n-1位格雷码,再加上1<<(n-1)和n-1位格雷码的逆序的和。

例如以下:

       (0)00

      (0)01

      (0)11

      (0)10

        100+010=110

        100+011=111

        100+001=101

        100+000=100

 

class Solution {public:    vector
grayCode(int n) { int num = 1<
ans; ans.reserve(num); for(int i=0;i
>1)); return ans; }};

class Solution {public:    vector
grayCode(int n) { vector
ans; if(n==0){ ans.push_back(0); return ans; } vector
res = grayCode(n-1); int len = res.size()-1; int adder = 1<<(n-1); for(int i=len;i>=0;i--){ res.push_back(adder+res[i]); } return res; }};

转载地址:http://jzlol.baihongyu.com/

你可能感兴趣的文章
deep learning的使用观点
查看>>
《人民日报》刊文 | 王坚博士谈“云计算之后,我为什么要做城市大脑?”
查看>>
java版云笔记(七)之事务管理
查看>>
阿里云Tech Insight,云上技术者的任意门
查看>>
一次曲折的下载经历
查看>>
岌岌可危 中立之争决定云计算未来
查看>>
一些DX的资源
查看>>
使用NGINX Plus负载均衡Kubernetes服务
查看>>
iOS app设备日志查看
查看>>
阿里云游戏服务器价格-阿里云游戏服务器多少钱
查看>>
Gigamon全面产品系列增强技术领先优势
查看>>
免费申请基于飞腾硬件平台上的麒麟云试用!
查看>>
Linux内核通用队列的使用笔记(读linux内核设计与实现)
查看>>
摩拜AI大数据平台“魔方”发布黄金周骑行预测,加州开发 AI 智能公寓
查看>>
javascript的队列,优先队列,循环队列
查看>>
企业加快云计算应用的十大理由
查看>>
ACID
查看>>
centOS6.4 oracle11g RAC搭建
查看>>
ZABBIX作集中式NGINX性能监控的注意要点
查看>>
《数据虚拟化:商务智能系统的数据架构与管理》一 2.9 报告和分析的新形式...
查看>>