【题目】
Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order.
For example,
Given n = 3
,
[ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ]【解析】
这个题是将1到n^2螺旋状打印到二维数组之中,也是找规律就好了。
【代码】
public int[][] generateMatrix(int n) {
int[][] res = new int[n][n];
if(n==0) return res;
int up=0,down=0,left=0,right=0,num=1;
while(true){
for(int i=up;i<n-up;i++){
res[up][i] = num;
num++;
}
if(num>n*n) break;
up++;
for(int i=right+1;i<n-right;i++){
res[i][n-1-right] = num;
num++;
}
if(num>n*n) break;
right++;
for(int i=n-2-down;i>=down;i--){
res[n-1-down][i] = num;
num++;
}
if(num>n*n) break;
down++;
for(int i=n-2-left;i>left;i--){
res[i][left] = num;
num++;
}
if(num>n*n) break;
left++;
}
return res;
}