题意: 给定一个整数n,生成一个方阵,该方阵用1到
n2
以螺旋顺序填满。
举例:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]
分析: 本题先完成外圈再实现内圈,比如上例中[1,2,3,4,5,7,8]构成外圈,9是内圈。本题总体来说不难。
代码
public int[][] generateMatrix(int n) {
int num = 1; //表示数字
int[][] result = new int[n][n]; //返回结果
int round = 0; //表示圈数
while(num <= n*n){
int i = round;
int j = round;
for(; j < n - round; j++){ //四个for循环完成一圈的赋值
result[i][j] = num;
num++;
}
j--;
for(++i; i < n - round; i++){
result[i][j] = num;
num++;
}
i--;
for(--j; j >=round; j--){
result[i][j] = num;
num++;
}
j++;
for(--i; i > round; i--){
result[i][j] = num;
num++;
}
round++;
}
return result;
}