Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order.
For example,
Given n = 3,
You should return the following matrix:
[ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ]
public class Solution {
public int[][] generateMatrix(int n) {
int[][] res = new int[n][n];
int cnt = 1;
int top = 0;
int bottom = n - 1;
int left = 0;
int right = n - 1;
while (left < right && top < bottom) {
for (int i = left; i < right; i++) {
res[top][i] = cnt++;
}
for (int i = top; i < bottom; i++) {
res[i][right] = cnt++;
}
for (int i = right; i > left; i--) {
res[bottom][i] = cnt++;
}
for (int i = bottom; i > top; i--) {
res[i][left] = cnt++;
}
left++;
right--;
top++;
bottom--;
}
if (n % 2 != 0) {
res[n/2][n/2] = cnt;
}
return res;
}
}
本文介绍了一个生成螺旋矩阵的算法,该算法接收一个整数n作为输入,并返回一个n×n的螺旋矩阵。矩阵中填充了从1到n²的元素,按螺旋顺序排列。文章通过一个具体的例子展示了算法的工作原理,并提供了详细的Java实现代码。
786

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



