面试题29. 顺时针打印矩阵

题目:

 

 

解答:

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

 

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