有一个NxN整数矩阵,请编写一个算法,将矩阵顺时针旋转90度。
给定一个NxN的矩阵,和矩阵的阶数N,请返回旋转后的NxN矩阵。
要求:空间复杂度 O(1)
也是非常经典,很老的一个题目了,可见其实面试官并没有非常难为人。
常规思路下旋转,肯定要用到额外的空间,想要O(1)空间,那就要找规律了:
镜像对称两次就好了,一次是关于主对角线镜像交换值,一次是关于中轴镜像交换值。
网上找的现成的code【万一面试官让你旋转180°,让你逆时针旋转,你还行吗?】
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param mat int整型二维数组
# @param n int整型
# @return int整型二维数组
#
class Solution:
def rotateMatrix(self , mat: List[List[int]], n: int) -> List[List[int]]:
# write code here
# 经过两次对称镜像交换坐标就可以了
# 第一次,关于左下对称轴镜像交换坐标
for i in range(n):
for j in range(i):
mat[i][j], mat[j][i]=mat[j][i], mat[i][j]
# 第二次,关于中轴交换坐标
for i in range(n):
for j in range(n//2):
mat[i][j], mat[i][n-1-j]=mat[i][n-1-j], mat[i][j]
return mat
华为OD 2023/2022 最新机试题及讲解,100%通过率。
Java: https://renjie.blog.csdn.net/article/details/127947829
Python: https://renjie.blog.csdn.net/article/details/127946125
C++: https://renjie.blog.csdn.net/article/details/126965954
Js: https://renjie.blog.csdn.net/article/details/128974467
C: https://renjie.blog.csdn.net/article/details/129190260
华为OD 2023/2022 最新机试题及讲解,100%通过率。
Java: https://renjie.blog.csdn.net/article/details/127947829
Python: https://renjie.blog.csdn.net/article/details/127946125
C++: https://renjie.blog.csdn.net/article/details/126965954
Js: https://renjie.blog.csdn.net/article/details/128974467
C: https://renjie.blog.csdn.net/article/details/129190260
华为OD 2023/2022 最新机试题及讲解,100%通过率。
Java: https://renjie.blog.csdn.net/article/details/127947829
Python: https://renjie.blog.csdn.net/article/details/127946125
C++: https://renjie.blog.csdn.net/article/details/126965954
Js: https://renjie.blog.csdn.net/article/details/128974467