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

    题目描述

    输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.
     
    思路:
    设置圈的概念,一圈一圈打印,圈起点的位置为左上角,圈的层数和row,col中小的数有关。打印的时候需要判断最后一圈,可能存在,只有一行或一列或一个数的情况。
     
    AC代码:
     1 class Solution {
     2 public:
     3     vector<int> printMatrix(vector<vector<int> > matrix) {
     4         vector<int> ans;
     5 
     6         int row=matrix.size();
     7         int col=matrix[0].size();
     8         
     9         int circle=((row<col?row:col)-1)/2+1;
    10         
    11 
    12         for(int i=0;i<circle;i++)
    13         {
    14             for(int j=i;j<col-i;j++)
    15                 ans.push_back(matrix[i][j]);
    16             
    17             for(int k=i+1;k<row-i;k++)
    18                 ans.push_back(matrix[k][col-i-1]);
    19             
    20             for(int m=col-i-2;(m>=i)&&(row-i-1!=i);m--)
    21                 ans.push_back(matrix[row-i-1][m]);
    22             
    23             for(int l=row-i-2;(l>i)&&(col-i-1!=i);l--)
    24                 ans.push_back(matrix[l][i]);            
    25         }
    26         
    27         return ans; 
    28     }
    29 };
  • 相关阅读:
    Java Script 读书笔记 (二) 错误处理机制 -- 没看懂,待review
    Visual Studio Code Tips
    SQLServer数据库分页查询
    Sql server inner join......on
    Sql server if-else以及switch
    git介绍
    Fiddler
    cocos2d对动画的各种操作
    SQLI
    Windows系统命令备份
  • 原文地址:https://www.cnblogs.com/SeekHit/p/5773242.html
Copyright © 2011-2022 走看看