leetcode 59 螺旋矩陣 II

2021-10-08 08:14:53 字數 1489 閱讀 5445

59. 螺旋矩陣 ii

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

示例:輸入: 3

輸出:[

[ 1, 2, 3 ],

[ 8, 9, 4 ],

[ 7, 6, 5 ]

]這道題和之前的提取螺旋矩陣是一樣的思維:每一次迴圈,填入一圈的數,下一次迭代,填入下一圈的數。

注意當n為奇數,最後一次填充的時候就只有乙個數,這個時候迴圈填充會填充兩次,第一行&最後一行,所以比之前的題目多了乙個填最後乙個數的判斷語句。

class

solution

:def

generatematrix

(self, n:

int)

-> list[list[

int]]:

matrix =[[

0]*n for _ in

range

(n)]

i = j =

0 num =

1def

helper

(start_i, start_j, row, col)

:#輸入起始的座標,和剩餘矩形長寬,計算乙個環

nonlocal num

if row ==

1and col ==1:

matrix[start_i]

[start_j]

= num

return

for i in

range

(col)

:#第一行

matrix[start_i]

[start_j+i]

= num

num +=

1for i in

range(1

, row-1)

:#最後一列

matrix[start_i+i]

[start_j+col-1]

= num

num +=

1for i in

range

(col-1,

-1,-

1):#最後一行

matrix[start_i+row -1]

[start_j+i]

= num

num +=

1for i in

range

(row-2,

0,-1

):#第一列

matrix[start_i+i]

[start_j]

= num

num +=

1for i in

range

((n)//2

+1):

helper(i,i,n-

2*i,n-

2*i)

#起始位置每次橫縱座標加一,矩陣範圍每次少二

return matrix

leetcode 59 螺旋矩陣

題目要求 按照順時針螺旋順序 構建乙個n n的螺旋矩陣 思路 參照之前的54題輸出螺旋矩陣的思路 將單圈拆開為四個部分。每個部分迴圈的長度是相同的。單圈迴圈完之後,起始座標向右下移乙個單位,單次迴圈長度減二。對於偶數階矩陣,正常結束。對於奇數階矩陣,因為迴圈長度會減到0,需要手動加入最後最中間的乙個...

LeetCode 59 螺旋矩陣II

給定乙個正整數 n,生成乙個包含 1 到 n2 所有元素,且元素按順時針順序螺旋排列的正方形矩陣。示例 輸入 3 輸出 1,2,3 8,9,4 7,6,5 import numpy as np class solution def generatematrix self,n type n int r...

Leetcode 59 螺旋矩陣 II

給定乙個正整數 n,生成乙個包含 1 到 n 2 所有元素,且元素按順時針順序螺旋排列的正方形矩陣。輸入 3 輸出 1,2,3 8,9,4 7,6,5 複製 這個題目也比較簡單,和第54題類似 這個題目很簡單,上下左右分別用四個變數去標誌 上 top 下 bottom 左 left 右 right ...