题目:
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 ] ]解法:
与Spiral Matrix一样,用left,right,top,bottom保存矩阵的边界,从最外层开始遍历,然后缩小边界即可
public class No58_SpiralMatrixII {
public static void main(String[] args){
System.out.println(generateret(0));
}
public static int[][] generateret(int n) {
if(n<=0) return new int[][]{};
int[][] ret = new int[n][n];
int count = 1;
int left = 0;
int right = n-1;
int top = 0;
int bottom = n-1;
while(left<=right && top<=bottom){
if(left == right){
for(int i=top;i<=bottom;i++){
ret[i][left] = count++;
}
break;
}
if(top == bottom){
for(int j=left;j<=right;j++){
ret[top][j] = count++;
}
break;
}
for(int j=left;j<=right;j++){
ret[top][j] = count++;
}
for(int i=top+1;i<=bottom;i++){
ret[i][right] = count++;
}
for(int j=right-1;j>=left;j--){
ret[bottom][j] = count++;
}
for(int i=bottom-1;i>top;i--){
ret[i][left] = count++;
}
left++;right--;top++;bottom--;
}
return ret;
}
}