給你乙個數n生成乙個包含1-n^2的螺旋形矩陣簡單的方法是按照矩陣的生成方法乙個個往其中填數得到完整矩陣.樣例 n = 3
矩陣為
[ [ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]
以n = 4為例
填充的規律是
最外圈
0 1 2 3填充時存在邊界left = 0,right = n - 1,top = 0,bottom = n - 1;11 . . 4
10 . . 5
9 8 7 6
按照第一行,最後一列,最後一行,第一列的順序填充
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...