-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path054_Spiral_Matrix.cpp
36 lines (36 loc) · 1.24 KB
/
054_Spiral_Matrix.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
class Solution {
public:
vector<int> spiralOrder(vector<vector<int>>& matrix) {
vector<int> ans;
int n = 0;
while (true) {
if (2 * n == matrix.size() or 2 * n == matrix[0].size()) break;
if (2 * n == matrix.size() - 1) {
for (int i = n; i < matrix[0].size() - n; i ++) {
ans.emplace_back(matrix[n][i]);
}
break;
}
if (2 * n == matrix[0].size() - 1) {
for (int i = n; i < matrix.size() - n; i ++) {
ans.emplace_back(matrix[i][n]);
}
break;
}
for (int i = n; i < matrix[0].size() - n - 1; i ++) {
ans.emplace_back(matrix[n][i]);
}
for (int i = n; i < matrix.size() -n - 1; i ++) {
ans.emplace_back(matrix[i][matrix[0].size() - n - 1]);
}
for (int i = matrix[0].size() - n - 1; i > n; i --) {
ans.emplace_back(matrix[matrix.size() - n - 1][i]);
}
for (int i = matrix.size() - n - 1; i > n; i --) {
ans.emplace_back(matrix[i][n]);
}
n ++;
}
return ans;
}
};