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

辽宁工程建设工程信息网站手机版网站嵌入代码

辽宁工程建设工程信息网站,手机版网站嵌入代码,广州市地铁最新消息,深圳网站备案时间题目链接 Leetcode.1238 循环码排列 Rating : 1775 题目描述 给你两个整数 n和 start。你的任务是返回任意 (0,1,2,,...,2^n-1)的排列 p,并且满足: p[0] startp[i]和 p[i1]的二进制表示形式只有一位不同p[0]和 p[2^n -1]的二进制表示形式也…

题目链接

Leetcode.1238 循环码排列 Rating : 1775

题目描述

给你两个整数 nstart。你的任务是返回任意 (0,1,2,,...,2^n-1)的排列 p,并且满足:

  • p[0] = start
  • p[i]p[i+1]的二进制表示形式只有一位不同
  • p[0]p[2^n -1]的二进制表示形式也只有一位不同

示例 1:

输入:n = 2, start = 3
输出:[3,2,0,1]
解释:这个排列的二进制表示是 (11,10,00,01)
所有的相邻元素都有一位是不同的,另一个有效的排列是 [3,1,0,

示例 2:

输出:n = 3, start = 2
输出:[2,6,7,5,4,0,1,3]
解释:这个排列的二进制表示是 (010,110,111,101,100,000,001,011)

提示:

  • 1<=n<=161 <= n <= 161<=n<=16
  • 0<=start<2n0 <= start < 2^n0<=start<2n

分析:
根据题目要求的 二进制表示形式只有一位不同就表明了我们要构造的就是 格雷码。学过 数字电路 的同学可能对它还有印象。

对于这样的 从高位到低位 的二进制数 B=Bn−1Bn−2...B3B2B1B0B = B_{n-1}B_{n-2}...B_{3}B_{2}B_{1}B_{0}B=Bn1Bn2...B3B2B1B0,有他对应的格雷码 G=Gn−1Gn−2...G3G2G1G0G = G_{n-1}G_{n-2}...G_{3}G_{2}G_{1}G_{0}G=Gn1Gn2...G3G2G1G0

二进制数 转换成 格雷码 的规则如下:

  • 对于最高位保留,即 Gn−1=Bn−1G_{n-1} = B_{n-1}Gn1=Bn1
  • 除了最高位的其他位,Gi=Bi+1⊕BiG_{i} = B_{i+1}\oplus B_{i}Gi=Bi+1Bi

所以我们可以先预处理出所有的[0,2^n)格雷码,最后再按照 start分成两段拼起来即可。

时间复杂度:O(2n)O(2^n)O(2n)

C++代码:

class Solution {
public:vector<int> circularPermutation(int n, int start) {vector<int> grey;int s = 0;for(int i = 0;i < (1 << n);i++){//x 即为 二进制数i 的格雷码int x = i ^ (i >> 1);//由 s 将 [0,2^n) 分为两段,[s,2^n) [0,s)if(x == start) s = i;grey.push_back(x);}vector<int> ans;//先加上以 s 开头的那段 即 [s,2^n)for(int i = s;i < (1 << n);i++) ans.push_back(grey[i]);//再拼接上这一段  [0,s)for(int i = 0;i < s;i++) ans.push_back(grey[i]);return ans;}
};

Java代码:

class Solution {public List<Integer> circularPermutation(int n, int start) {List<Integer> grey = new ArrayList<>();int s = 0;for(int i = 0;i < (1 << n);i++){int x = i ^ (i >> 1);if(x == start) s = i;grey.add(x);}List<Integer> res = new ArrayList<>();for(int i = s;i < (1 << n);i++) res.add(grey.get(i));for(int i = 0;i < s;i++) res.add(grey.get(i));return res;}
}
http://www.yayakq.cn/news/855395/

相关文章:

  • 佛山市住房和城乡建设局网站泸州网站seo
  • 做网站排名费用多少jquery 做网站
  • 怎样给网站做seo优化注册完域名 如何做网站
  • 公司做网站的法律依据网站加seo需要多少钱
  • 网站网页设计原则seo顾问收费
  • 网站建站的书籍建设电商网站的总结
  • 电脑手机自适应网站的建设wordpress justnews下载
  • 中国核工业第五建设有限公司是国企吗太原百度搜索排名优化
  • 哪里可以制作网站站长工具查询官网
  • 厦门网站制作公司网站开发+自动生成缩略图
  • 中国建设教育协会网站重庆优化网站推广
  • 网站运营做网页设计广元网站建设
  • 代做课件的网站网站icp证明
  • 方便做简笔画的网站或软件wordpress 2018编辑器
  • 网站建设 找vx cp5173c 做网站设计
  • 网站制作上海wordpress移动端显示图片
  • 疯狂购网站开发商爱奇艺做视频网站的
  • 专业北京网站建设公司排名网站制作公司数据库管理排名
  • 免费网站建设图书下载微信网站开发哪家好
  • 企业网站怎样做优化wordpress 添加产品
  • 上传到网站网站右侧二维码
  • 做轻奢品的电商网站中国代理网官网
  • 莱西大型网站建设移动网站设计上机考试
  • 绍兴本地网站建设怎么做优化
  • 湖南住房和城乡建设网站手机网站改版公司
  • 深圳住 建设局网站首页基于asp的医疗网站开发
  • 外贸网站搜索引擎优化方法烟台网站建设的公司
  • 设计师怎么做响应式网站网站有源代码如何做seo
  • 网站建站服务的公司襄阳市作风建设年 网站
  • 推广普通话在哪一年网站优化建设郑州