Skip to content

Instantly share code, notes, and snippets.

@ldong
Created November 8, 2017 03:18
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save ldong/9d27ec5ee36ff038a9dc7aeba82a3b9b to your computer and use it in GitHub Desktop.
rotate matrix
/*
void rotate(int **a, int n) {
  if(!a || n<2)
      return;
  int mid = n/2;

  for(int i=0; i<mid; ++i) {
    int len = n-1-i;
    for(int j=i; j<len; ++j) {    
        int temp = a[i][j];
        a[i][j] = a[n-1-j][i];
        a[n-1-j][i] = a[n-1-i][n-1-j];
        a[n-1-i][n-1-j] = a[j][n-1-i];
        a[j][n-1-i] = temp;
    }
  }
}
*/

import java.io.*;
import java.util.*;

/*
 * To execute Java, please define "static void main" on a class
 * named Solution.
 *
 * If you need more classes, simply define them inline.
 */

class Solution {
  
  public static void rotateMatrix(int[][] m, int s) {
    if(m == null || s < 2) {
      return;
    }
    int start = 0;
    int end = s - 1;
    while (end > start) {
      for (int i = start; i < end; i++) {    
        int temp = m[i][start];
        m[i][start] = m[start][end - i + start];
        m[start][end - i + start] = m[end - i + start][end];
        m[end - i + start][end] = m[end][i];
        m[end][i] = temp;
      }
      start++;
      end--;
      // printMatrix(m);
    }
  }

  public static void printMatrix(int[][] matrix) {
    for (int r=0; r<matrix.length; ++r) {
      for (int c=0; c<matrix.length; ++c) {
        System.out.print(matrix[r][c]);
        System.out.print(", ");
      }
      System.out.println();
    }
    System.out.println();
    System.out.println();

  }
  
  public static void main(String[] args) {
    int[][] matrix = {
      {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}
    };

    printMatrix(matrix);
    rotateMatrix(matrix, matrix.length);
    printMatrix(matrix);
  }
}
@ldong
Copy link
Author

ldong commented Nov 8, 2017

import java.util.*;

/*
 * To execute Java, please define "static void main" on a class
 * named Solution.
 *
 * If you need more classes, simply define them inline.
 */

class Solution {
  public static void main(String[] args) {
    
    int[][] matrix = new int[][]{{1,2,3},{4,5,6},{7,8,9}};
    
    System.out.println("before rotating");
    
    for (int i = 0; i < matrix.length; i++) {
      for (int j = 0; j < matrix[0].length; j++) {
        System.out.print(matrix[i][j] + " ");
      }
      System.out.println();
    }
    
    rotate(matrix);
    
    System.out.println("after rotating");

    
    for (int i = 0; i < matrix.length; i++) {
      for (int j = 0; j < matrix[0].length; j++) {
        System.out.print(matrix[i][j] + " ");
      }
      System.out.println();
    }
    
  }

  private static void rotate(int[][] matrix) {
    int len = matrix.length - 1; 
    
    for (int i = 0; i <= len / 2; i++) {
      for (int j = i; j < len - i; j ++) {
        int temp = matrix[i][j];
        matrix[i][j] = matrix[len - j][i];
        matrix[len - j][i] = matrix[len - i][len  - j];
        matrix[len - i][len - j] = matrix[j][len - i];
        matrix[j][len - i] = temp;
      }
    }
  }
    
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment