一、问题描述
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 ] ]
二、问题分析
此题与【leetcode】【54】Spiral Matrix基本类似。需要注意的是,此题换成了方阵,那么就需要考虑中间节点的问题。
三、Java AC代码
public int[][] generateMatrix(int n) {
int[][] matrix = null;
if (n<0) {
return matrix;
}
matrix = new int[n][n];
int num = 1;
int left = 0, right = n - 1, top = 0, bottom = n - 1;
while(left<right && top<bottom){
for (int i = left; i < right; i++) {
matrix[top][i] = num++;
}
for (int i = top; i < bottom; i++) {
matrix[i][right] = num++;
}
for (int i = right; i > left; i--) {
matrix[bottom][i] = num++;
}
for (int i = bottom; i > top; i--) {
matrix[i][left] = num++;
}
left++;
right--;
top++;
bottom--;
}
if ((n&1) != 0) {
matrix[n/2][n/2] = num;
}
return matrix;
}