数组:旋转图像

tech2026-03-30  10

旋转图像

作者:力扣 (LeetCode) 链接:https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/xnhhkv/ 来源:力扣(LeetCode)

题目描述:

给定一个 n × n 的二维矩阵表示一个图像。

将图像顺时针旋转 90 度。

说明:

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

示例 1:

给定 matrix = [ [1,2,3], [4,5,6], [7,8,9] ], 原地旋转输入矩阵,使其变为: [ [7,4,1], [8,5,2], [9,6,3] ]

答案v1.0

class Solution { public: void rotate(vector<vector<int>> &matrix) { int n = matrix.size(); // 按圈遍历数组 for (int cnt = 0; cnt < matrix.size() / 2; cnt++) { for (int time = 0; time < n - 1; time++) { //上 //坐标重新写。 int pre = matrix[cnt][cnt]; for (int i = 1; i < n; i++) { int temp = matrix[cnt][i + cnt]; matrix[cnt][i + cnt] = pre; pre = temp; } // 右 for (int i = 1; i < n; i++) { int temp = matrix[i + cnt][n - 1 + cnt]; matrix[i + cnt][n - 1 + cnt] = pre; pre = temp; } // 下 for (int i = 1; i < n; i++) { int temp = matrix[n - 1 + cnt][n - 1 - i + cnt]; matrix[n - 1 + cnt][n - 1 - i + cnt] = pre; pre = temp; } // 左 for (int i = 1; i < n; i++) { int temp = matrix[n - 1 - i + cnt][cnt]; matrix[n - 1 - i + cnt][cnt] = pre; pre = temp; } } n -= 2; } } };
最新回复(0)