题目链接
法一
public void rotate(int[][] matrix) {
int n = matrix.length;
for (int i = 0; i < n; i++) {
for (int j = 0; j < i; j++) {
matrix[i][j] = matrix[i][j] ^ matrix[j][i];
matrix[j][i] = matrix[i][j] ^ matrix[j][i];
matrix[i][j] = matrix[i][j] ^ matrix[j][i];
}
}
int left = 0, right = n - 1;
while (left < right) {
for (int i = 0; i < n; i++) {
matrix[i][left] = matrix[i][left] ^ matrix[i][right];
matrix[i][right] = matrix[i][left] ^ matrix[i][right];
matrix[i][left] = matrix[i][left] ^ matrix[i][right];
}
left++;
right--;
}
}
本地测试
lay.showTitle(48);
Solution48 sol48 = new Solution48();
int[][] matrix48 = new int[][]{{1,2,3},{4,5,6},{7,8,9}};
arrayOpt.showIntTwoDimArray(matrix48, matrix48.length);
sol48.rotate(matrix48);
arrayOpt.showIntTwoDimArray(matrix48, matrix48.length);