順(逆)時針列印矩陣

2021-10-08 23:03:55 字數 1636 閱讀 5543

順時針列印矩陣

劍指 offer 29. 順時針列印矩陣

輸入乙個矩陣,按照從外向裡以順時針的順序依次列印出每乙個數字。

示例 1:

輸入:matrix = [[1,2,3],[4,5,6],[7,8,9]]

輸出:[1,2,3,6,9,8,7,4,5]

解決方法

先把最前面的元素提取了。然後將剩下元素逆時針旋轉 90 度,再依次迴圈進行。

逆時針:豎排提取 → 元素翻轉 。

def

spiralorder

(self, matrix: list[list[

int]])

-> list[

int]

: res =

while matrix:

res += matrix.pop(0)

# 列表後面可以追加元組,相當於 extend

# res.extend(matrix.pop(0)) # 使用這一句代替上面也行

# res = res + matrix.pop(0) # 列表卻不可以連線元組 錯誤

matrix =

list

(zip

(*matrix))[

::-1

]return res

其中,matrix.pop(0)是元組型別,追加+=到了列表之後。使用連線(concatenate)+會報錯的。

這一點微妙之處,也能看出 python 實在是很靈活。

例如:

a =[1

,2,4

]a +=

a +=8,

9print

(a)

結果:[1, 2, 4, 5, 6, 7, 8, 9]

擴充套件:逆時針列印矩陣

def

spiralorder

(self, matrix: list[list[

int]])

-> list[

int]

: matrix =

list

(zip

(*matrix)

)# 轉置

res =

list

(matrix.pop(0)

)while matrix:

matrix =

list

(zip

(*matrix))[

::-1

] res += matrix.pop(0)

return res

需要先轉置提取,才能逆時針旋轉,並提取元素。

總結要求格式為:list[list[int]

注意:python語法比較簡潔,其中上面語法就涉及到:反序、解包、打包、對映等,若看不懂可以在紙上畫畫,好好理解一下。

轉置完再翻轉就是逆時針,而翻轉完再轉置就是順時針旋轉了。

逆時針列印矩陣

逆時針列印矩陣,輸出結果如下圖 源 如下 includeusing namespace std void printmatrixincircle int matrix,int m,int n,int start void printnumber int number 逆時針列印矩陣 void pri...

(C )順時針 逆時針列印矩陣

題目描述 思路 建立乙個list,遍歷陣列中行 列 新增到list中,然後改變陣列的遍歷方向順時針 逆時針 旋轉90度,知道遍歷完成。順時針 using system using system.collections.generic using system.linq using system.te...

Python實現逆時針轉圈圈列印矩陣

要求 逆時針轉圈圈列印矩陣,如下 01 16 15 14 13 02 17 24 23 12 03 18 25 22 11 04 19 20 21 10 05 06 07 08 09 假設是5 5的列表 lenth 5 width 5 先初始化全是0的矩陣 spin 0 lenth for i in...