题目的链接在这里:https://leetcode-cn.com/problems/spiral-matrix-ii/
题目大意
给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。一、示意图
二、解题思路
正常逻辑
正常逻辑
代码如下:
class Solution {
public int[][] generateMatrix(int n) {
//四个方向 向右的话 而且是需要 右 下 左 上
int[] x={0,1,0,-1};
int[] y={1,0,-1,0};
//当确定是n的时候 就可以确定数组大小了
int[][] res=new int[n][n];
boolean[][] isVisited=new boolean[n][n];
int row=0;
int clo=0;
//index用来记录 是什么方向的
int index=0;
//num是存储的值
int num=1;
int temp=n*n;
while (temp>0){
//先进行赋值
res[row][clo]=num++;
//然后把这个位置标记为访问过了
isVisited[row][clo]=true;
//然后进行更新
//要么就是有一个index来判断往那边走 那就看index现在在往哪边走 就需要判断他下一步往哪边走了
//先看他下一步是哪个地方
int newRow=row+x[index];
int newClo=clo+y[index];
//然后判断他下一步合不合规
//如果他下一步被访问过了 或者下一步越界了 需要先判断越界 然后再判断 有没有被范围过
if(newRow<0||newRow>=n||newClo<0||newClo>=n||isVisited[newRow][newClo]){
//说明下一步不对 需要index进行更新
index=(index+1)%4;
//然后更新
}
//然后这边就进行更新了
row+=x[index];
clo+=y[index];
temp--;
}
return res;
}
}