Place first N natural numbers at indices not equal to their values in an array

• Difficulty Level : Medium
• Last Updated : 15 Oct, 2021

Given an integer N(N > 1), the task is to arrange all integers from the range [1, N] in an array such that none of the elements are same as the index (1-based indexing) in which they are present in the array.

Examples:

Input: N = 2
Output: 2 1
Explanation: Only possible arrangement of an array of size 2 is 2 1.

Input: N=5
Output: 2 1 5 3 4
Explanation: One possible arrangement of an array of size 5 is 2 1 5 3 4l.

Approach: The simplest idea is to place N at the first index and place the remaining elements [1, N – 1] in the remaining indices.

Below is the implementation of the above approach:

C++

 // C++ program for the above approach#include using namespace std; // Function to place first N natural// numbers in an array such that none// of the values are equal to its indicesvoid generatepermutation(int N){   // Stores the required array    vector answer;     // Place N at the first position    answer.push_back(N);     // Iterate the range [1, N)    for (int i = 1; i < N; i++)    {        // Append elements to the sequence        answer.push_back(i);    }     // Print the sequence    for(int i:answer) cout << i << " "; } // Driver Codeint main(){  int N = 4;  generatepermutation(N);   return 0;} // This code is contributed by mohit kumar 29.

Java

 // Java program for the above approachimport java.util.*;class GFG{ // Function to place first N natural// numbers in an array such that none// of the values are equal to its indicesstatic void generatepermutation(int N){   // Stores the required array    Vector answer = new Vector();     // Place N at the first position    answer.add(N);     // Iterate the range [1, N)    for (int i = 1; i < N; i++)    {        // Append elements to the sequence        answer.add(i);    }     // Print the sequence    for(int i:answer) System.out.print(i+ " ");} // Driver Codepublic static void main(String[] args){  int N = 4;  generatepermutation(N);}} // This code is contributed by 29AjayKumar

Python3

 # Python program for the above approach # Function to place first N natural# numbers in an array such that none# of the values are equal to its indicesdef generatepermutation(N):   # Stores the required array    answer = []     # Place N at the first position    answer.append(N)     # Iterate the range [1, N)    for i in range(1, N):         # Append elements to the sequence        answer.append(i)     # Print the sequence    print(*answer)  # Driver CodeN = 4generatepermutation(N)

C#

 // C# program for the above approachusing System;class GFG{ // Function to place first N natural// numbers in an array such that none// of the values are equal to its indicesstatic void generatepermutation(int N){     // Stores the required array    int[] answer = new int[N];     // Place N at the first position    answer = N;     // Iterate the range [1, N)    for (int i = 1; i < N; i++)    {               // Append elements to the sequence        answer[i] = i;    }     // Print the sequence    foreach(int i in answer) Console.Write(i+ " ");} // Driver Codestatic public void Main (){  int N = 4;  generatepermutation(N);}} // This code is contributed by Dharanendra L V

Javascript


Output
4 1 2 3

Time Complexity: O(N)
Auxiliary Space: O(1)

My Personal Notes arrow_drop_up