image.png
    image.png
    解析:循环 交换 先旋转最外层,再依次向里

    1. class Solution {
    2. public void rotate(int[][] matrix) {
    3. int tR = 0, tC = 0; //矩阵的左上角元素的坐标
    4. int dR = matrix.length - 1, dC = matrix[0].length - 1; //矩阵右下角元素的坐标
    5. while (tR <= dR) {
    6. int times = dC - tC; //需要循环的次数
    7. for (int i = 0; i < times; i++) {
    8. int tmp = matrix[tR][tC + i];
    9. matrix[tR][tC + i] = matrix[dR - i][tC];
    10. matrix[dR - i][tC] = matrix[dR][dC - i];
    11. matrix[dR][dC - i] = matrix[tR+i][dC];
    12. matrix[tR+i][dC] = tmp;
    13. }
    14. tR++;
    15. tC++;
    16. dR--;
    17. dC--;
    18. }
    19. }
    20. }