之前见过类似的题目,当时好像是叫做分治法?所以就看到这题目就有一点点的思路了:
用递归(不熟悉递归)或者while将这个问题分为四个大问题,即上下左右的次序 依次对各个部位进行排列再组装成一个完整的矩阵。
class Solution {
public int [][] design(int [][]a,int n)
{
int s=0,e=n-1,l=n,flag=1;
while(l!=0)
{
if(l==1)
{
a[s][e]=flag;
return a;
}
for(int i=s;i<e;i++){
a[s][i]=flag++;
}
for(int i=s;i<e;i++){
a[i][e]=flag++;
}
for(int i=e;i>s;i--){
a[e][i]=flag++;
}
for(int i=e;i>s;i--){
a[i][s]=flag++;
}
s++;e--;
l=l-2;
}
return a;
}
public int[][] generateMatrix(int n) {
int [][]a=new int[n][n];
a=design(a,n);
return a;
}
}