思路:
找规律,旋转的规律就是i,j的下一个点是j,n-i。其中n行数减一。
这样进行4次转一圈旋转了一个像素。。
再观察出需要用哪些像素做起始点然后开始旋转。。
public class Solution {
int [][]matrix;
int n;
public void rotate(int[][] matrix) {
this.matrix=matrix;
n=matrix.length-1;
for(int i=0;i<=n/2;i++)
{
for(int j=i;j<n-i;j++)
{
swap(i, j);
}
}
}
public void swap(int i,int j)
{
int src=matrix[i][j];
int temp;
int nexti;
int nextj;
for(int k=0;k<4;k++)
{
nexti=j;
nextj=n-i;
temp=matrix[nexti][nextj];
matrix[nexti][nextj]=src;
src=temp;
i=nexti;
j=nextj;
}
}
}