日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

python 旋转图像

發(fā)布時(shí)間:2025/3/21 python 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 旋转图像 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

給定一個(gè) n × n 的二維矩陣 matrix 表示一個(gè)圖像。請(qǐng)你將圖像順時(shí)針旋轉(zhuǎn) 90 度。

你必須在 原地 旋轉(zhuǎn)圖像,這意味著你需要直接修改輸入的二維矩陣。請(qǐng)不要 使用另一個(gè)矩陣來(lái)旋轉(zhuǎn)圖像。

輸入: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. 借助輔助數(shù)組,循環(huán)替換數(shù)據(jù)

class Solution:def rotate(self, matrix: List[List[int]]) -> None:"""Do not return anything, modify matrix in-place instead."""# 解題思路一# 借助輔助數(shù)組,循環(huán)替換數(shù)據(jù)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 matrix

2. 兩次翻轉(zhuǎn)達(dá)到旋轉(zhuǎn)的效果—>先沿左右中線翻轉(zhuǎn)(上下翻轉(zhuǎn)), 再沿-45度對(duì)角線翻轉(zhuǎn)

class Solution:def rotate(self, matrix: List[List[int]]) -> None:"""Do not return anything, modify matrix in-place instead."""# 解題思路二# 兩次翻轉(zhuǎn)解題 先沿左右中線翻轉(zhuǎn)(上下翻轉(zhuǎn)),再沿-45度對(duì)角線翻轉(zhuǎn)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 matrix

3.標(biāo)準(zhǔn)的原地旋轉(zhuǎn)

解題思路是: 以左上,右上,右下, 左下 四個(gè)頂點(diǎn)為起始點(diǎn), 分別向右旋轉(zhuǎn),四個(gè)位置相互交換,交換結(jié)束后,左上橫坐標(biāo)加1,右上縱坐標(biāo)加1,右下橫坐標(biāo)減1,左下縱坐標(biāo)減1,依次類推,把最外層的數(shù)據(jù)全部旋轉(zhuǎn)。
接著跳轉(zhuǎn)到內(nèi)圈,還是上邊的旋轉(zhuǎn)邏輯,直到旋轉(zhuǎn)結(jié)束。

class Solution:def rotate(self, matrix: List[List[int]]) -> None:"""Do not return anything, modify matrix in-place instead."""# 解題思路三# 標(biāo)準(zhǔn)的原地翻轉(zhuǎn)n = len(matrix)d_i, d_j, x = 0, 0, 0for j in range(d_j, n-d_j-1):for i in range(d_i, n-d_i-1):temp_val = matrix[j][i]matrix[j][i] = matrix[n - i - 1][j]matrix[n - i - 1][j] = matrix[n - j - 1][n - i - 1]matrix[n - j - 1][n - i - 1] = matrix[i][n - j - 1]matrix[i][n - j - 1] = temp_vald_i += 1d_j += 1x += 1d_i = xreturn matrix

總結(jié)

以上是生活随笔為你收集整理的python 旋转图像的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。