python 旋转图像
生活随笔
收集整理的這篇文章主要介紹了
python 旋转图像
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
給定一個 n × n 的二維矩陣 matrix 表示一個圖像。請你將圖像順時針旋轉 90 度。
你必須在 原地 旋轉圖像,這意味著你需要直接修改輸入的二維矩陣。請不要 使用另一個矩陣來旋轉圖像。
輸入:matrix = [[1,2,3],[4,5,6],[7,8,9]]
輸出:[[7,4,1],[8,5,2],[9,6,3]]
輸入:matrix = [[5,1,9,11],[2,4,8,10],[13,3,6,7],[15,14,12,16]]
輸出:[[15,13,2,5],[14,3,4,1],[12,6,8,9],[16,7,10,11]]
示例 3:
輸入:matrix = [[1]]
輸出:[[1]]
示例 4:
輸入:matrix = [[1,2],[3,4]]
輸出:[[3,1],[4,2]]
提供三種解題思路
1. 借助輔助數組,循環替換數據
class Solution:def rotate(self, matrix: List[List[int]]) -> None:"""Do not return anything, modify matrix in-place instead."""# 解題思路一# 借助輔助數組,循環替換數據import copycopy_matrix = copy.deepcopy(matrix)n = len(matrix)if n == 1:return matrixfor i in range(n):for j in range(n):matrix[i][j] = copy_matrix[n-j-1][i]return matrix2. 兩次翻轉達到旋轉的效果—>先沿左右中線翻轉(上下翻轉), 再沿-45度對角線翻轉
class Solution:def rotate(self, matrix: List[List[int]]) -> None:"""Do not return anything, modify matrix in-place instead."""# 解題思路二# 兩次翻轉解題 先沿左右中線翻轉(上下翻轉),再沿-45度對角線翻轉length = len(matrix)for j in range(length):for i in range(length//2):matrix[j][i], matrix[j][length-i-1] = matrix[j][length-i-1], matrix[j][i]n = length - 1m = nfor j in range(n):for i in range(m):matrix[j][i], matrix[n-i][n-j] = matrix[n-i][n-j], matrix[j][i]m -= 1return matrix3.標準的原地旋轉
解題思路是: 以左上,右上,右下, 左下 四個頂點為起始點, 分別向右旋轉,四個位置相互交換,交換結束后,左上橫坐標加1,右上縱坐標加1,右下橫坐標減1,左下縱坐標減1,依次類推,把最外層的數據全部旋轉。
接著跳轉到內圈,還是上邊的旋轉邏輯,直到旋轉結束。
總結
以上是生活随笔為你收集整理的python 旋转图像的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python 井字游戏
- 下一篇: python顺时针螺旋顺序