📜  Java程序将矩阵旋转45度

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

Java程序将矩阵旋转45度

给定一个大小为N*N的矩阵mat[][] ,任务是将矩阵旋转45 度并打印矩阵。

例子:

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

  1. 使用计数器变量将对角线元素存储在列表中。
  2. 打印使输出看起来像所需模式所需的空格数。
  3. 反转列表后打印列表元素。
  4. 仅遍历对角元素以优化操作所花费的时间。

下面是上述方法的实现:

Java
// Java program for 
// the above approach 
import java.util.*;
class GFG{
  
// Function to rotate 
// matrix by 45 degree
static void matrix(int n, int m, 
                   int [][]li)
{
  // Counter Variable 
  int ctr = 0;
  
  while (ctr < 2 * n - 1)
  {
    for(int i = 0; i < Math.abs(n - ctr - 1);
            i++)
    {
      System.out.print(" ");
    }
  
    Vector lst = new Vector();
  
    // Iterate [0, m] 
    for(int i = 0; i < m; i++)
    {
      // Iterate [0, n] 
      for(int j = 0; j < n; j++)
      {
        // Diagonal Elements 
        // Condition 
        if (i + j == ctr)
        {
          // Appending the 
          // Diagonal Elements 
          lst.add(li[i][j]);
        }
      }
    }
  
    // Printing reversed Diagonal 
    // Elements 
    for(int i = lst.size() - 1; i >= 0; i--)
    {
      System.out.print(lst.get(i) + " ");
    }
      
    System.out.println();
    ctr += 1;
  }
}
  
// Driver code    
public static void main(String[] args)
{    
  // Dimensions of Matrix 
  int n = 8;
  int m = n; 
  
  // Given matrix 
  int[][] li = {{4, 5, 6, 9, 8, 7, 1, 4}, 
                {1, 5, 9, 7, 5, 3, 1, 6}, 
                {7, 5, 3, 1, 5, 9, 8, 0}, 
                {6, 5, 4, 7, 8, 9, 3, 7}, 
                {3, 5, 6, 4, 8, 9, 2, 1}, 
                {3, 1, 6, 4, 7, 9, 5, 0}, 
                {8, 0, 7, 2, 3, 1, 0, 8}, 
                {7, 5, 3, 1, 5, 9, 8, 5}};
  
  // Function call 
  matrix(n, m, li);
}
}
  
// This code is contributed by Princi Singh


输出:
4
      1 5
     7 5 6
    6 5 9 9
   3 5 3 7 8
  3 5 4 1 5 7
 8 1 6 7 5 3 1
7 0 6 4 8 9 1 4
 5 7 4 8 9 8 6
  3 2 7 9 3 0
   1 3 9 2 7
    5 1 5 1
     9 0 0
      8 8
       5



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

有关详细信息,请参阅有关将矩阵旋转 45 度的完整文章!