Java Program for Rotate a Matrix by 180 degree
Last Updated :
13 Jan, 2022
Given a square matrix, the task is that we turn it by 180 degrees in an anti-clockwise direction without using any extra space.
Examples :
Input : 1 2 3
4 5 6
7 8 9
Output : 9 8 7
6 5 4
3 2 1
Input : 1 2 3 4
5 6 7 8
9 0 1 2
3 4 5 6
Output : 6 5 4 3
2 1 0 9
8 7 6 5
4 3 2 1
Method: 1 (Only prints rotated matrix)
The solution of this problem is that to rotate a matrix by 180 degrees we can easily follow that step
Matrix = a00 a01 a02
a10 a11 a12
a20 a21 a22
when we rotate it by 90 degree
then matrix is
Matrix = a02 a12 a22
a01 a11 a21
a00 a10 a20
when we rotate it by again 90
degree then matrix is
Matrix = a22 a21 a20
a12 a11 a10
a02 a01 a00
From the above illustration, we get that simply to rotate the matrix by 180 degrees then we will have to print the given matrix in a reverse manner.
Java
// Java program to rotate a
// matrix by 180 degrees
import java.util.*;
class GFG {
static int N = 3;
// Function to Rotate the
// matrix by 180 degree
static void rotateMatrix(int mat[][])
{
// Simply print from last
// cell to first cell.
for (int i = N - 1; i >= 0; i--) {
for (int j = N - 1; j >= 0; j--)
System.out.print(mat[i][j] + " ");
System.out.println();
}
}
// Driver Code
public static void main(String[] args)
{
int[][] mat = { { 1, 2, 3 },
{ 4, 5, 6 },
{ 7, 8, 9 } };
rotateMatrix(mat);
}
}
// This code is contributed by ChitraNayal
Output :
9 8 7
6 5 4
3 2 1
Time complexity: O(N*N)
Auxiliary Space: O(1)
Method : 2(In-place rotation)
There are four steps :
1- Find transpose of a matrix.
2- Reverse columns of the transpose.
3- Find transpose of a matrix.
4- Reverse columns of the transpose
Let the given matrix be
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
First we find transpose.
1 5 9 13
2 6 10 14
3 7 11 15
4 8 12 16
Then we reverse elements of every column.
4 8 12 16
3 7 11 15
2 6 10 14
1 5 9 13
then transpose again
4 3 2 1
8 7 6 5
12 11 10 9
16 15 14 13
Then we reverse elements of every column again
16 15 14 13
12 11 10 9
8 7 6 5
4 3 2 1
Java
// Java program for left
// rotation of matrix by 180
import java.util.*;
class GFG {
static int R = 4, C = 4, t = 0;
// Function to rotate the
// matrix by 180 degree
static void reverseColumns(int arr[][])
{
for (int i = 0; i < C; i++) {
for (int j = 0, k = C - 1; j < k; j++, k--) {
t = arr[j][i];
arr[j][i] = arr[k][i];
arr[k][i] = t;
}
}
}
// Function for transpose of matrix
static void transpose(int arr[][])
{
for (int i = 0; i < R; i++) {
for (int j = i; j < C; j++) {
t = arr[i][j];
arr[i][j] = arr[j][i];
arr[j][i] = t;
}
}
}
// Function for display the matrix
static void printMatrix(int arr[][])
{
for (int i = 0; i < R; i++) {
for (int j = 0; j < C; j++)
System.out.print(arr[i][j] + " ");
System.out.println();
}
}
// Function to anticlockwise
// rotate matrix by 180 degree
static void rotate180(int arr[][])
{
transpose(arr);
reverseColumns(arr);
transpose(arr);
reverseColumns(arr);
}
// Driver Code
public static void main(String[] args)
{
int[][] arr = { { 1, 2, 3, 4 },
{ 5, 6, 7, 8 },
{ 9, 10, 11, 12 },
{ 13, 14, 15, 16 } };
rotate180(arr);
printMatrix(arr);
}
}
// This code is contributed by ChitraNayal
Output :
16 15 14 13
12 11 10 9
8 7 6 5
4 3 2 1
Time complexity : O(R*C)
Auxiliary Space : O(1)
In the code above, the transpose of the matrix has to be found twice, and also, columns have to be reversed twice.
So, we can have a better solution.
Method : 3 (Position swapping)
Here, we swap the values in the respective positions.
Java
public class GFG {
/**
* Reverse Row at specified index in the matrix
* @param data matrix
* @param index row index
*/
private static void reverseRow(int[][] data, int index) {
int cols = data[index].length;
for (int i = 0; i < cols / 2; i++) {
int temp = data[index][i];
data[index][i] = data[index][cols - i - 1];
data[index][cols - i - 1] = temp;
}
}
/**
* Print Matrix data
* @param data matrix
*/
private static void printMatrix(int[][] data) {
for (int i = 0; i < data.length; i++) {
for (int j = 0; j < data[i].length; j++) {
System.out.print(data[i][j] + " ");
}
System.out.println("");
}
}
/**
* Rotate Matrix by 180 degrees
* @param data matrix
*/
private static void rotateMatrix180(int[][] data) {
int rows = data.length;
int cols = data[0].length;
if (rows % 2 != 0) {
//If N is odd reverse the middle row in the matrix
reverseRow(data, data.length / 2);
}
//Swap the value of matrix [i][j] with [rows - i - 1][cols - j - 1] for half the rows size.
for (int i = 0; i <= (rows/2) - 1; i++) {
for (int j = 0; j < cols; j++) {
int temp = data[i][j];
data[i][j] = data[rows - i - 1][cols - j - 1];
data[rows - i - 1][cols - j - 1] = temp;
}
}
}
public static void main(String[] args) {
int[][] data = {
{1, 2, 3, 4, 5},
{6, 7, 8, 9, 10},
{11, 12, 13, 14, 15},
{16, 17, 18, 19, 20},
{21, 22, 23, 24, 25}
};
//Rotate Matrix
rotateMatrix180(data);
//Print Matrix
printMatrix(data);
}
}
Output :
25 24 23 22 21
20 19 18 17 16
15 14 13 12 11
10 9 8 7 6
5 4 3 2 1
Time complexity : O(R*C)
Auxiliary Space : O(1)
Please refer complete article on
Rotate a Matrix by 180 degree for more details!
Similar Reads
Javascript Program for Rotate a Matrix by 180 degree Given a square matrix, the task is that we turn it by 180 degrees in an anti-clockwise direction without using any extra space. Examples : Input : 1 2 3 4 5 6 7 8 9Output : 9 8 7 6 5 4 3 2 1Input : 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 Output : 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1Method: 1 (Only prints rotated
6 min read
Rotate a Matrix by 180 degree Given a square matrix mat[][], Rotate the matrix by 180 degrees.Note: Rotating 180° clockwise or anticlockwise gives the same result.Examples: Input: mat[][] = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]Output: [[9, 8, 7], [6, 5, 4], [3, 2, 1]]Explanation: The output matrix is the input matrix rotated by 180
11 min read
Javascript Program to Inplace rotate square matrix by 90 degrees | Set 1 Given a square matrix, turn it by 90 degrees in anti-clockwise direction without using any extra space.Examples : Input:Matrix: 1 2 3 4 5 6 7 8 9Output: 3 6 9 2 5 8 1 4 7 The given matrix is rotated by 90 degree in anti-clockwise direction.Input: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Output: 4 8 12
5 min read
Javascript Program to Rotate Matrix Elements Given a matrix, clockwise rotate elements in it.Examples:Input: 1 2 3 4 5 6 7 8 9 Output: 4 1 2 7 5 3 8 9 6 For 4*4 matrix Input: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Output: 5 1 2 3 9 10 6 4 13 11 7 8 14 15 16 12The idea is to use loops similar to the program for printing a matrix in spiral form.
5 min read
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
15+ min read
Javascript Program for Rotate the matrix right by K times Given a matrix of size N*M, and a number K. We have to rotate the matrix K times to the right side. Examples: Input : N = 3, M = 3, K = 2 12 23 34 45 56 67 78 89 91 Output : 23 34 12 56 67 45 89 91 78 Input : N = 2, M = 2, K = 2 1 2 3 4 Output : 1 2 3 4A simple yet effective approach is to consider
2 min read