leetcode第48题

简介: 将一个矩阵顺时针旋转 90 度,并且不使用额外的空间。大概属于找规律的题,没有什么一般的思路,观察就可以了。解法一可以先转置,然后把每列对称交换交换一下

image.png

将一个矩阵顺时针旋转 90 度,并且不使用额外的空间。大概属于找规律的题,没有什么一般的思路,观察就可以了。

解法一

可以先转置,然后把每列对称交换交换一下

image.png

publicvoidrotate(int[][] matrix) {
//以对角线为轴交换for (inti=0; i<matrix.length; i++) {
for (intj=0; j<=i; j++) {
if (i==j) {
continue;
            }
inttemp=matrix[i][j];
matrix[i][j] =matrix[j][i];
matrix[j][i] =temp;
        }
    } 
//交换列for (inti=0, j=matrix.length-1; i<matrix.length/2; i++, j--) {
for (intk=0; k<matrix.length; k++) {
inttemp=matrix[k][i];
matrix[k][i] =matrix[k][j];
matrix[k][j] =temp;
        }
    }
}

时间复杂度:O(n²)。

空间复杂度:O(1)。

也可以先以横向的中轴线为轴,对称的行进行交换,然后再以对角线交换。

解法二

我把这个链接的思路贴过来,里边评论有张图也都顺道贴过来吧,写的很好。

image.png

一圈一圈的循环交换,很妙!

publicvoidrotate(int[][] matrix) {
intn=matrix.length;
for (inti=0; i<n/2; i++) 
for (intj=i; j<n-i-1; j++) {
inttmp=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]=tmp;
        }
}

时间复杂度:O(n²)。

空间复杂度:O(1)。

这道题就是对题目的特征进行观察就可以了。


相关文章
|
监控 前端开发 Devops
微前端热度不再?qiankun 作者有话说
微前端热度不再?qiankun 作者有话说
373 0
|
数据库 数据安全/隐私保护 Python
|
9月前
|
前端开发 安全 应用服务中间件
|
设计模式 存储 调度
2023-7-10-第十五式命令模式
2023-7-10-第十五式命令模式
97 0
|
缓存 负载均衡 JavaScript
Nginx 简单入门指北不指南
Nginx 简单入门指北不指南
143 0
|
数据库 Python
Flask开发 经验技巧总结
Flask作为一个主流的Python Web框架之一,有比较广泛的应用,但是有经验的小伙伴可能知道,这里边其实也有很多坑,让你不得不防,在使用的过程中可以积累一些经验。
|
存储 Linux 网络安全
【Linux系统编程】命令模式1
【Linux系统编程】命令模式1
【Linux系统编程】命令模式1

热门文章

最新文章