leetcode,旋转矩阵,不占用额外空间。 C#实现
public class Solution {
public void Rotate(int[][] matrix) {
//思路 纵坐标变成横坐标 斜对角查
int N = matrix.Length - 1;
for (int i = 0; i < matrix.Length; i++)
{
int temp = 0;
for (int j = i; j < matrix[i].Length - 1 - i; j++)
{
temp = matrix[i][j]; //matrix[j][N - i];
matrix[i][j] = matrix[N - j][i];
matrix[N - j][i] = matrix[N - i][N - j];
matrix[N - i][N - j] = matrix[j][N - i];
matrix[j][N - i] = temp;
}
}
}
}
看题解之后 新思路 左右翻转再对角线翻转。记一下
int len = matrix.length;
//左右翻
for(int i=0;i<len;i++){
for(int j=0;j<len/2;j++){
int temp = matrix[i][j];
matrix[i][j] = matrix[i][len-1-j];
matrix[i][len-1-j] = temp;
}
}
//对角线翻转
for(int i=0;i<len;i++){
for(int j=0;j<len-i;j++){
int temp = matrix[i][j];
matrix[i][j] = matrix[len-1-j][len-1-i];
matrix[len-1-j][len-1-i] = temp;
}