当前位置:   article > 正文

华为面试手撕真题【旋转矩阵】_华为面试手撕题

华为面试手撕题

有一个NxN整数矩阵,请编写一个算法,将矩阵顺时针旋转90度。

给定一个NxN的矩阵,和矩阵的阶数N,请返回旋转后的NxN矩阵。

要求:空间复杂度 O(1)

也是非常经典,很老的一个题目了,可见其实面试官并没有非常难为人。

常规思路下旋转,肯定要用到额外的空间,想要O(1)空间,那就要找规律了:

镜像对称两次就好了,一次是关于主对角线镜像交换值,一次是关于中轴镜像交换值。

网上找的现成的code【万一面试官让你旋转180°,让你逆时针旋转,你还行吗?

  1. #
  2. # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
  3. #
  4. #
  5. # @param mat int整型二维数组
  6. # @param n int整型
  7. # @return int整型二维数组
  8. #
  9. class Solution:
  10. def rotateMatrix(self , mat: List[List[int]], n: int) -> List[List[int]]:
  11. # write code here
  12. # 经过两次对称镜像交换坐标就可以了
  13. # 第一次,关于左下对称轴镜像交换坐标
  14. for i in range(n):
  15. for j in range(i):
  16. mat[i][j], mat[j][i]=mat[j][i], mat[i][j]
  17. # 第二次,关于中轴交换坐标
  18. for i in range(n):
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/385320?site
推荐阅读
相关标签
  

闽ICP备14008679号