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