leetcode-rotate-image

题目大意

  https://leetcode.com/problems/rotate-image/

  将正方形矩阵顺时针旋转90度,要求空间复杂度O(1)

题目分析

  纯的数学坐标变换就可以,倒换4个元素的位置,位置下标算清楚就可以。

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class Solution {
public void rotate(int[][] matrix) {
if (matrix == null || matrix.length == 0 || matrix[0].length == 0) {
return;
}
int n = matrix.length;
for (int i = n - 1, row = 0; i >= 1; i -= 2, row++) { // i表示当前行需要有多少个元素做移动
for (int j = row; j < row + i; j++) {
int tmp = matrix[row][j];
matrix[row][j] = matrix[2 * row + i - j][row];
matrix[2 * row + i - j][row] = matrix[row + i][2 * row + i - j];
matrix[row + i][2 * row + i - j] = matrix[j][row + i];
matrix[j][row + i] = tmp;
}
}
}
}