leetcode 59 螺旋矩陣

2021-09-29 22:32:40 字數 1727 閱讀 4405

題目要求:

按照順時針螺旋順序 構建乙個n*n的螺旋矩陣

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

如圖 單圈拆分為黃紅藍綠四個部分。每個部分的長度均為2。第一圈的起始位置為(0,0)。長度=2 迴圈一圈之後,下一圈的起始位置為(1,1)長度為2-2 = 0 此時需要手動新增最後一位9 新增座標就是當前的起始座標。

對於偶數則會正常迴圈結束。

**實現

class

solution

:def

generatematrix

(self, n)

: num =

1 row =

0 time = n-

1 res =[[

0]*n for _ in

range

(n)]

begin_x =

0 begin_y =

0while

(num<

(n*n)+1

):row = begin_x

if time ==0:

res[begin_x]

[begin_y]

= num

return res

for i in

range

(time)

: res[row]

[begin_y+i]

= num

if num==n*n:

return res

num+=

1 col = begin_y+i+

1for j in

range

(time)

: res[begin_x+j]

[col]

= num

if num == n * n:

return res

num+=

1 row = begin_x+j+

1for i in

range

(begin_y+time,begin_y,-1

):res[row]

[i]= num

if num == n * n:

return res

num+=

1 col = i-

1for i in

range

(begin_x+time,begin_x,-1

):res[i]

[col]

= num

if num == n * n:

return res

num+=

1 time-=

2 begin_x+=

1 begin_y+=

1print

(solution(

).generatematrix(5)

)

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

LeetCode 59 螺旋矩陣 II

給定乙個正整數 n,生成乙個包含 1 到 n2 所有元素,且元素按順時針順序螺旋排列的正方形矩陣。示例 輸入 3 輸出 1,2,3 8,9,4 7,6,5 題目分析 這道題和螺旋矩陣一樣,就是從上右下左的順序慢慢列印數字,有幾個就列印n 2個數字就完事啦 class solution return ...