逆置换

给定一个从1到n的整数大小为n的数组,我们需要找到该数组的逆置换。 逆置换 是一种排列,通过在数组中元素值指定的位置插入元素的位置,可以得到这种排列。为了更好地理解,请考虑下面的例子: 假设我们在数组中的位置3处发现了元素4,然后在反向排列中,我们在位置4(元素值)处插入3(元素4在数组中的位置)。 基本上,逆置换是一种置换,其中每个数及其所占位置的数都是交换的。 数组应包含从1到数组大小的元素。 例1:

null
Input  = {1, 4, 3, 2}Output = {1, 4, 3, 2}

在这里,对于元素1,我们从arr1插入1的位置,即在arr2的位置1插入1。对于arr1中的元素4,我们在arr2中的位置4处从arr1插入2。同样,对于arr1中的元素2,我们在arr2中插入2的位置,即4。

Example 2 :Input  = {2, 3, 4, 5, 1}Output = {5, 1, 2, 3, 4}

在本例中,对于元素2,我们在位置2处插入arr1中arr2的位置2。类似地,我们发现了其他元素的逆排列。 考虑具有元素1至n的阵列ARR。 方法1: 在这种方法中,我们一个接一个地获取元素,并按递增顺序检查元素,然后打印元素的位置。

C++

// Naive CPP Program to find inverse permutation.
#include <bits/stdc++.h>
using namespace std;
// C++ function to find inverse permutations
void inversePermutation( int arr[], int size) {
// Loop to select Elements one by one
for ( int i = 0; i < size; i++) {
// Loop to print position of element
// where we find an element
for ( int j = 0; j < size; j++) {
// checking the element in increasing order
if (arr[j] == i + 1) {
// print position of element where
// element is in inverse permutation
cout << j + 1 << " " ;
break ;
}
}
}
}
// Driver program to test above function
int main() {
int arr[] = {2, 3, 4, 5, 1};
int size = sizeof (arr) / sizeof (arr[0]);
inversePermutation(arr, size);
return 0;
}


JAVA

// Naive java Program to find inverse permutation.
import java.io.*;
class GFG {
// java function to find inverse permutations
static void inversePermutation( int arr[], int size)
{
int i ,j;
// Loop to select Elements one by one
for ( i = 0 ; i < size; i++)
{
// Loop to print position of element
// where we find an element
for ( j = 0 ; j < size; j++)
{
// checking the element in
// increasing order
if (arr[j] == i + 1 )
{
// print position of element
// where element is in inverse
// permutation
System.out.print( j + 1 + " " );
break ;
}
}
}
}
// Driver program to test above function
public static void main (String[] args)
{
int arr[] = { 2 , 3 , 4 , 5 , 1 };
int size = arr.length;
inversePermutation(arr, size);
}
}
// This code is contributed by vt_m


Python3

# Naive Python3 Program to
# find inverse permutation.
# Function to find inverse permutations
def inversePermutation(arr, size):
# Loop to select Elements one by one
for i in range ( 0 , size):
# Loop to print position of element
# where we find an element
for j in range ( 0 , size):
# checking the element in increasing order
if (arr[j] = = i + 1 ):
# print position of element where
# element is in inverse permutation
print (j + 1 , end = " " )
break
# Driver Code
arr = [ 2 , 3 , 4 , 5 , 1 ]
size = len (arr)
inversePermutation(arr, size)
#This code is contributed by Smitha Dinesh Semwal


C#

// Naive C# Program to find inverse permutation.
using System;
class GFG {
// java function to find inverse permutations
static void inversePermutation( int []arr, int size)
{
int i ,j;
// Loop to select Elements one by one
for ( i = 0; i < size; i++)
{
// Loop to print position of element
// where we find an element
for ( j = 0; j < size; j++)
{
// checking the element in
// increasing order
if (arr[j] == i + 1)
{
// print position of element
// where element is in inverse
// permutation
Console.Write( j + 1 + " " );
break ;
}
}
}
}
// Driver program to test above function
public static void Main ()
{
int []arr = {2, 3, 4, 5, 1};
int size = arr.Length;
inversePermutation(arr, size);
}
}
// This code is contributed by vt_m


PHP

<?php
// Naive PHP Program to
// find inverse permutation.
// Function to find
// inverse permutations
function inversePermutation( $arr , $size )
{
for ( $i = 0; $i < $size ; $i ++)
{
// Loop to print position of element
// where we find an element
for ( $j = 0; $j < $size ; $j ++)
{
// checking the element
// in increasing order
if ( $arr [ $j ] == $i + 1)
{
// print position of element
// where element is in
// inverse permutation
echo $j + 1 , " " ;
break ;
}
}
}
}
// Driver Code
$arr = array (2, 3, 4, 5, 1);
$size = sizeof( $arr );
inversePermutation( $arr , $size );
// This code is contributed by aj_36
?>


Javascript

<script>
// Naive JavaScript program to find inverse permutation.
// JavaScript function to find inverse permutations
function inversePermutation(arr, size)
{
let i ,j;
// Loop to select Elements one by one
for ( i = 0; i < size; i++)
{
// Loop to print position of element
// where we find an element
for ( j = 0; j < size; j++)
{
// checking the element in
// increasing order
if (arr[j] == i + 1)
{
// print position of element
// where element is in inverse
// permutation
document.write( j + 1 + " " );
break ;
}
}
}
}
// Driver code
let arr = [2, 3, 4, 5, 1];
let size = arr.length;
inversePermutation(arr, size);
</script>


输出:

 5 1 2 3 4

方法2: 其想法是使用另一个数组来存储索引和元素映射

C++

// Efficient CPP Program to find inverse permutation.
#include <bits/stdc++.h>
using namespace std;
// C++ function to find inverse permutations
void inversePermutation( int arr[], int size) {
// to store element to index mappings
int arr2[size];
// Inserting position at their
// respective element in second array
for ( int i = 0; i < size; i++)
arr2[arr[i] - 1] = i + 1;
for ( int i = 0; i < size; i++)
cout << arr2[i] << " " ;
}
// Driver program to test above function
int main() {
int arr[] = {2, 3, 4, 5, 1};
int size = sizeof (arr) / sizeof (arr[0]);
inversePermutation(arr, size);
return 0;
}


JAVA

// Efficient Java Program to find
// inverse permutation.
import java.io.*;
class GFG {
// function to find inverse permutations
static void inversePermutation( int arr[], int size) {
// to store element to index mappings
int arr2[] = new int [size];
// Inserting position at their
// respective element in second array
for ( int i = 0 ; i < size; i++)
arr2[arr[i] - 1 ] = i + 1 ;
for ( int i = 0 ; i < size; i++)
System.out.print(arr2[i] + " " );
}
// Driver program to test above function
public static void main(String args[]) {
int arr[] = { 2 , 3 , 4 , 5 , 1 };
int size = arr.length;
inversePermutation(arr, size);
}
}
// This code is contributed by Nikita Tiwari.


Python3

# Efficient Python 3 Program to find
# inverse permutation.
# function to find inverse permutations
def inversePermutation(arr, size) :
# To store element to index mappings
arr2 = [ 0 ] * (size)
# Inserting position at their
# respective element in second array
for i in range ( 0 , size) :
arr2[arr[i] - 1 ] = i + 1
for i in range ( 0 , size) :
print ( arr2[i], end = " " )
# Driver program
arr = [ 2 , 3 , 4 , 5 , 1 ]
size = len (arr)
inversePermutation(arr, size)
# This code is contributed by Nikita Tiwari.


C#

// Efficient C# Program to find
// inverse permutation.
using System;
class GFG {
// function to find inverse permutations
static void inversePermutation( int []arr, int size) {
// to store element to index mappings
int []arr2 = new int [size];
// Inserting position at their
// respective element in second array
for ( int i = 0; i < size; i++)
arr2[arr[i] - 1] = i + 1;
for ( int i = 0; i < size; i++)
Console.Write(arr2[i] + " " );
}
// Driver program to test above function
public static void Main() {
int []arr = {2, 3, 4, 5, 1};
int size = arr.Length;
inversePermutation(arr, size);
}
}
// This code is contributed by vt_m.


Output : 5 1 2 3 4
© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享