Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order.
For example,
Given n = 3,
[ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ]Analysis:
Similiar with the former one Spiral Matrix
Java
public int[][] generateMatrix(int n) {
int [][] result = new int[n][n];
int x1=0;
int y1=0;
int x2=n-1;
int y2 = n-1;
int val = 1;
while(x1<=x2 && y1<=y2){
for(int i=y1;i<=y2;i++)
result[x1][i] = val++;
for(int j = x1+1;j<=x2;j++)
result[j][y2] = val++;
if(x1!=x2)
for(int i=y2-1;i>=y1;i--)
result[x2][i] = val++;
if(y1!=y2)
for(int j=x2-1;j>y1;j--)
result[j][y1]=val++;
x1++;y1++;x2--;y2--;
}
return result;
}c++
vector<vector<int> > generateMatrix(int n) {
vector<vector<int>> matrix(n);
if(n == 0) return matrix;
for(int i=0; i<n; i++){
matrix[i].resize(n);
}
int x1 = 0;
int y1 = 0;
int x2 = n - 1;
int y2 = n - 1;
int val = 1;
while(x1<=x2 && y1<=y2){
for(int j = y1; j<=y2; ++j)
matrix[x1][j] = val++;
for(int i = x1+1; i<=x2; ++i)
matrix[i][y2] = val++;
if(x2 !=x1)
for(int j = y2-1; j>=y1; --j)
matrix[x2][j] = val++;
if(y2 != y1)
for(int i = x2-1; i>x1; --i)
matrix[i][y1] = val++;
x1++, y1++, x2--, y2--;
}
return matrix;
}
生成螺旋矩阵的Java实现

本文提供了一段Java代码,用于生成指定大小的螺旋矩阵,矩阵元素从1填充到n^2。
1126

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



