原題
給你乙個m
行n
列的矩陣matrix
,請按照 順時針螺旋順序 ,返回矩陣中的所有元素。
個人理解:把自己比作正在行走的 棋子,按照右,下 ,左,上的順序進行移動。每一次碰到編輯觸發換方向,每一次還方向,走路的行為發生變化,走路的行為就是x,y的座標。設定好邊界和觸發邊界換向的條件和邊界的變化就可以解決這個問題。
class solution:def spiralorder(self, matrix: list[list[int]]) -> list[int]:
if not matrix or not matrix[0]:return
m,n = len(matrix),len(matrix[0])
left,right,up,down = 0,n-1,0,m-1 # 邊界
res = # 記錄走過的路
x,y = 0,0 # 當前走到的位置
dirs = [(0, 1), (1, 0), (0, -1), (-1, 0)] # 分別表示移動方向是 右、下、左、上
cur_d = 0
while len(res) != m*n:
if cur_d == 0 and y == right:
cur_d += 1
up += 1
elif cur_d == 1 and x == down:
cur_d += 1
right -= 1
elif cur_d == 2 and y == left:
cur_d += 1
down -= 1
elif cur_d == 3 and x == up:
cur_d += 1
left += 1
cur_d %= 4
x += dirs[cur_d][0]
y += dirs[cur_d][1]
return res
思路**
力扣 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 螺旋矩陣 矩陣遍歷 糾錯記錄
思路 把矩陣螺旋輸出。做法也很簡單,我們只需要每次輸出一圈後更新橫排的左右邊界和豎排的上下邊界即可,但是要保證左邊界小於等於右邊界,上邊界小於等於下邊界 public list spiralorder int matrix u for int i u i d i r for int i r i l ...
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...