Leetcode 54 Solution
This article provides solution to leetcode question 54 (spiral-matrix)
Access this page by simply typing in "lcs 54" in your browser address bar if you have bunnylol configured.
Leetcode Question Link
https://leetcode.com/problems/spiral-matrix
Solution
class Solution {
public:
vector<int> spiralOrder(vector<vector<int>>& matrix) {
vector<int> res;
int m = matrix.size();
if (m == 0)
return res;
int n = matrix[0].size();
vector<vector<int>> a;
for (int i = 0; i < m; i++)
a.push_back(vector<int>(n));
int di = 0;
int dj = 1;
int i = 0;
int j = 0;
while (res.size() < m * n)
{
a[i][j] = 1;
res.push_back(matrix[i][j]);
if (di == 0 && dj == 1)
{
if (j + dj >= n || a[i][j + dj] == 1)
di = 1, dj = 0;
}
else if (di == 1 && dj == 0)
{
if (i + di >= m || a[i + di][j] == 1)
di = 0, dj = -1;
}
else if (di == 0 && dj == -1)
{
if (j + dj < 0 || a[i][j + dj] == 1)
di = -1, dj = 0;
}
else if (di == -1 && dj == 0)
{
if (i + di < 0 || a[i + di][j] == 1)
di = 0, dj = 1;
}
i += di;
j += dj;
}
return res;
}
};