其他分享
首页 > 其他分享> > 剑指 Offer 29. 顺时针打印矩阵

剑指 Offer 29. 顺时针打印矩阵

作者:互联网

剑指 Offer 29. 顺时针打印矩阵

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。

 

示例 1:

输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]
输出:[1,2,3,6,9,8,7,4,5]

示例 2:

输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
输出:[1,2,3,4,8,12,11,10,9,5,6,7]

 

限制:

 1 class Solution {
 2 public:
 3     vector<int> spiralOrder(vector<vector<int>>& matrix) {
 4         if (matrix.size() == 0) {
 5             return {};
 6         }
 7         vector<int> ans;
 8         int left = 0;
 9         int right = matrix[0].size() - 1;
10         int top = 0;
11         int bottom = matrix.size() - 1;
12         while (1) {
13             // 1、从左向右
14             for (int i = left; i <= right; i++) {
15                 ans.emplace_back(matrix[top][i]);
16             }
17             if (++top > bottom) {
18                 break;
19             }
20             // 2、从上到下
21             for (int i = top; i <= bottom; i++) {
22                 ans.emplace_back(matrix[i][right]);
23             }
24             if (left > (--right)) {
25                 break;
26             }
27             // 3、从右向左
28             for (int i = right; i >= left; i--) {
29                 ans.emplace_back(matrix[bottom][i]);
30             }
31             if (top > (--bottom)) {
32                 break;
33             }
34             // 4、从下到上
35             for (int i = bottom; i >= top; i--) {
36                 ans.emplace_back(matrix[i][left]);
37             }
38             if (++left > right) {
39                 break;
40             }
41         }
42         return ans;
43     }
44 };

 

标签:顺时针,matrix,bottom,int,Offer,29,right,ans,left
来源: https://www.cnblogs.com/MGFangel/p/16319724.html