码迷,mamicode.com
首页 > 其他好文 > 详细

Rotate Image

时间:2019-05-25 12:39:16      阅读:118      评论:0      收藏:0      [点我收藏+]

标签:elf   any   span   one   solution   个数   端点   color   旋转   

问题:给定一个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

 

Rotate Image

标签:elf   any   span   one   solution   个数   端点   color   旋转   

原文地址:https://www.cnblogs.com/wenqinchao/p/10921856.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!