当前位置: 首页 > 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/500360/

相关文章:

  • 网站推广是网站建设完成之后的长期工作。win2012 iis 新建网站
  • 深圳建站的公司关于建设网站的报告书
  • 章丘网站建设企业建站 炫酷模板
  • 如何查看网站页面大小天元建设集团有限公司北京分公司
  • 最好的网站建设前端开发兼职
  • 在哪个网站可以找到做国珍的人纪念册设计制作
  • 淮安市建设工程初级职称申报网站做简历有什么网站
  • 优秀网站设计的标准第五届中国国际进口博览会召开时间
  • 昆明网站建设在河科技庆阳网站制作
  • 网站建设市场介绍网站怎么优化 优帮云
  • 在线代理浏览网站免费广州万户网络怎么样
  • 如何建立一个网站要多少钱北京市建设工程招标网站
  • 洛阳恒凯做的网站有哪些跨境电商怎么注册开店
  • 淘客客怎么做自己的网站移动互联应用技术
  • 福州网站开发私人最新手机发布会
  • 类似淘宝网站建设有哪些模板微信开发者模式在哪打开
  • 国家建设部标准官方网站什邡市建设局门户网站
  • 网站建设网页模板广西建设领域证书查询官方网站
  • 了解营销型企业网站建设品牌建设三年行动计划
  • 陕西省建设厅证网站号多少安康市滴滴公司电话
  • 网站开发技术培训移动端快速建站
  • 沐川移动网站建设深圳科技网络有限公司
  • 网站的策划书仿做静态网站多少钱
  • logo网站设计织梦网站地图模板样式
  • 自己做网站大概需要多少钱上海千途网站建设
  • 洛阳网站建设好做不备案的域名拿来做别的网站
  • 在谷歌上做英文网站网站建设套餐怎么样
  • 成都哪家网站建设好上海建网站公司排名
  • 品牌型网站建设哪里好怎么创建自己的官网
  • 做网站的背景图片要多大龙信建设集团有限公司网站