[Array]48. Rotate Image

  • 分类:Array
  • 时间复杂度: O(n^2)

48. Rotate Image

You are given an n x n 2D matrix representing an image.

Rotate the image by 90 degrees (clockwise).

Note:

You have to rotate the image in-place, which means you have to modify the input 2D matrix directly. DO NOT allocate another 2D matrix and do the rotation.

Example 1:


Given input matrix = 

[

 [1,2,3],

 [4,5,6],

 [7,8,9]

],

rotate the input matrix in-place such that it becomes:

[

 [7,4,1],

 [8,5,2],

 [9,6,3]

]

Example 2:


Given input matrix =

[

 [ 5, 1, 9,11],

 [ 2, 4, 8,10],

 [13, 3, 6, 7],

 [15,14,12,16]

], 

rotate the input matrix in-place such that it becomes:

[

 [15,13, 2, 5],

 [14, 3, 4, 1],

 [12, 6, 8, 9],

 [16, 7,10,11]

]

代码:

方法:

class Solution:
    def rotate(self, matrix):
        """
        :type matrix: List[List[int]]
        :rtype: void Do not return anything, modify matrix in-place instead.
        """
        n=len(matrix)
        
        top=0
        left=0
        bottom=n-1
        right=n-1
        
        while(n>1):
            for i in range(n-1):
                temp=matrix[top][left+i]
                matrix[top][left+i]=matrix[bottom-i][left]
                matrix[bottom-i][left]=matrix[bottom][right-i]
                matrix[bottom][right-i]=matrix[top+i][right]
                matrix[top+i][right]=temp
            top+=1
            left+=1
            bottom-=1
            right-=1
            n-=2

讨论:

1.其实本来方法我已经想过了=。=然后我以为会有什么牛逼的特殊解法,就决定看看视频讲解。没想到还是那么的简单。

你可能感兴趣的:([Array]48. Rotate Image)