• 牛客网每日一练


    #
    # 
    # @param matrix int整型二维数组 
    # @return void
    #
    class Solution:
        def rotate(self , matrix ):
            count = len(matrix)
            if count == 1:
                return matrix
            
            for i in range(count):
                for j in range(i , count):
                    matrix[j][i],matrix[i][j]=matrix[i][j],matrix[j][i]
            for i in range(count):
                matrix[i] = matrix[i][::-1]
            return matrix
            # write code here
    给出一个用二维矩阵表示的图像
    返回该图像顺时针旋转90度的结果
    扩展:
    你能使用原地算法解决这个问题么
     
    题解:首先,我们先来了解一下什么是原地算法。很简单的说就是不用考虑超出的空间,然后去覆盖。
    此题是一个非常典型的数组题
      

    这一问题可以有如下问法(都是空间复杂度为常数级别):

    1. 矩阵左旋/右旋90度
    2. 矩阵左旋/右旋180度

    对于本题,有两种思路:

      思路一:利用对称进行旋转——先根据主对角线互换元素,再根据垂直中线互换元素(推荐使用这种方法)

        

      如果旋转的是90°那么先根据主对角线互换元素,再根据垂直中线互换元素,如果是180°,那么进行两次对角线互换元素即可

       思路二:利用坐标映射(不推荐)

        

       举一反三:面对旋转、填充一类的题型,一定要考虑对称这一“大杀器”,它能极大的减少工作量,提高解题正确率和解题效率

  • 相关阅读:
    数据库读现象 数据库锁
    Mysql索引
    视图 触发器 内置函数 流程控制 事务 存储过程
    pymysql模块
    表相关操作
    初识数据库
    python 进程
    python常见错误和异常
    python课程设计--学生管理系统
    python-类的多态的理解
  • 原文地址:https://www.cnblogs.com/nenu/p/14643598.html
Copyright © 2020-2023  润新知