面試題01.07.旋轉矩陣
1、題目
給你一幅由 n × n 矩陣表示的影象,其中每個畫素的大小為 4 位元組。請你設計一種演算法,將影象旋轉 90 度。
不占用額外記憶體空間能否做到?(可以使用臨時變數)
示例 1:
給定 matrix =
[ [1,2,3],
[4,5,6],
[7,8,9]
],原地旋轉輸入矩陣,使其變為:
[ [7,4,1],
[8,5,2],
[9,6,3]
]
示例 2:
給定 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]
]
2、解答:還是矩陣的分圈處理
注意:每次替換會替換4個位置的值,例如4個頂點的值,這樣只需要乙個臨時變數即可。
class
solution
:def
rotate
(self, matrix: list[list[
int]])
->
none
:"""
do not return anything, modify matrix in-place instead.
"""rownum =
len(matrix)
if rownum==0:
return
startx, starty =0,
0 endx, endy = rownum-
1, rownum-
1while startxself.processoneloop(matrix, startx, starty, endx, endy)
startx +=
1 starty +=
1 endx -=
1 endy -=
1def
processoneloop
(self, matrix, startx, starty, endx, endy)
:for i in
range(0
, endy-starty)
: tempvalue = matrix[startx]
[starty+i]
matrix[startx]
[starty+i]
= matrix[endx-i]
[starty]
matrix[endx-i]
[starty]
= matrix[endx]
[endy-i]
matrix[endx]
[endy-i]
= matrix[startx+i]
[endy]
matrix[startx+i]
[endy]
= tempvalue
執行用時:36 ms, 在所有 python3 提交中擊敗了79.95%的使用者
記憶體消耗:14.8 mb, 在所有 python3 提交中擊敗了56.88%的使用者
leetcode 面試題 01 07 旋轉矩陣
面試題 01.07.旋轉矩陣 難度中等87 給你一幅由n n矩陣表示的影象,其中每個畫素的大小為 4 位元組。請你設計一種演算法,將影象旋轉 90 度。不占用額外記憶體空間能否做到?示例 1 給定matrix 1,2,3 4,5,6 7,8,9 原地旋轉輸入矩陣,使其變為 7,4,1 8,5,2 9...
leetcode系列面試題 01 07 旋轉矩陣
題目概要 面試題 01.07 旋轉矩陣 給你一幅由 n n 矩陣表示的影象,其中每個畫素的大小為 4 位元組。請你設計一種演算法,將影象旋轉 90 度。不占用額外記憶體空間能否做到?示例 1 給定 matrix 1,2,3 4,5,6 7,8,9 原地旋轉輸入矩陣,使其變為 7,4,1 8,5,2 ...
嘎 陣列 面試題 01 07 旋轉矩陣 看題解
題目 給你一幅由 n n 矩陣表示的影象,其中每個畫素的大小為 4 位元組。請你設計一種演算法,將影象旋轉 90 度。不占用額外記憶體空間能否做到?示例 1 給定 matrix 1,2,3 4,5,6 7,8,9 原地旋轉輸入矩陣,使其變為 7,4,1 8,5,2 9,6,3 示例 2 給定 mat...