Minimum Number of Operations to Reinitialize a Permutation - Problem

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.

Input & Output

Example 1 — Small Even Number
$ Input: n = 2
Output: 1
💡 Note: Initial: [0,1]. After 1 operation: [0,1] (back to original). Answer: 1 operation.
Example 2 — Medium Size
$ Input: n = 4
Output: 2
💡 Note: Initial: [0,1,2,3]. After 1 op: [0,2,1,3]. After 2 ops: [0,1,2,3] (back to original). Answer: 2 operations.
Example 3 — Larger Size
$ Input: n = 6
Output: 4
💡 Note: Initial: [0,1,2,3,4,5]. Takes 4 operations to return to this exact permutation.

Constraints

  • 2 ≤ n ≤ 1000
  • n is even

Visualization

Tap to expand
Reinitialize Permutation - Single Element Tracking INPUT Initial Permutation (n=2) 0 i=0 1 i=1 perm = [0, 1] Operation Rules: if i%2==0: arr[i]=perm[i/2] if i%2==1: arr[i]=perm[n/2+(i-1)/2] n = 2 ALGORITHM STEPS 1 Track position 1 Start with pos=1 2 Apply transformation pos = (2*pos) % (n-1) 3 Count operations Increment counter 4 Check if pos==1 Return when cycle done Simulation (n=2): Initial: pos = 1 Op 1: pos = (2*1)%(2-1) = 2 % 1 = 0 Special case n=2: return 1 FINAL RESULT Before Operation: 0 1 After 1 Operation: 0 1 OK Back to initial state! Output: 1 Key Insight: Instead of tracking the entire array, we only track where position 1 moves. The formula pos = (2 * pos) % (n-1) simulates the shuffle. Count operations until pos returns to 1. For n=2, only 1 operation is needed since swapping two elements returns to original state. TutorialsPoint - Minimum Number of Operations to Reinitialize a Permutation | Single Element Tracking Approach
Asked in
Google 15 Amazon 12 Microsoft 8
28.0K Views
Medium Frequency
~15 min Avg. Time
856 Likes
Ln 1, Col 1
Smart Actions
💡 Explanation
AI Ready
💡 Suggestion Tab to accept Esc to dismiss
// Output will appear here after running code
Code Editor Closed
Click the red button to reopen