Leetcode 陣列 螺旋矩陣(54)

2022-03-01 03:45:07 字數 1501 閱讀 2954

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

像搜尋一樣,定義乙個表示上下左右移動的陣列。可**量,哭遼...

z = [

[0, 1], # 右

[1, 0], # 下

[0, -1], # 左

[-1, 0] # 上

]

2020.5.30更新:不用定義移動陣列,直接計算就ok。

(2020.5.30更新)**實現:

class solution:

# time: o(n),n為數值個數

def spiralorder(self, a):

if not a:

return

x, y = len(a), len(a[0])

x, y = 0, 0

l =

while len(l) < x*y:

if a[x][y] != float('inf'):

a[x][y] = float('inf')

while y+1 < y and a[x][y+1] != float('inf'): # 向右

y += 1

a[x][y] = float('inf')

while x+1 < x and a[x+1][y] != float('inf'): # 向下

x += 1

a[x][y] = float('inf')

while y-1 >= 0 and a[x][y-1] != float('inf'): # 向左

y -= 1

a[x][y] = float('inf')

while x-1 >= 0 and a[x-1][y] != float('inf'): # 向上

x -= 1

a[x][y] = float('inf')

return l

s = solution()

ans = s.spiralorder([[1, 2, 3, 4],

[5, 6, 7, 8],

[9, 10, 11, 12],

[13, 14, 15, 16]

])print(ans)

# [1, 2, 3, 4, 8, 12, 16, 15, 14, 13, 9, 5, 6, 7, 11, 10]

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

螺旋矩陣 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,...