Rotate Image




質問する

  • n*n matrix
  • マトリクスを反時計回りに90度回転
  • を解決し、マトリクスを新規作成しない

    に答える

  • 横読みで後ろから縦書き
  • from collections import deque
    class Solution:
        def rotate(self, matrix: List[List[int]]) -> None:
            """
            Do not return anything, modify matrix in-place instead.
            """
            n = len(matrix)
            q = deque()
            for i in range(n):
                for j in range(n):
                    q.append(matrix[i][j])
                    
                    
            for col in range(n-1,-1,-1):
                for row in range(n):
                    matrix[row][col] = q.popleft()

    結果



    最初は40 msでしたが、回ってから615036はずっと変わっていました...ㅇ…
    ライブラリになるような気がしたので探してみました.
    リストを逆シーケンスで変換し、zipを使用して垂直に読み出す方法があります.
    こんな時にもZipが使えるんですよね…ぶるぶる震える
    class Solution:
        def rotate(self, matrix: List[List[int]]) -> None:
            """
            Do not return anything, modify matrix in-place instead.
            """
            for ind, el in enumerate(zip(*matrix[::-1])):
                matrix[ind] = list(el)