螺旋矩阵II
给你一个正整数 n
,生成一个包含 1
到 n2
所有元素,且元素按顺时针顺序螺旋排列的 n x n
正方形矩阵 matrix
。
public int[][] generateMatrix(int n) {
int startx = 0;
int starty = 0;
int tmp = 1;
int[][] arr = new int[n][n];
for (int offset = 1; offset <= n/2; offset++) {
//横着赋值
for (int i = startx; i < n - offset; i++) {
arr[starty][i] = tmp;
tmp++;
startx++;
}
//竖着赋值
for (int i = starty; i < n - offset; i++) {
arr[i][startx] = tmp;
tmp++;
starty++;
}
//横着赋值
for (int i = startx; i >= offset; i--) {
arr[starty][i] = tmp;
tmp++;
startx--;
}
//竖着赋值
for (int i = starty; i >= offset; i--) {
arr[i][startx] = tmp;
tmp++;
starty--;
}
startx++;
starty++;
}
if(n%2 == 1){
arr[startx][starty] = tmp;
}
return arr;
}
转就完事了
每次转留一个位置给下一次转,保证每次转的数量相同
如果n是奇数,那转到最后会剩下一个中间的格子
直接赋值即可