Leetcode48. 旋转图像
Posted !0 !
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode48. 旋转图像相关的知识,希望对你有一定的参考价值。
题目链接:https://leetcode-cn.com/problems/rotate-image/
解题思路
我们可以把矩形切成4块,我们只要旋转其中的一块就行了,为了方便我们就旋转(0,0)到(n/2,(n+1)/2)为矩形的所有点就行,用临时变量t保存该区域的点。
代码
class Solution {
public void rotate(int[][] matrix) {
int n = matrix.length;
for(int i = 0; i < n >> 1; i++) { //遍历要旋转的区域
for(int j = 0; j < (n + 1) >> 1; j++) {
int t = matrix[i][j]; //先保存该区域的点
matrix[i][j] = matrix[n - j - 1][i]; //把该区域下面的点旋转到该区域
matrix[n - j - 1][i] = matrix[n - i - 1][n - j - 1]; //把该区域右下角的点旋转到该区域下面
matrix[n - i - 1][n - j - 1] = matrix[j][n - i - 1]; //把该区域右边的点旋转到该区域右下角
matrix[j][n - i - 1] = t; //将该区域的点旋转到该区域右边
}
}
}
}
复杂度分析
- 时间复杂度: O ( n 2 ) O(n^2) O(n2)
- 空间复杂度: O ( 1 ) O(1) O(1)
以上是关于Leetcode48. 旋转图像的主要内容,如果未能解决你的问题,请参考以下文章