leetcode No 54 螺旋矩陣

2021-09-24 05:49:38 字數 1189 閱讀 5722

給定乙個包含 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,9,5,6,7]

class

solution

;int

dc=

;int m=matrix.length;

int n=matrix[0]

.length;

boolean

seen=

newboolean

[m][n]

;int r=

0,c=

0,di=0;

for(

int i=

0;i)else

}return ans;

}}

繪製螺旋軌跡路徑,我們發現當路徑超出界限或者進入之前訪問過的單元格時,會順時針旋轉方向。

演算法假設陣列有 r

rr 行 c

cc 列,see

n[r]

[c

]seen[r][c]

seen[r

][c]

表示第 r 行第 c 列的單元格之前已經被訪問過了。當前所在位置為 (r,

c)

(r, c)

(r,c

),前進方向是 didi

di。我們希望訪問所有 r∗c

r * c

r∗c 個單元格。

當我們遍歷整個矩陣,下一步候選移動位置是 (cr

,cc)

(cr, cc)

(cr,cc

)。如果這個候選位置在矩陣範圍內並且沒有被訪問過,那麼它將會變成下一步移動的位置;否則,我們將前進方向順時針旋轉之後再計算下一步的移動位置。

時間複雜度: o(n),其中 n 是輸入矩陣所有元素的個數。因為我們將矩陣中的每個元素都新增進答案裡。

空間複雜度: o(n),需要兩個矩陣 seen 和 ans 儲存所需資訊。

Leetcode No 54 螺旋矩陣

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

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...

54 螺旋矩陣

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