题目描述
Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order.
For example,
Given n = 3,
You should return the following matrix:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]
解题思路
这是Spiral Matrix 简化版本,基本思路一致,只不过行列数相同,均等于n.对Spiral Matrix的结果简化即可。
程序实现
class Solution {
public int[][] generateMatrix(int n) {
if(n<0)
return null;
int matrix[][]=new int[n][n];
if(n==0)
return matrix;
int start=0;
int num=1;
while(start*2<n){
int end=n-1-start;
//从左到右打印一行
for(int i=start;i<=end;i++)
matrix[start][i]=num++;
//从上往下打印一列
if(start<end){
for(int i=start+1;i<=end;i++)
matrix[i][end]=num++;
}
//从右往左打印一行
if(start<end){
for(int i=end-1;i>=start;i--)
matrix[end][i]=num++;
}
//从下往上打印一列
if(start<end-1){
for(int i=end-1;i>=start+1;i--)
matrix[i][start]=num++;
}
start++;
}
return matrix;
}
}