Leetcode 59 螺旋矩阵2
给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。
class Solution {
//用于判定填到哪一位
int i=0;
int n;
public int[][] generateMatrix(int n) {
int[][] nums = new int[n][n];
this.n = n;
fill(nums,0);
return nums;
}
public void fill(int[][] nums,int level){
int temp;
//只剩中间一个
if(level == n-level-1){
nums[level][level]=++i;
return;
}
//首先向右填充
for(temp = level;temp<n-level-1;temp++){
nums[level][temp] = ++i;
if(i==n*n){
return;
}
}
//向下填充
for(temp = level;temp<n-level-1;temp++){
nums[temp][n-level-1] = ++i;
if(i==n*n){
return;
}
}
//向左填充
for(temp = n-level-1;temp>level;temp--){
nums[n-level-1][temp]=++i;
if(i==n*n){
return;
}
}
//向上填充
for(temp = n-level-1;temp>level;temp--){
nums[temp][level]=++i;
if(i==n*n){
return;
}
}
fill(nums,++level);
}
}