1
- class Solution {
2
- public:
3
- vector<int > spiralOrder (vector<vector<int >>& matrix) {
4
- int m = matrix.size (), n = matrix[0 ].size ();
5
- int dirs[5 ] = {0 , 1 , 0 , -1 , 0 };
6
- vector<int > ans;
7
- for (int h = m * n, i = 0 , j = 0 , k = 0 ; h; --h) {
8
- ans.push_back (matrix[i][j]);
9
- matrix[i][j] += 300 ;
10
- int x = i + dirs[k], y = j + dirs[k + 1 ];
11
- if (x < 0 || x >= m || y < 0 || y >= n || matrix[x][y] > 100 ) {
12
- k = (k + 1 ) % 4 ;
13
- }
14
- i += dirs[k];
15
- j += dirs[k + 1 ];
16
- }
17
- // for (int i = 0; i < m; ++i) {
18
- // for (int j = 0; j < n; ++j) {
19
- // matrix[i][j] -= 300;
20
- // }
21
- // }
22
- return ans;
23
- }
24
- };
1
+ class Solution {
2
+ public:
3
+ vector<int > spiralOrder (vector<vector<int >>& matrix) {
4
+ int m = matrix.size (), n = matrix[0 ].size ();
5
+ int dirs[5 ] = {0 , 1 , 0 , -1 , 0 };
6
+ int i = 0 , j = 0 , k = 0 ;
7
+ vector<int > ans;
8
+ for (int h = m * n; h; --h) {
9
+ ans.push_back (matrix[i][j]);
10
+ matrix[i][j] += 300 ;
11
+ int x = i + dirs[k], y = j + dirs[k + 1 ];
12
+ if (x < 0 || x >= m || y < 0 || y >= n || matrix[x][y] > 100 ) {
13
+ k = (k + 1 ) % 4 ;
14
+ }
15
+ i += dirs[k];
16
+ j += dirs[k + 1 ];
17
+ }
18
+ for (i = 0 ; i < m; ++i) {
19
+ for (j = 0 ; j < n; ++j) {
20
+ matrix[i][j] -= 300 ;
21
+ }
22
+ }
23
+ return ans;
24
+ }
25
+ };
0 commit comments