leetcode: 48. Rotate Image

来源:互联网 发布:天猫淘宝优惠卷代理 编辑:程序博客网 时间:2024/06/18 13:27

Q

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]]

AC

class Solution(object):    """    :type matrix: List[List[int]]    :rtype: void Do not return anything, modify matrix in-place instead.    """    def rotate(self, matrix):        matrix.reverse()        for i in range(len(matrix)-1):                for j in range(i+1, len(matrix)):                        a, b = matrix[j][i] , matrix[i][j]                        matrix[j][i] = b                        matrix[i][j] = a# Time:  O(n^2)# Space: O(1)class Solution2(object):    def rotate(self, matrix):        n = len(matrix)        for i in xrange(n):            for j in xrange(n - i):                matrix[i][j], matrix[n-1-j][n-1-i] = matrix[n-1-j][n-1-i], matrix[i][j]        for i in xrange(n / 2):            for j in xrange(n):                matrix[i][j], matrix[n-1-i][j] = matrix[n-1-i][j], matrix[i][j]        return matrix# Time:  O(n^2)# Space: O(n^2)class Solution3(object):    def rotate(self, matrix):        return [list(reversed(x)) for x in zip(*matrix)]if __name__ == "__main__":    matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]    assert not Solution().rotate(matrix)


原创粉丝点击