Rotate matrix in place

Viewed 1178

I'm solving the rotate an NxN matrix in place question.

It seems that my code makes a rotation, but leaves an X over the image.
So I'm guessing it's rotating the edges incorrectly. I'm attaching two images as sample input and output.

enter image description here enter image description here

What's wrong with my code:

public static void rotateRight(float[][] img){
    for (int i=0; i<N/2; i++){
        for (int j=i; j<N-i; j++){
            int J_COMP = N-j-1; //complement of J
            int LEFT = i;
            int RIGHT = N-i-1;
            int TOP = i;
            int BOTTOM = N-i-1;

            float temp = img[J_COMP][LEFT];
            img[J_COMP][LEFT] = img[BOTTOM][J_COMP];
            img[BOTTOM][J_COMP] = img[j][RIGHT];
            img[j][RIGHT] = img[TOP][j];
            img[TOP][j] = temp;
        }
    }       
}
3 Answers
Related