首页 > 其他分享 >1238.循环码排列

1238.循环码排列

时间:2023-06-13 16:47:48浏览次数:33  
标签:排列 示例 二进制 1238 循环码 start

问题描述

1238. 循环码排列 (Medium)

给你两个整数 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]

示例 2:

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

提示:

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

解题思路

参照89.格雷编码,只需要将得到的结果再与start按位异或就好了,因为x ^ 0 = x对任意x恒成立。

Code

class Solution {
  public:
    vector<int> circularPermutation(int n, int start) {
        vector<int> res(1 << n, 0);
        for (int i = 0; i < res.size(); i++) {
            res[i] = i ^ (i / 2) ^ start;
        }
        return res;
    }
};

标签:排列,示例,二进制,1238,循环码,start
From: https://www.cnblogs.com/zwyyy456/p/17478029.html

相关文章

  • LeetCode 47. 全排列 II
    classSolution{public:vector<vector<int>>res;vector<int>path;boolst[10];voiddfs(vector<int>nums,intu){if(u==nums.size()){res.push_back(path);return;......
  • 排列熵,多尺度排列熵,层次排列熵,时移多尺度排列熵,复合多尺度排列熵,精细复合多尺度排列熵
    排列熵,多尺度排列熵,层次排列熵,时移多尺度排列熵,复合多尺度排列熵,精细复合多尺度排列熵(Matlab版)获取链接:https://mbd.pub/o/works/449707包括:排列熵(PermutationEntropy),多尺度排列熵(MultiscalePermutationEntropy),层次排列熵(HierarchicalPermutationEntropy),复合多尺度排列......
  • Python+matplotlib设置坐标轴文本标签排列方式
    在默认情况下,y轴的文本标签方向是下面这样的:有时候这样子不方便看,我们可能希望文字水平显示并且每行显示一个字,如下图:这时可以使用ylabel()函数的rotation属性设置为'horizontal'并通过手动插入换行符来实现。参考代码如下:公众号“Python小屋”x......
  • js 实现排列组合
    组合:(不考虑顺序,无重复)//测试用例letdataArr=[1,2,3,4,5];functioncombination(dataArr,remainNum,currentArr){if(remainNum===0){console.log(...currentArr);return;}for(leti=0;i<dataArr.length+1-remainNum;i++){......
  • el-radio默认水平排列变垂直排列
    el-radio默认是水平排列的,在项目里面是竖直排列,我用块级元素div嵌套不起作用,最后的解决方法是:1:deep(.el-radio-group){2display:block;3}45:deep(.el-radio){6display:block;7} ......
  • element的el-radio垂直排列
    element里面的el-radio是水平排列的,在项目里面需要竖直排列的效果,我给每个el-radio都加了块级作用域没生效,最后的解决方法是://单选框:deep(.el-radio){display:block;} ......
  • P8376 [APIO2022] 排列
    一种比较容易写的构造方案考虑直接二进制拆分,发现在原排列的基础上,在开头填上更大的数,方案数+1,在末尾上填上更大的数,方案数*2,直接按照填数从小到大顺序填入,长度为logk+popcount(k),期望得分91分1#include<bits/stdc++.h>23usingnamespacestd;45vector<int......
  • 【python练习】排列
    题目给定一个整数n,将数字1∼n排成一排,将会有很多种排列方法。现在,请你按照字典序将所有的排列方法输出。输入格式共一行,包含一个整数n。输出格式按字典序输出所有排列方案,每个方案占一行。代码n=int(input())path=[0foriinrange(n)]used=[Falseforiinrange(n)]de......
  • wukong引擎源码分析之索引——part 1 倒排列表本质是有序数组存储
    searcher.IndexDocument(0,types.DocumentIndexData{Content:"此次百度收购将成中国互联网最大并购"})engine.go中的源码实现://将文档加入索引////输入参数://docId标识文档编号,必须唯一//data见DocumentIndexData注释////注意://1.这个函数是线程安全......
  • 排列算法问题
    |类循环排列#treeDFSdefloop_permutation(arr,depth,path,result):ifdepth==len(arr):result.append(list(path))returnforninarr:path.append(n)loop_permutation(arr,depth+1,path,result)path.pop(......