原题:
解决方法:
跟54. Spiral Matrix太相似了,用类似的方法,甚至绝大部分代码都可以重用。
代码:
Given an integer n, generate a square matrix filled with elements from 1 ton2 in spiral order.
For example,
Given n = 3
,
[ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ]
解决方法:
跟54. Spiral Matrix太相似了,用类似的方法,甚至绝大部分代码都可以重用。
代码:
vector<vector<int>> generateMatrix(int n) {
vector<vector<int>> res(n, vector<int>(n, 0));
int circle[4][2] = { { 0, 1 },{ 1, 0 },{ 0, -1 },{ -1, 0 } };
int index = 0, x = 0, y = 0;
int limit[4] = { -1, n, -1, n };
for (int i = 1; i <= n * n; i++) {
res[x][y]= i;
int tempX = x + circle[index][0];
int tempY = y + circle[index][1];
if (tempX <= limit[0]) {
index += 1;
index %= 4;
limit[2] += 1;
}
else if (tempX >= limit[1]) {
index += 1;
index %= 4;
limit[3] -= 1;
}
else if (tempY <= limit[2]) {
index += 1;
index %= 4;
limit[1] -= 1;
}
else if (tempY >= limit[3]) {
index += 1;
index %= 4;
limit[0] += 1;
}
x += circle[index][0];
y += circle[index][1];
}
return res;
}