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 37 38 39 40
| class Solution { public: vector<int> spiralOrder(vector<vector<int>>& matrix) { int m = matrix.size(); int n = matrix[0].size();
vector<int> res; int top = 0, bottom = m - 1; int left = 0, right = n - 1; while(top <= bottom && left <= right) { for(int j = left; j <= right; j++) { res.push_back(matrix[top][j]); } top++; for(int i = top; i <= bottom; i++) { res.push_back(matrix[i][right]); } right--; if(top <= bottom) { for(int j = right; j >= left; j--) { res.push_back(matrix[bottom][j]); } bottom--; } if(left <= right) { for(int i = bottom; i >= top; i--) { res.push_back(matrix[i][left]); } left++; } } return res; } };
|