
思路: 和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;
}
}
总结:无
本文详细解析了矩阵螺旋填充算法的实现思路与代码,通过控制四个边界,依次填充上、右、下、左四边的元素,直到矩阵全部填满。特别地,当n为奇数时,还需额外处理中心位置的元素。

被折叠的 条评论
为什么被折叠?



