#1238
Medium Algorithms Circular permutation in binary representation
Math Backtracking Bit Manipulation
72.6% acceptance
Feb 25, 2026
441
194
Given 2 integers n and start. Your task is return any permutation p of (0,1,2.....,2^n -1) such that :
p[0] = start
p[i] and p[i+1] differ by only one bit in their binary representation.
p[0] and p[2^n -1] must also differ by only one bit in their binary representation.
Solution
Rust
Time O(1)
Space O(1)
impl Solution {
pub fn circular_permutation(n: i32, start: i32) -> Vec<i32> {
let size = 1 << n;
(0..size).map(|i| start ^ i ^ (i >> 1)).collect()
}
}