-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSpiral Matrix.cpp
More file actions
21 lines (21 loc) · 796 Bytes
/
Copy pathSpiral Matrix.cpp
File metadata and controls
21 lines (21 loc) · 796 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Solution {
public:
vector<int> spiralOrder(vector<vector<int> > &matrix) {
vector<int> ret;
int m = matrix.size();
if (m <= 0) return ret;
int n = matrix[0].size();
int imin = 0, imax = m - 1, jmin = 0, jmax = n - 1;
while (true) {
for (int j = jmin; j <= jmax; ++j) ret.push_back(matrix[imin][j]);
if (++imin > imax) break;
for (int i = imin; i <= imax; ++i) ret.push_back(matrix[i][jmax]);
if (--jmax < jmin) break;
for (int j = jmax; j >= jmin; --j) ret.push_back(matrix[imax][j]);
if (--imax < imin) break;
for (int i = imax; i >= imin; --i) ret.push_back(matrix[i][jmin]);
if (++jmin > jmax) break;
}
return ret;
}
};