leetcode- Rotate Image

Leetcode: https://leetcode.com/problems/rotate-image/description/

Given input matrix = 
  [1,2,3],
  [4,5,6],
  [7,8,9]

rotate the input matrix in-place such that it becomes:
  [7,4,1],
  [8,5,2],
  [9,6,3]
  • (x, y), the affected point is
    (y, n – x – 1), (n – x – 1, n – y – 1), (n – y – 1, x),  “n” is the size of the matrix.
    The rotate function=
    (x, y) -> (y, n – x – 1) -> (n – x – 1, n – y – 1) -> (n – y – 1, x) -> (x, y).
  • For the i th line, we start from (i, i) ( !! in for loop  j = i ) , and ends at (i, n – 2 – i) 
  • We only need process half of them. n/2

Reference solution:

class Solution {
    public void rotate(int[][] matrix) {
        int n = matrix.length;

        for(int i = 0; i < n / 2; i++){
            int colEnd = n-2-i;

            // j = i
            for (int j = i; j < colEnd+1; j++){
                int temp = matrix[i][j];
                matrix[i][j] = matrix[n-j-1][i];
                matrix[n-j-1][i] = matrix[n-i-1][n-j-1];
                matrix[n-i-1][n-j-1] = matrix[j][n-i-1];
                matrix[j][n-i-1] = temp;
            }
        }

    }
}

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s