首页 > 其他 > 详细

剑指29 顺时针打印矩阵

时间:2020-07-28 11:14:21      阅读:72      评论:0      收藏:0      [点我收藏+]

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

 

按层模拟,设置四个标志,每次循环++left,--right,--down,++up。需要注意的是,每次循环按四个方向输出,但是要注意只有一行或者一列的情况,要进行判断和跳出。

 1 class Solution {
 2 public:
 3     vector<int> spiralOrder(vector<vector<int>>& matrix) {
 4         int row=matrix.size();
 5         if(!row)
 6             return {};
 7         int col=matrix[0].size();
 8         int left=0,right=col-1,up=0,down=row-1;
 9         int x=0,y=0;
10         vector<int> ans;
11         while(left<=right && up<=down){
12             //cout<<left<<endl<<right<<endl<<up<<endl<<down;
13             x=left;y=up;
14             for(y=left;y<=right;++y)
15                 ans.push_back(matrix[x][y]);
16             --y;
17             if(up==down) break;
18             for(x=up+1;x<=down;++x)
19                 ans.push_back(matrix[x][y]);
20             --x;
21             if(left==right) break;
22             for(y=right-1;y>=left;--y)
23                 ans.push_back(matrix[x][y]);
24             ++y;
25             for(x=down-1;x>up;--x)
26                 ans.push_back(matrix[x][y]);
27             ++x;
28             
29             ++left;
30             --right;
31             --down;
32             ++up;
33         }
34         return ans;
35     }
36 };

 

剑指29 顺时针打印矩阵

原文:https://www.cnblogs.com/rookiez/p/13388387.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!