• 剑指offer 顺时针打印矩阵


    题目描述

    输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 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.

    思路:直接模拟就好了。只要确定每一次外圈的左上角坐标和右下角坐标,用4个for循环遍历两行两列就行。而最终的终止条件很重要,我是直接利用矩阵元素个数作为终止条件。

     1 class Solution {
     2 public:
     3     vector<int> printMatrix(vector<vector<int> > matrix) {
     4         vector<int> v;
     5         int rows = matrix.size();
     6         if (rows == 0)
     7             return v;
     8         int columns = matrix[0].size();
     9         int cnt = 0; //用于记录打印出的数字个数,作为循环终止条件
    10         int total = rows * columns;
    11         int start_row = 0, start_col = 0, end_row = rows - 1, end_col = columns - 1;
    12         while (cnt < total) {
    13             //由于每个for循环都会改变cnt的值,这也直接影响后面for循环的执行,如果cnt到达
    14             //终止条件,直接不执行,尤其可以解决单行单列的问题。
    15             for (int j = start_col; cnt < total && j <= end_col; j++) {
    16                 v.push_back(matrix[start_row][j]);
    17                 cnt++;
    18             }
    19             for (int i = start_row + 1; cnt < total && i <= end_row; i++) {
    20                 v.push_back(matrix[i][end_col]);
    21                 cnt++;
    22             }
    23             for (int j = end_col - 1; cnt < total && j >= start_col; j--) {
    24                 v.push_back(matrix[end_row][j]);
    25                 cnt++;
    26             }
    27             for (int i = end_row - 1; cnt < total && i > start_row; i--) {
    28                 v.push_back(matrix[i][start_col]);
    29                 cnt++;
    30             }
    31             start_row++;
    32             start_col++;
    33             end_row--;
    34             end_col--;
    35         }
    36         return v;
    37     }
    38 };
  • 相关阅读:
    Web开发利器Webstorm导入多个文件夹或者项目
    js react 全选和反选
    nginx的配置文件 【nginx.conf】
    nginx 服务器重启命令,关闭
    Nginx反向代理新篇-使用location对多个URL做反向代理
    Windows下Nginx的安装与配置
    es6 递归 tree
    自定义table样式
    数据库(7)
    数据库(6)
  • 原文地址:https://www.cnblogs.com/qinduanyinghua/p/10636327.html
Copyright © 2020-2023  润新知