思路: 和54题一模一样,所以没啥好讲的了,思路已经在54题讲过了,有不懂的地方去看54题吧。这边直接上代码了:
class Solution {
public int[][] generateMatrix(int n) {
int[][] matrix = new int[n][n];
int num = 1;
int left = 0, right = n - 1, up = 0, down = n - 1;
while(left < right && up < down){
// up
for(int i = left; i <= right; i++){
matrix[up][i] = num;
num++;
}
// right
for(int i = up + 1; i <= down; i++){
matrix[i][right] = num;
num++;
}
// down
for(int i = right - 1; i >= left; i--){
matrix[down][i] = num;
num++;
}
//left
for(int i = down - 1; i > up; i-- ){
matrix[i][left] = num;
num++;
}
up++;
down--;
left++;
right--;
}
// n is odd
if(left == right) matrix[n / 2][n / 2] = n * n;
return matrix;
}
}
总结:无