https://leetcode-cn.com/problems/rotate-image/submissions/
- 顺时针旋转90°,看每一圈就行了,因为外头的圈不会影响里面的
- 写一个函数,先搞最外头的圈,搞完再搞里面的圈,直到没有圈
知道左上角点和右下角点就能确定一个圈
- 先以4*4为具体例子过一下流程,等会再做抽象

for (i = 0; i < dc -tc; i++)
- 第1位置 m[tr] [tr + i]
- 第2个位置 m[tr + i] [ dc]
- 第3个位置 m[dr] [dc - i]
- 第4个位置 m[dr - i] [tc ]
把他们彼此交换位置即可
public void rotate(int[][] matrix) {int tR = 0;int tC = 0;int dR = matrix.length - 1;int dC = matrix[0].length - 1;while (tR < dR) { // 因为是正方形,行错过了意味着列也错过了rotateEdge(matrix, tR++, tC++, dR++, dC++);}}public void rotateEdge(int[][] m, int tR, int tC, int dR, int dC) {int times = dC - tC;int tmp = 0;for (int i = 0; i < times; i++) {tmp = m[tR][tC + i];m[tR][tC + i] = m[dR - i][tC];m[dR - i][tC] = m[dR][dC - i];m[dR][dC - i] = m[tR + i][dC];m[tR + i][dC] = tmp;}}
类似题printStar
n = 10, 要求打印出这样的矩阵

