g1201_1300.s1238_circular_permutation_in_binary_representation.Solution Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of leetcode-in-java21 Show documentation
Show all versions of leetcode-in-java21 Show documentation
Java-based LeetCode algorithm problem solutions, regularly updated
package g1201_1300.s1238_circular_permutation_in_binary_representation;
// #Medium #Math #Bit_Manipulation #Backtracking
// #2022_03_12_Time_4_ms_(100.00%)_Space_49.9_MB_(90.59%)
import java.util.ArrayList;
import java.util.List;
/**
* 1238 - Circular Permutation in Binary Representation\.
*
* Medium
*
* 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.
*
* **Example 1:**
*
* **Input:** n = 2, start = 3
*
* **Output:** [3,2,0,1]
*
* **Explanation:** The binary representation of the permutation is (11,10,00,01). All the adjacent element differ by one bit. Another valid permutation is [3,1,0,2]
*
* **Example 2:**
*
* **Input:** n = 3, start = 2
*
* **Output:** [2,6,7,5,4,0,1,3]
*
* **Explanation:** The binary representation of the permutation is (010,110,111,101,100,000,001,011).
*
* **Constraints:**
*
* * `1 <= n <= 16`
* * `0 <= start < 2 ^ n`
**/
public class Solution {
public List circularPermutation(int n, int start) {
List l1 = new ArrayList<>();
for (int i = 0; i < (1 << n); i++) {
l1.add(start ^ (i ^ (i >> 1)));
}
return l1;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy