题目:
Given an integer n, generate a square matrix filled with elements from 1 to n 2 in spiral order.
For example,
Given n =3,
You should return the following matrix:
[ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ]
题意:
给定一个n 构造 n*n的螺旋矩阵
解题思路:
思路很简单,就是按顺序构造行和列,具体看下代码就知道了
public static int[][] generateMatrix(int n) {
int[][] res = new int[n][n];
if(n == 0) {
return res;
}
int rowStart = 0;
int rowEnd = n-1;
int colStart = 0;
int colEnd = n-1;
int index = 1;
while(index <= n * n) {
//第一行赋值
for(int i = colStart; i <= colEnd;i++) {
res[rowStart][i] = index++;
}
//最后一列赋值
for(int j = rowStart+1; j <= rowEnd;j++) {
res[j][colEnd] = index++;
}
//最后一行赋值
for(int i = colEnd - 1; i >= colStart; i--) {
res[rowEnd][i] = index++;
}
//给第一列赋值,这时j是不能取rowStart的,刚好到8那里就结束循环,然后又跳到第一行赋值那开始执行
for(int j = rowEnd - 1; j > rowStart; j--) {
res[j][colStart] = index++;
}
rowStart ++;
rowEnd --;
colStart ++;
colEnd --;
}
return res;
}