给你一个数n
生成一个包含1-n^2
的螺旋形矩阵
注意事项
n = 3
矩阵为
[ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ]
]
/* 本题就是按照螺旋的顺序把数字依次塞进去,我们可以维护上下左右边界的四个变量, 一圈一圈往里面添加。最后要注意的是,如果n是奇数,要把中心那个点算上。 */ public class Solution { public int[][] generateMatrix(int n) { int[][] res = new int[n][n]; int left = 0, right = n - 1, bottom = n - 1, top = 0; int num = 1;//num计数 while(left < right && top < bottom){ // 1.添加该圈第一行left for(int i = left; i < right; i++){ res[top][i] = num++; } // 2.添加最后一列top for(int i = top; i < bottom; i++){ res[i][right] = num++; } // 3.添加最后一行 for(int i = right; i > left; i--){ res[bottom][i] = num++; } // 4.添加第一列 for(int i = bottom; i > top; i--){ res[i][left] = num++; } //一圈之后减一圈 top++; bottom--; left++; right--; } // 如果是奇数,加上中间那个点 if(n % 2 == 1){ res[n / 2][n / 2] = num; } return res; } }