Offer_43 旋转图像

给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。

你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/rotate-image
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

 

 

思路分享,记录两个指针,分别指向起始的圈层和结束的圈层。

在记录两个指针,指向前面的两个指针,

具体操作是  矩阵的左上 = 左下、左下 = 右下、右下= 右上、右上=左上。

具体实现代码就是通过指针的增加、删除来一层一层的遍历,就好像是洋葱一样,但是再具体操作代码的时候

需要将第二对指针进行模拟,最好是4 * 4 的二维数组。将数组的下标掌握好。

class Solution {
    public void rotate(int[][] matrix) {
        int i = 0, j = matrix.length - 1;
        while(i <= j) {
            int l = i, r = j;
            while (l != j) {
                int temp = matrix[i][l];
                matrix[i][l] = matrix[r][i];
                matrix[r][i] = matrix[j][r];
                matrix[j][r] = matrix[l][j];
                matrix[l][j] = temp;
                ++l;
                --r;
            }
            ++i;
            --j;
        }
    }
}

 

posted @ 2022-03-23 13:20  牵魂  阅读(32)  评论(0)    收藏  举报