首页 > 其他 > 详细

顺时针打印矩阵

时间:2020-05-29 16:34:42      阅读:43      评论:0      收藏:0      [点我收藏+]
 1 vector<int> spiralOrder(vector<vector<int>>& matrix) {
 2 vector<int> arr;
 3 if(matrix.empty())        
 4   return arr;
 5 int len = matrix.size();
 6 int wid = matrix[0].size();
 7 vector<int> vis(len*wid,0);
 8 int i = 0,j = 0;
 9 bool sign = true;
10 
11 while(sign) {
12   if(i < len && j < wid){
13       if(vis[i*len+j]==0)  {arr.push_back(matrix[i][j]); vis[i*len+j] = 1;}
14       if(j+1<wid) { if(vis[i*len+j]==0)  { j++; continue; }}
15       if(i+1 <len) { if(vis[i*len+j]==0) { i++; continue; }}
16       if(j > 0) { if(vis[i*len+j]==0){ j--; continue;}}
17       if(i > 0) { if(vis[i*len+j]==0}{ while(vis[(i-1)*len+j]==0) { i--;
18                       arr.push_back(matrix[i][j]);  vis[i*len+j] = 1; } }
19       if(arr.size() == len*wid) sign = false;
20 }
21       return arr;
22 }
23 }

解题思路:向右--向下--向左--向上。当输出数组size()与矩阵数组大小相同,结束循环。

首先:将第一个节点输出

向右:横坐标加1,标记,输出,直到到达最右边

向下:纵坐标加1,标记,输出,直到到达最下边

向左:横坐标-1,标记,输出,直到到达最左边

向上:纵坐标-1,标记,输出,到达已经标记的下一行

完成第一次顺时针,不断循环,直到达到循环结束条件

顺时针打印矩阵

原文:https://www.cnblogs.com/pengtangtang/p/12987779.html

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