给你两个整数 n
和 start
。你的任务是返回任意 (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 |
分析:
1 | 格雷码:(0,1,2,,...,2^n-1) 排列为一圈,相邻两项之间只有一位不同 |
代码
1 | class Solution { |
1 | func circularPermutation(n int, start int) []int { |
[原题链接](1238. 循环码排列 - 力扣(Leetcode))
[相似题目](89. 格雷编码 - 力扣(Leetcode))