【数组】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 };

 

posted @ 2020-05-05 15:23  梦醒潇湘  阅读(154)  评论(0)    收藏  举报