59. 螺旋矩阵 II-day

最直观的做法是模拟遍历矩阵,按照顺时针螺旋顺序遍历矩阵中的每个位置并依次填入元素。初始位置是矩阵的左上角,初始方向是向右,
当移动到矩阵下标范围以外或者已经访问过的位置时需要将移动方向顺时针旋转。
初始时,矩阵中的所有元素都是 0。如果一个位置的元素不为 0,则该位置已经被访问过。
当遍历的位置个数等于n*n时,矩阵中的所有位置都填入元素。

class Solution {
int [][] dir={{0,1},{1,0},{0,-1},{-1,0}};
public int[][] generateMatrix(int n) {
int [][] m=new int[n][n];
int r=0,c=0;
int index=0;
for(int i=1;i<=n*n;i++)
{
m[r][c]=i;
int nr=r+dir[index][0];
int nc=c+dir[index][1];
if(nr<0||nr>=n||nc<0||nc>=n||m[nr][nc]!=0)
{
index=(index+1)%4;
nr=r+dir[index][0];
nc=c+dir[index][1];
}
c=nc;
r=nr;
}
return m;
}
}

posted @ 2026-03-19 22:11  大头海绵宝宝  阅读(13)  评论(0)    收藏  举报