LeetCode 59 螺旋矩陣II

2021-09-03 01:33:01 字數 1142 閱讀 1655

給定乙個正整數 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

:rtype: list[list[int]]

"""def tomartix(martix,lay,sizes):

beginnum = sum(sizes[:lay])*4

if lay <= len(sizes)-1:

size = sizes[lay]

else:

size = 0

if size == 0:

beginnum += 1

martix[lay][lay] = beginnum

for i in range(lay,lay+size):

beginnum += 1

martix[lay][i] = beginnum

for i in range(lay,lay+size):

beginnum+=1

martix[i][lay+size] = beginnum

for i in range(lay+size,lay,-1):

beginnum+=1

martix[lay+size][i] = beginnum

for i in range(lay+size,lay,-1):

beginnum +=1

martix[i][lay] = beginnum

layer = int(np.ceil(n/2))

martix = [[0]* n for i in range(n)]

sizes = list(range(n-1,0,-2))

for i in range(layer):

tomartix(martix,i,sizes)

return martix

演算法執行速度比較慢,繼續學習比較快的演算法。

leetcode 59 螺旋矩陣

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

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