Skip to content

Commit b7f5181

Browse files
authored
Create spiral-matrix-iv.cpp
1 parent dcd9490 commit b7f5181

File tree

1 file changed

+22
-0
lines changed

1 file changed

+22
-0
lines changed

C++/spiral-matrix-iv.cpp

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
// Time: O(m * n)
2+
// Space: O(1)
3+
4+
// linked list, array
5+
class Solution {
6+
public:
7+
vector<vector<int>> spiralMatrix(int m, int n, ListNode* head) {
8+
static const vector<pair<int, int>> directions = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}};
9+
vector<vector<int>> result(m, vector<int>(n, -1));
10+
for (int i = 0, j = 0, d = 0; head; head = head->next) {
11+
result[i][j] = head->val;
12+
if (!(0 <= i + directions[d].first && i + directions[d].first < m &&
13+
0 <= j + directions[d].second && j + directions[d].second < n &&
14+
result[i + directions[d].first][j + directions[d].second] == -1)) {
15+
d = (d + 1) % 4;
16+
}
17+
i += directions[d].first;
18+
j += directions[d].second;
19+
}
20+
return result;
21+
}
22+
};

0 commit comments

Comments
 (0)