📌  相关文章
📜  Java程序打印给定数组的所有可能旋转

📅  最后修改于: 2022-05-13 01:54:28.439000             🧑  作者: Mango

Java程序打印给定数组的所有可能旋转

给定一个大小为N的整数数组arr[] ,任务是打印数组所有可能的旋转。
例子:

方法:
请按照以下步骤解决问题:

  1. 通过一个一个地执行数组的左旋转来生成数组的所有可能的旋转。
  2. 打印数组的所有可能旋转,直到遇到相同的数组旋转。

以下是上述方法的实现:

Java
// Java program to print
// all possible rotations
// of the given array
class GFG{
     
// Global declaration of array
static int arr[] = new int[10000];
 
// Function to reverse array
// between indices s and e
public static void reverse(int arr[],
                           int s, int e)
{
    while(s < e)
    {
        int tem = arr[s];
        arr[s] = arr[e];
        arr[e] = tem;
        s = s + 1;
        e = e - 1;
    }
}
 
// Function to generate all
// possible rotations of array
public static void fun(int arr[], int k)
{
    int n = 4 - 1;
    int v = n - k;
     
    if (v >= 0)
    {
        reverse(arr, 0, v);
        reverse(arr, v + 1, n);
        reverse(arr, 0, n);
    }
}
 
// Driver code
public static void main(String args[])
{
    arr[0] = 1;
    arr[1] = 2;
    arr[2] = 3;
    arr[3] = 4;
     
    for(int i = 0; i < 4; i++)
    {
        fun(arr, i);
         
        System.out.print("[");
        for(int j = 0; j < 4; j++)
        {
            System.out.print(arr[j] + ", ");
        }
        System.out.print("]");
    }
}
}
 
// This code is contributed by gk74533


输出:
[1, 2, 3, 4] [4, 1, 2, 3] [2, 3, 4, 1] [3, 4, 1, 2]

时间复杂度: O (N 2 )
辅助空间: O (1)

有关详细信息,请参阅有关打印给定阵列的所有可能旋转的完整文章!