【数组】54. 螺旋矩阵
题目:

解答:
迭代法。
1 class Solution { 2 public: 3 4 vector<int> spiralOrder(vector<vector<int> >& matrix) 5 { 6 vector<int> result; 7 if (matrix.empty()) 8 { 9 return result; 10 } 11 12 ssize_t beginX = 0, endX = matrix[0].size() - 1; 13 ssize_t beginY = 0, endY = matrix.size() - 1; 14 15 while (true) 16 { 17 // From left to right 18 for (ssize_t i = beginX; i <= endX; ++i) 19 result.push_back(matrix[beginY][i]); 20 if (++beginY > endY) 21 break; 22 23 // From top down 24 for (ssize_t i = beginY; i <= endY; ++i) 25 result.push_back(matrix[i][endX]); 26 if (beginX > --endX) 27 break; 28 29 // From right to left 30 for (ssize_t i = endX; i >= beginX; --i) 31 result.push_back(matrix[endY][i]); 32 if (beginY > --endY) 33 break; 34 35 // From bottom up 36 for (ssize_t i = endY; i >= beginY; --i) 37 result.push_back(matrix[i][beginX]); 38 if (++beginX > endX) 39 break; 40 } 41 return result; 42 } 43 };

浙公网安备 33010602011771号