Untitled

Run Settings
LanguageJava
Language Version
Run Command
//Given an image represented by an NxN matrix, where each pixel in the image is 4 bytes, write a method to rotate the image by 90 degrees. Can you do this in place? import java.util.Scanner; class Main { public static void main(String[] args) { Scanner s = new Scanner(System.in); int i=s.nextInt(); int[][] matrix = new int[i][i]; for(int j=0;j<i;j++){ for(int k=0;k<i;k++){ matrix[j][k] = s.nextInt(); } } System.out.println("==========Input Matrix =======\n"); printMatrix(matrix,i); Main m = new Main(); System.out.println(); System.out.println("==========Rotated Matrix =======\n"); printMatrix(m.rotate(matrix,i),i); System.out.println("\n\n==========Rotated Matrix 2=======\n"); printMatrix(m.rotate2(matrix),i); } public static void printMatrix(int[][] matrix,int i){ for(int j=0;j<i;j++){ for(int k=0;k<i;k++){ System.out.print(matrix[j][k] + "\t"); } System.out.println(); } } public int[][] rotate(int[][] a,int s){ int[][] result = new int[s][s]; for(int i=0;i<s;i++){ for(int j=0;j<s;j++){ result[j][s-1-i] = a[i][j]; } } return result; } public int[][] rotate2(int[][] matrix){ if (matrix.length== 0 || matrix.length != matrix[0].length) return matrix; int n = matrix.length; for (int layer = 0; layer < n / 2; layer++) { int first= layer; int last= n - 1 - layer; for(int i = first; i < last; i++) { int offset = i - first; int top= matrix[first][i]; // save top matrix[first][i]=matrix[last-offset][first]; matrix[last-offset][first] =matrix[last][last - offset]; matrix[last][last - offset] = matrix[i][last]; matrix[i][last] = top; //II right<- saved top } } return matrix; } }
Editor Settings
Theme
Key bindings
Full width
Lines