給定乙個包含 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 ...