当前位置: 首页 > wzjs >正文

上海网站建设做物流一常德seo快速排名

上海网站建设做物流一,常德seo快速排名,商业网站建设 武汉,wordpress制作大型网站题目 思路 首先我们先看一下格雷编码的一些情况,为了一会方便理解,我们看它的二进制情况。 当n1时,输出[0,1] 当n2时,输出[00,01,11,10] 当n3时,输出[000, 001, 011, 010, 110, 111, 101, 100] 我们可…

题目

思路

首先我们先看一下格雷编码的一些情况,为了一会方便理解,我们看它的二进制情况。

当n=1时,输出[0,1]

当n=2时,输出[00,01,11,10]

当n=3时,输出[000, 001, 011, 010, 110, 111, 101, 100]

我们可以看到2的前半部分就是1,3的前半部分就是2。

所以我们只需要求后半部分即可,

格雷码的生成有一个递推公式。已知n-1位的格雷码,如何得到n位的?方法是,首先将n-1位的格雷码列表逆序,然后每个数的最高位设为1,然后拼接到原来的列表后面。例如,n=1的格雷码是0,1。n=2的时候,将之前的逆序是1,0,然后前面加上最高位1,变成11,10,然后拼接到原来的00,01后面,得到00,01,11,10,对应十进制的0,1,3,2。

总结一下,就是:

  • 将k-1位序列逆序。

  • 对逆序后的每个元素,在最高位(即第k-1位)添加1。

  • 将新生成的序列追加到原序列之后。

代码详解

首先,定义一个ans用来存储格雷码序列。

ans.reserve是将ans的capacity容量扩大,n位格雷码有2^n个序列,所以就给他2^n的空间。

至于里面为什么是1<<n。

它的意思就是把1向左移动n位

n=1, 移动完:10              2^1=2

n=2, 移动完:100            2^2=4

n=3, 移动完:1000          2^3=8

接着将里面的变量初始化为0。

for(int i=1;i<=n;i++) 这个是用来逐位构造格雷码的,对于n=1,只会循环一次

int m =ans.size();

这个是求ans现有的元素数

for(int j=m-1;j>=0;j--){ans.push_back(ans[j] | (1 << (i-1)));}

这个就是对里面现有的数进行倒序访问。

ans.push_back(ans[j] | (1 << (i-1)));

这个是1左移i-1位与原有的数相或。如果i=1,就是1左移0位,其实他就是用来将第i-1位设为1,并添加到结果中。

当n=1时,输出[0,1]

当n=2时,输出[00,01,11,10]

对于这个例子,n=2就是将第二位设为1,分别是11,10并添加到序列中,因为是逆序,所以先给1加,后给0加。

最后返回ans即可。

代码

class Solution {
public:vector<int> grayCode(int n) {vector<int> ans;ans.reserve(1<<n);ans.push_back(0);for(int i=1;i<=n;i++){int m =ans.size();for(int j=m-1;j>=0;j--){ans.push_back(ans[j] | (1 << (i-1)));}}return ans;}
};

http://www.dtcms.com/wzjs/313553.html

相关文章:

  • 汇鑫网站建设便捷网址链接生成器
  • 网站建设服务开发长春网站优化服务
  • 凤凰自媒体平台注册seo在线优化工具 si
  • 修车店怎么做网站国外浏览器搜索引擎入口
  • 企业网站建设找智恒网络网络营销七个步骤
  • 做网站是用什么语言的舆情分析
  • 武汉模板建站系统百度网盘网页登录入口
  • 备案上个人网站和企业网站的区别潍坊网站模板建站
  • 营销型网站建设区别广州发布紧急通知
  • 专题活动是在官方网站还是在其他网站做阳泉seo
  • 衡阳网站搜索引擎优化建立网站怎么搞
  • 台州网站如何制作初学seo网站推广需要怎么做
  • 广州网站建设联系电话seo推广的方法
  • 网站怎么做关键词怎么优化seo百度站长工具查询
  • 国内知名建筑设计公司seo外链代发
  • 做电子商务系统网站建设悟空建站seo服务
  • 网站子页怎么做 视频株洲发布最新通告
  • 广州网站建设公seo推广公司招商
  • 中文网站的英文排名app
  • 做鸡尾酒的网站惠州短视频seo
  • 高埗镇网站建设公司总推荐榜总点击榜总排行榜
  • 网站建设 山西百度关键词排名点击
  • 襄阳seo站内优化360站长平台
  • 深圳关键词seo中国seo关键词优化工具
  • 网站开发的意义和目的百度搜索推广平台
  • 笔记本做网站要什么好上海百度推广排名
  • 文明网i中国精神文明建设门户网站赣州seo外包怎么收费
  • php动态网站开发案例教程电子版百度客服
  • 做招商网站seo优化网站网页教学
  • 个人备案的网站竞价排名做不了农产品网络营销方案