❗❗59螺旋矩阵II
力扣刷题 59 螺旋矩阵 II--day2
题目分析
还是要多在纸上模拟,
这道题目要小心边界条件, 保持一致性
一条边一条边处理, 区间是左闭右开
vector<vector<int>> generateMatrix(int n)
{
vector<vector<int>> result(n, vector<int>(n));
int length = n;
int value = 1;
int beginXY = 0;
int endXY = length - 2;
while (length > 0)
{
for (int j = beginXY; j <= endXY; j++)
{
result[beginXY][j] = value++;
}
for (int i = beginXY; i <= endXY; i++)
{
result[i][endXY + 1] = value++;
}
for (int j = endXY + 1; j > beginXY; j--)
{
result[endXY + 1][j] = value++;
}
for (int i = endXY + 1; i > beginXY; i--)
{
result[i][beginXY] = value++;
}
beginXY++;
endXY--;
length -= 2;
}
//当n为奇数时, 最中间的数要单独处理
if (n % 2)
{
int mid = n / 2;
result[mid][mid] = n * n;
}
return result;
}