Back to all solutions
#1806 - Minimum Number of Operations to Reinitialize a Permutation
Problem Description
You are given an even integer n. You initially have a permutation perm of size n where perm[i] == i (0-indexed).
In one operation, you will create a new array arr, and for each i:
- If i % 2 == 0, then arr[i] = perm[i / 2].
- If i % 2 == 1, then arr[i] = perm[n / 2 + (i - 1) / 2].
You will then assign arr to perm.
Return the minimum non-zero number of operations you need to perform on perm to return the permutation to its initial value.
Solution
/**
* @param {number} n
* @return {number}
*/
var reinitializePermutation = function(n) {
let currentIndex = 1;
let result = 0;
do {
if (currentIndex % 2 === 0) {
currentIndex = currentIndex / 2;
} else {
currentIndex = n / 2 + (currentIndex - 1) / 2;
}
result++;
} while (currentIndex !== 1);
return result;
};