본문 바로가기

00/algorithm

Rotate Image (in Python)

반응형

Problem

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


Solution


compute


•row의 순서를 뒤집음.

•대각선 방향으로 depth를 늘려가며 (row의 길이만큼) flip 시킴.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Solution:
    def rotate(self, matrix):
        """
        :type matrix: List[List[int]]
        :rtype: void Do not return anything, modify matrix in-place instead.
        """
 
        #matrix[::] = zip(*matrix[::-1])
        #return matrix
 
        size = len(matrix)
        matrix.reverse()
 
        for r in range(size) :
            c = r + 1
            while c < size :
                matrix[r][c], matrix[c][r] = matrix[c][r], matrix[r][c]
                c += 1
        
cs


Complexity Analysis

•Time complexity : \(O(N^2)\) is a complexity given by two inserted loops.

•Space complexity : \(O(1)\)



Source

https://leetcode.com/problems/rotate-image/

반응형

'0 > algorithm' 카테고리의 다른 글

Climbing Stairs (in Python)  (0) 2019.01.23
Add Binary (in Python)  (0) 2019.01.23
Permutations (in Python)  (0) 2019.01.23
Spiral Matrix (in Python)  (0) 2019.01.23
Find First and Last Position of Element in Sorted Array (in Python)  (0) 2019.01.22