给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。
你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。
示例 1:
- 输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]
- 输出:[[7,4,1],[8,5,2],[9,6,3]]
示例 2:
- 输入:matrix = [[5,1,9,11],[2,4,8,10],[13,3,6,7],[15,14,12,16]]
- 输出:[[15,13,2,5],[14,3,4,1],[12,6,8,9],[16,7,10,11]]
提示:
- n == matrix.length == matrix[i].length
- 1 <= n <= 20
- -1000 <= matrix[i][j] <= 1000
Method:
通过观察输入和输出结果可以发现,结果矩阵可以通过以下的简单变换得到:
第一步:上下翻转,由于直接交换数值,因此仅需反转数组长度的一半,即可反转全部矩阵。
第二步:沿主对角线反转得到结果矩阵。
Code:
- class Solution{
- public:
- // 旋转图像
- void rotate(vector
int>> &matrix){ - // 上下反转
- // 仅需反转一半即可
- for(int i=0;i
2;i++){ - for(int j=0;j
- // 交换
- swap(matrix[i][j],matrix[matrix.size()-1-i][j]);
- }
- }
-
- // 沿着主对角线反转
- for(int i=1;i
- // 仅需反转左下三角或右上三角即可
- for(int j=i+1;j
- // 交换
- swap(matrix[i][j],matrix[j][i]);
- }
- }
- }
- };
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/rotate-image
Reference:
-
相关阅读:
(Vue2版本)Uniapp编写H5项目
java-各种成员变量初始化过程-待完善
C++获取系统毫秒级时间(自1970年1月1日至今的毫秒数)
Visual Studio: Arm64EC官方支持来了
Vue3 事件处理
1.0 Zookeeper 教程
自学Python 60 socketserver编程
jquery
CData Arc v22API工作流
FocalLoss解析
-
原文地址:https://blog.csdn.net/qq_40728667/article/details/126923952