Java Program to Rotate matrix by 45 degrees
Given a matrix mat[][] of size N*N, the task is to rotate the matrix by 45 degrees and print the matrix.
Examples:
Input: N = 6,Â
mat[][] = {{3, 4, 5, 1, 5, 9, 5},Â
        {6, 9, 8, 7, 2, 5, 2}, Â
        {1, 5, 9, 7, 5, 3, 2},Â
        {4, 7, 8, 9, 3, 5, 2},Â
        {4, 5, 2, 9, 5, 6, 2},Â
        {4, 5, 7, 2, 9, 8, 3}}
Output:
     3
   6 4
  1 9 5
  4 5 8 1
 4 7 9 7 5
4 5 8 7 2 9
 5 2 9 5 5
  7 9 3 3
  2 5 5
   9 6
   8Input: N = 4,Â
mat[][] =Â {{2, 5, 7, 2},Â
        {9, 1, 4, 3},Â
        {5, 8, 2, 3},Â
        {6, 4, 6, 3}}Output:
  2
 9 5
 5 1 7
6 8 4 2
 4 2 3
 6 3
  3Â
Approach: Follow the steps given below in order to solve the problem:
- Store the diagonal elements in a list using a counter variable.
- Print the number of spaces required to make the output look like the desired pattern.
- Print the list elements after reversing the list.
- Traverse through only diagonal elements to optimize the time taken by the operation.
Below is the implementation of the above approach:
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<Integer> lst = new Vector<Integer>(); // 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
Â
Time Complexity: O(N2)
Auxiliary Space: O(1)
Please refer complete article on Rotate matrix by 45 degrees for more details!
Please Login to comment...