給定乙個正整數 n,生成乙個包含 1 到 n2 所有元素,且元素按順時針順序螺旋排列的正方形矩陣。
示例:
輸入: 3輸出:[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]
class
solution
:def
generatematrix
(self, n:
int)
-> list[list[
int]]:
ifnot n:
return
tx =[0
,1,0
,-1]
#方向座標
ty =[1
,0,-
1,0]
list0 =
[i+1
for i in
range
(n**2)
] list1 =[[
none
for i in
range
(n)]
for j in
range
(n)]
x, y =0,
0#當前位置
t =0#變化量
record =
#記錄已經走過的座標
for i in
range
(n**2)
: list1[x]
[y]= list0[i]
[x, y]
) tempx, tempy = x + tx[t]
, y + ty[t]if0
<= tempx < n and
0<= tempy < n and
[tempx, tempy]
notin record:
x, y = tempx, tempy
else
: t =
(t+1)%
4 x, y = x + tx[t]
, y + ty[t]
return list1
LeetCode筆記 59螺旋矩陣
題目 給定乙個正整數 n,生成乙個包含 1 到 n2 所有元素,且元素按順時針順序螺旋排列的正方形矩陣。示例 輸入 3輸出 1,2,3 8,9,4 7,6,5 思路 直接看了網上大神的 和leetcode上最快的 先把這兩個程式看懂。public class solution else if j n...
leetcode 59 螺旋矩陣
題目要求 按照順時針螺旋順序 構建乙個n n的螺旋矩陣 思路 參照之前的54題輸出螺旋矩陣的思路 將單圈拆開為四個部分。每個部分迴圈的長度是相同的。單圈迴圈完之後,起始座標向右下移乙個單位,單次迴圈長度減二。對於偶數階矩陣,正常結束。對於奇數階矩陣,因為迴圈長度會減到0,需要手動加入最後最中間的乙個...
螺旋方陣(Leetcode第59題)
問題描述 螺旋矩陣 include include int main int n scanf d n int i,c 0,r 0,num 0,cnt n 2 int a n n while cnt for i r i r 1 i a n r i num 減減方法 思路 最開始我做題的想法不是這樣的,...