package com.anuragkapur.ctci.arraysandstrings; /** * @author anuragkapur */ public class Prob1_6_RotateMatrix { /** * Running time = O(n^2), where n = length of size of square matrix * * @param a * @return */ public int[][] rotate(int a[][]) { int start = 0; int end = a[0].length-1; while (start < end) { int offset = 0; for (int i=start; i<end; i++) { int temp = a[start][end-offset]; // left -> top a[start][end-offset] = a[i][start]; // bottom -> left a[i][start] = a[end][i]; // right -> bottom a[end][i] = a[end-offset][end]; // temp -> right a[end-offset][end] = temp; offset ++; } start ++; end --; } return a; } }