zoukankan      html  css  js  c++  java
  • 顺时针打印矩阵

     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+1]==0)  { j++; continue; }}
    15       if(i+1 <len) { if(vis[(i+1)*len+j]==0) { i++; continue; }}
    16       if(j > 0) { if(vis[i*len+j-1]==0){ j--; continue;}}
    17       if(i > 0) { if(vis[(i-1)*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,标记,输出,到达已经标记的下一行

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

  • 相关阅读:
    长宽广州地区DNS
    修改PHP的memory_limit限制
    适用于Magento的最合适的.htaccess写法
    在magento中如何回复客户的评论
    冲刺!
    冲刺!
    冲刺!
    冲刺!
    冲刺!
    冲刺!
  • 原文地址:https://www.cnblogs.com/pengtangtang/p/12987779.html
Copyright © 2011-2022 走看看