Skip to main content
Back to problems
#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)
LeetCode
solution.rs
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()
  }
}