题目
给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。
示例:
输入: 3
输出:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]
算法实现
public int[][] GenerateMatrix(int n)
{
int[][] list = new int[n][];
for (int i = 0; i < n; i++)
{
list[i] = new int[n];
}
int line = 0, row = 0, s = 0;
int num = 1;
while (num <= n * n)
{
for (; line < n - s; line++)
{
list[row][line] = num;
num++;
}
if (num > n * n)
break;
for (row++, line--; row < n - s; row++)
{
list[row][line] = num;
num++;
}
if (num > n * n)
break;
for (line--, row--; line > -1 + s; line--)
{
list[row][line] = num;
num++;
}
if (num > n * n)
break;
for (row--, line++; row > 0 + s; row--)
{
list[row][line] = num;
num++;
}
line++;
row++;
s++;
}
return list;
}
执行结果
执行结果 : 通过
执行用时 : 308 ms, 在所有 C# 提交中击败了86.67%的用户
内存消耗 : 25 MB, 在所有 C# 提交中击败了11.11%的用户
小的总结
对上次的螺旋矩阵稍加改进即可。