1806. Minimum Number of Operations to Reinitialize a Permutation
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
, thenarr[i] = perm[i / 2]
. - If
i % 2 == 1
, thenarr[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.
Example 1:
Input: n = 2 Output: 1 Explanation: perm = [0,1] initially. After the 1st operation, perm = [0,1] So it takes only 1 operation.
Example 2:
Input: n = 4 Output: 2 Explanation: perm = [0,1,2,3] initially. After the 1st operation, perm = [0,2,1,3] After the 2nd operation, perm = [0,1,2,3] So it takes only 2 operations.
Example 3:
Input: n = 6 Output: 4
Constraints:
2 <= n <= 1000
n
ββββββ is even.
Solutions
Solution 1: Find Pattern + Simulation
We observe the change pattern of the numbers and find that:
- The even-indexed numbers of the new array are the numbers in the first half of the original array in order;
- The odd-indexed numbers of the new array are the numbers in the second half of the original array in order.
That is, if the index \(i\) of a number in the original array is in the range [0, n >> 1)
, then the new index of this number is i << 1
; otherwise, the new index is (i - (n >> 1)) << 1 | 1
.
In addition, the path of number movement is the same in each round of operation. As long as a number (except for numbers \(0\) and \(n-1\)) returns to its original position, the entire sequence will be consistent with the previous one.
Therefore, we choose the number \(1\), whose initial index is also \(1\). Each time we move the number \(1\) to a new position, until the number \(1\) returns to its original position, we can get the minimum number of operations.
The time complexity is \(O(n)\), and the space complexity is \(O(1)\).
1 2 3 4 5 6 7 8 9 10 11 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|