zoukankan      html  css  js  c++  java
  • Rotate Image

    问题:给定一个N x N的数组,将数组元素顺时针旋转90度,并且要求不使用另外的数组

    示例:

    输入:

    matrix = 
    [
      [1,2,3],
      [4,5,6],
      [7,8,9]
    ],
    

     matrix变为:

    [
      [7,4,1],
      [8,5,2],
      [9,6,3]
    ]

    matrix =
    [
      [ 5, 1, 9,11],
      [ 2, 4, 8,10],
      [13, 3, 6, 7],
      [15,14,12,16]
    ], 
    

     matrix变为:

    [
      [15,13, 2, 5],
      [14, 3, 4, 1],
      [12, 6, 8, 9],
      [16, 7,10,11]
    ]


    解决思路:

      # 根据n的大小,确定需要旋转多少个轮次
      # 每个轮次,将所有会旋转的点按照旋转的路径(菱形)划分为多个组,每个组中的元素个数为n
      # 先旋转端点,再旋转其他组,直到下一个端点前停下

    Python代码:

    class Solution(object):
        def rotate(self, matrix):
            """
            :type matrix: List[List[int]]
            :rtype: None Do not return anything, modify matrix in-place instead.
            """
            n = len(matrix)
            if not n:
                return
            num = n // 2
            for i in range(num):
                j = i
                bound = n - i - 1
                while j < bound:
                    last = n- j -1
                    matrix[j][i],matrix[i][last],matrix[last][bound],matrix[bound][j] = matrix[bound][j],matrix[j][i],matrix[i][last],matrix[last][bound] 
                    j += 1
  • 相关阅读:
    The Sixth Assignment
    The fifth assigiment
    网络编程
    面向对象
    python数据类型之集合
    python数据类型之列表
    python数据类型之字符串
    python数据类型之字典
    python数据类型之元组
    常用模块
  • 原文地址:https://www.cnblogs.com/wenqinchao/p/10921856.html
Copyright © 2011-2022 走看看