Leetcode 陣列 螺旋矩陣 II(59)

2022-03-01 03:45:06 字數 1679 閱讀 4945

給定乙個正整數 n,生成乙個包含 1 到 n2 所有元素,且元素按順時針順序螺旋排列的正方形矩陣。

示例:

輸入: 3

輸出:[

[ 1, 2, 3 ],

[ 8, 9, 4 ],

[ 7, 6, 5 ]

]

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

z = [

[0, 1], # 右

[1, 0], # 下

[0, -1], # 左

[-1, 0] # 上

]

**實現:

class solution:

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

def generatematrix(self, n):

if n == 0:

return

ans = [[-1]*n for _ in range(n)] # 初始化為-1

z = [

[0, 1], # 右

[1, 0], # 下

[0, -1], # 左

[-1, 0] # 上

]x = y = 0

cur = 1

while -1 in ans[n//2]:

if ans[x][y] == -1:

ans[x][y] = cur

cur += 1

while x + z[0][0] < n and y + z[0][1] < n and ans[x+z[0][0]][y+z[0][1]] == -1: # 向右

x = x + z[0][0]

y = y + z[0][1]

ans[x][y] = cur

cur += 1

while x + z[1][0] < n and y + z[1][1] < n and ans[x+z[1][0]][y+z[1][1]] == -1: # 向下

x = x + z[1][0]

y = y + z[1][1]

ans[x][y] = cur

cur += 1

while x + z[2][0] < n and y + z[2][1] < n and y + z[2][1] >= 0 and ans[x+z[2][0]][y+z[2][1]] == -1: # 向左

x = x + z[2][0]

y = y + z[2][1]

ans[x][y] = cur

cur += 1

while x + z[3][0] < n and x + z[3][0] >= 0 and y + z[3][1] < n and ans[x+z[3][0]][y+z[3][1]] == -1: # 向上

x = x + z[3][0]

y = y + z[3][1]

ans[x][y] = cur

cur += 1

return ans

s = solution()

ans = s.generatematrix(3)

print(ans)

# [# [ 1, 2, 3 ],

# [ 8, 9, 4 ],

# [ 7, 6, 5 ]

# ]

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

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