这个题的主要问题是不能分配额外的矩阵,必须在原矩阵上修改。那么必须保证在将一个元素移动到旋转后的正确位置上之前,目的地位置的元素必须已经旋转至正确位置
比如元素matrix[i][j],需要旋转至matrix[j][n-i-1],而matrix[j][n-i-1]又需要旋转至matrix[n-i-1][n-j-1],matrix[n-i-1][n-j-1]需要旋转至matrix[n-j-1][i],matrix[n-j-1][i]需要旋转至matrix[i,j],整个坐标旋转映射关系如下:
(i,j) -> (j,n-i-1) -> (n-i-1,n-j-1) -> (n-j-1,i) -> (i,j)
这个旋转轨迹涉及到以(i,i)为左上角,以(n-i-1,n-i-1)为右下角的正方形的4条边上的元素,所以可以使用上面的旋转轨迹,由外向内,每次旋转一个正方形4条边上的所有元素