给定一个正整数 n,生成一个包含 1 到 n^2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。做这个题一定要自己写,自己不断地试错,总结出经验。
class Solution {
public:
vector<vector<int>> generateMatrix(int n) {
vector<vector<int>> result(n, vector<int>(n, 0));
int revolve_num = n / 2;
int count = 1;
for (unsigned i = 0; i < revolve_num; i++)
{
int x = n - i - 1;
for (unsigned up = i; up < x; up++)
{
result[i][up] = count++;
}
for (unsigned right = i; right < x; right++)
{
result[right][x] = count++;
}
for (unsigned down = i; down < x; down++)
{
result[x][n - down - 1] = count++;
}
for (unsigned left = i; left < x; left++)
{
result[n - left - 1][i] = count++;
}
}
if (n % 2 != 0)
{
result[revolve_num][revolve_num] = n * n;
}
return result;
}
};
本文涉及的代码出自代码随想录。