这个题目是一道模拟数组的题目,本身没有什么高深的算法,主要是考察用代码描述抽象事物的能力,根据数组的边界可以确定上、左、下、右的边界,每一次的for循环填充一条边。
class Solution {
public int[][] generateMatrix(int n) {
int[][] array = new int[n][n];
int up = 0,down = n-1,left = 0,right = n-1,index = 1;
while(index <= n*n){
for(int i = left;i<=right;i++){
array[up][i] = index++;
}
up++;
for(int i = up;i<=down;i++){
array[i][right] = index++;
}
right--;
for(int i = right;i>=left;i--){
array[down][i] = index++;
}
down--;
for(int i = down;i>=up;i--){
array[i][left] = index++;
}
left++;
}
return array;
}
}