题目的链接在这里: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; } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)