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