螺旋矩陣II

2021-07-26 08:51:46 字數 940 閱讀 3366

給你乙個數n生成乙個包含1-n^2的螺旋形矩陣

樣例 n = 3

矩陣為

[ [ 1, 2, 3 ],

[ 8, 9, 4 ],

[ 7, 6, 5 ]

]

簡單的方法是按照矩陣的生成方法乙個個往其中填數得到完整矩陣.

以n = 4為例

填充的規律是

最外圈

0 1 2 3

11 . . 4

10 . . 5

9 8 7 6

填充時存在邊界left = 0,right = n - 1,top = 0,bottom = n - 1;

按照第一行,最後一列,最後一行,第一列的順序填充

0->2,3->5,6->8,9->11

所以第一行填充0到right-1區域,其他部分類推

有了最外圈的規律之後,可以推知內圈也完全滿足這樣的填充方式

需要注意的是:n為偶數時,最內層剛好為一圈,n為奇數是,最內層為點,因此奇數需要將中間的點單獨補上去

public

class

solution

//最後一列

for(int i = top; i < bottom; i++)

//最後一行

for(int i = right; i > left; i--)

//第一列

for(int i = bottom; i > top; i--)

left ++;

top++;

right --;

bottom --;

}// 如果是奇數,加上中間那個點

if(n % 2 == 1)

return res;

}}

59 螺旋矩陣 II

給定乙個正整數 n,生成乙個包含 1 到 n2 所有元素,且元素按順時針順序螺旋排列的正方形矩陣。示例 輸入 3 輸出 1,2,3 8,9,4 7,6,5 class solution for int i 0 i 2 num 1 i 如果不是第乙個圈,個數需要減少1 if x 1 else r1 n...

LeetCode 螺旋矩陣II

給定乙個正整數 n,生成乙個包含 1 到 n 2 所有元素,且元素按順時針順序螺旋排列的正方形矩陣。示例 輸入 3 輸出 1,2,3 8,9,4 7,6,5 思路分析 請先查閱 leetcode 螺旋矩陣 這道題與列印螺旋矩陣一樣,按圈層進行操作,把遍歷修改為寫入即可。初始掃瞄座標 執行用時為 4 ...

59 螺旋矩陣 II

一輪 四種遍歷 後,將座標更新到新一輪的初始位置 x 1 y 1 初始步長 step n 1,之後更新步長 step 2 n為奇數時,最後四種遍歷完之後,再新增處於最中間的數 class solution def generatematrix self,n int list list int res...