定义边界 上 t 下 b 左 l 右 r t = 0, b = n - 1, l = 0, r = n - 1
每次进行转弯的时候就要将边界收缩一次
将num的值赋值给mat后,才执行num++
注意:在构建mat数组的时候,注意行和列 上 哪个位置是 i ,哪个位置是上下左右参数
二刷:一开始的时候要定义 num 和 tar 的值
classSolution{publicint[][]generateMatrix(int n){int t =0;int b = n -1;int l =0;int r = n -1;//定义一个 n*n 的矩阵int[][] mat =newint[n][n];int num =1, tar = n * n;while(num <= tar){//每次进行转弯的时候就要将边界收缩一次//构建上面一层 即从左向右构造,并且是将num的值赋值给mat后,才执行num++for(int i = l; i <= r; i++) mat[t][i]= num++;//上面向下收缩
t++;//构建右边一层 即从上到下构造,for(int i = t; i <= b; i++) mat[i][r]= num++;//右侧向内缩减
r--;//构建下面一层 即从右向左for(int i = r; i >= l; i--) mat[b][i]= num++;//下面向内收缩一层
b--;//从下向上构建 即从下向上for(int i = b; i >= t; i--) mat[i][l]= num++;//左边向内收缩一层
l++;}return mat;}}