每日一題 面試題01 07 旋轉矩陣

2021-10-20 12:30:48 字數 1802 閱讀 6438

面試題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...