LeetCode 螺旋矩陣 模擬

2021-09-23 20:25:22 字數 1958 閱讀 5168

傳送門

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

參考題解,方法一模擬過程

時間複雜度是 o(n

)o(n)

o(n)

,空間複雜度o(n

)o(n)

o(n)

,執行用時:52ms

52 ms

52ms

模擬

分為四個遍歷過程,

從左到右遍歷首行的所有元素,並更新當前首行

從上到下遍歷最右列所有元素,並更新當前最右列

從右向左遍歷尾行的所有元素,並更新當前尾行

從下到上遍歷最左列所有元素,並更新當前最左列

舉例:1 1 1 1 1

4 5 5 5 2

4 7 7 6 2

3 3 3 3 2

class

solution

(object):

defspiralorder

(self, matrix)

:"""

:type matrix: list[list[int]]

:rtype: list[int]

"""ifnot matrix:

return

head_row=

0 rail_row=

len(matrix)-1

#當前尾部的行數索引

l_col=

0 r_col=

len(matrix[0]

)-1#當前最右邊的列數索引

res=

while head_row<=rail_row and l_col<=r_col:

for i in

range

(l_col,r_col+1)

:#1.從左到右遍歷首行的所有元素

[i])

head_row=head_row+

1#更新當前首行

if head_row>rail_row:

break

for i in

range

(head_row,rail_row+1)

:#2.從上到下遍歷最右列所有元素

[r_col]

) r_col=r_col-

1#更新當前最右列

if r_colbreak

for i in

range

(r_col,l_col-1,

-1):

#3.從右向左遍歷尾行所有元素

[i])

rail_row=rail_row-

1#更新當前尾行

for i in

range

(rail_row,head_row-1,

-1):

#4.從下到上遍歷最左列所有元素

[l_col]

)

l_col=l_col+

1#更新當前最左列

return res

螺旋矩陣 leetcode

螺旋矩陣 給定乙個包含 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,...

Leetcode 螺旋矩陣

題目描述 給定乙個包含 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,...

LeetCode 螺旋矩陣

題目 給你乙個 m 行 n 列的矩陣 matrix 請按照 順時針螺旋順序 返回矩陣中的所有元素。輸入 matrix 1,2,3 4,5,6 7,8,9 輸出 1,2,3,6,9,8,7,4,5 思路 使用left,right,up,down四個邊界值來順時針遍歷矩陣,每迴圈一次邊界值往內縮1,即l...