给你一个正整数 n ,生成一个包含 1 到 n^2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。
思路(找规律):图片如下
代码实现:
class Solution {
public int[][] generateMatrix(int n) {
int[][] res = new int[n][n];
int len = n;
//当前元素
int now = 1;
//当前的横坐标
int p=0;
//当前的纵坐标
int q=0;
while(len>0){
//先填横向
for(int i=now;i<now+len;i++){
res[p][q] = i;
q++;
}
//更新now
now = now+len;
//第一次len--
len--;
q--;
p++;
//往下走
for(int i=now;i<now+len;i++){
res[p][q] = i;
p++;
}
p--;
//更新now
now = now+len;
q--;
//往左走
for(int i=now;i<now+len;i++){
res[p][q] = i;
q--;
}
q++;
//更新now
now = now+len;
//第二次len--
len--;
p--;
//向上走
for(int i=now;i<now+len;i++){
res[p][q] = i;
p--;
}
p++;
//更新now
now = now+len;
//len不动
q++;
}
return res;
}
}
执行结果: