[Leetcode] 0048. Rotate Image

Explore diverse LeetCode solutions in Python, C++, JavaScript, SQL, and TypeScript. Ideal for interview prep, learning, and code practice in multiple programming languages. Github Repo Link

You are given an n x n 2D matrix representing an image, rotate the image by 90 degrees (clockwise).

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:

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

Example 2:

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

 

Constraints:

  • n == matrix.length == matrix[i].length
  • 1 <= n <= 20
  • -1000 <= matrix[i][j] <= 1000

內容目錄

Python

				
					from typing import List

# time complexity: O(n^2)
# space complexity: O(n^2)
class Solution:
    def rotate(self, matrix: List[List[int]]) -> None:
        ROW = len(matrix)
        COL = len(matrix[0])
        newMatrix = [[0 for _ in range(COL)]
                     for _ in range(ROW)]

        for r in range(ROW):
            for c in range(COL):
                newMatrix[c][ROW - r - 1] = matrix[r][c]
        return

# time complexity: O(n^2)
# space complexity: O(1)
class Solution:
    def rotate(self, matrix: List[List[int]]) -> None:
        n = len(matrix)
        for r in range(n // 2):
            for c in range(r, n - r - 1):
                matrix[r][c], matrix[c][n-1-r] = matrix[c][n-1-r], matrix[r][c]
                matrix[r][c], matrix[n-1-r][n-1 -
                                            c] = matrix[n-1-r][n-1-c], matrix[r][c]
                matrix[r][c], matrix[n-1-c][r] = matrix[n-1-c][r], matrix[r][c]
        return matrix


matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print(Solution().rotate(matrix))
matrix = [[5, 1, 9, 11], [2, 4, 8, 10], [13, 3, 6, 7], [15, 14, 12, 16]]
print(Solution().rotate(matrix))
				
			
zh_TW繁體中文