LeetCode刷題 54 螺旋矩陣

2021-10-06 07:27:40 字數 1992 閱讀 6069

給定乙個包含 m x n 個元素的矩陣(m 行, n 列),請按照順時針螺旋順序,返回矩陣中的所有元素。

輸入:[[

1,2,

3],[

4,5,

6],[

7,8,

9]]輸出:[1

,2,3

,6,9

,8,7

,4,5

]

輸入:[[

1,2,

3,4]

,[5,

6,7,

8],[

9,10,

11,12]

]輸出:[1

,2,3

,4,8

,12,11

,10,9

,5,6,7]

首先定義方向:向下表示y正方向,向右表示x正方向;

再定義兩個點,分別是左上(x1,y1)和右下(x2,y2);

再把迴圈分為四個邊區間進行,分別為:上方[x1,x2],右方[y1,y2],下方[x2,x1],左方[y2,y1];

每迴圈一圈(4次),矩陣的長寬都縮短1。

解釋:

""" #存放結果

result =

list()

ifnot matrix:

return result

#陣列行,列數的長度

row, col =

len(matrix)

,len

(matrix[0]

) #定義矩陣的左上角座標(x1,y1),右下角座標(x2,y2)

x1, y1, x2, y2 =0,

0, col-

1, rol-

1while true:

#從上左向上右遍歷

for i in range

(x1, x2+1)

: result.

(matrix[y1]

[i])

y1+=1

#邊界判斷,矩陣高度不能為0

if y1>y2:

break

#從右上向右下

for j in range

(y1, y2+1)

: result.

(matrix[j]

[x2]

) x2-=1

if x1>x2:

break

#從下右向下左

for m in range

(x2, x1+1,

-1):

result.

(matrix[y2]

[m])

y2-=1

if x1>x2:

break

#從左下向左上

for n in range

(y2, y1+1,

-1):

result.

(matrix[n]

[x1]

) x1+=1

if x1>x2:

break

return result

class

solution

return res;}}

;

Leetcode刷題(54 螺旋矩陣)

給定乙個包含 m x n 個元素的矩陣 m 行,n 列 請按照順時針螺旋順序,返回矩陣中的所有元素。示例 1 輸入 1,2,3 4,5,6 7,8,9 輸出 1,2,3,6,9,8,7,4,5 示例 2 1,2,3,4 5,6,7,8 9,10,11,12 輸出 1,2,3,4,8,12,11,10...

leetcode刷題python之螺旋矩陣II

思路 按照題目要求依次迴圈遍歷,需要安排好順序,設定好四個座標參考,left,right,top,bottom,用於移動的參考,每次移動後進行相應的更新,在乙個while下分別放著4個for迴圈,分別表示在四個方向上的移動 class solution def generatematrix self...

leetcode每日一題 54 螺旋矩陣

題目 給你乙個 m 行 n 列的矩陣 matrix 請按照 順時針螺旋順序 返回矩陣中的所有元素。解答 class solution def spiralorder self,matrix list list int list int m len matrix n len matrix 0 i,j ...