zoukankan      html  css  js  c++  java
  • 剑指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.

    解题思路:

    这题之前刷leetcode时遇到过。用四个指针来维护矩阵的上下左右边界,每输出完一行或一列就改动对应指针,使得矩阵的搜索范围缩写。

    注意,每次更新完边界时,需要进行一次边界判断,防止重复扫描。

    代码:

    class Solution {
    public:
        vector<int> printMatrix(vector<vector<int> > matrix) {
            vector<int> res;
            if(matrix.size()==0)
                return res;
            int row_t = 0;
            int row_b = matrix.size()-1;
            int col_l = 0;
            int col_r = matrix[row_t].size()-1;
            while(row_t<=row_b && col_l<=col_r)
            {
                for(int i = col_l; i<=col_r; i++)
                {
                    res.push_back(matrix[row_t][i]);
                }
                row_t++;
                if(row_t>row_b)
                    break;
                for(int i = row_t; i<=row_b; i++)
                {
                    res.push_back(matrix[i][col_r]);
                }
                col_r--;
                if(col_r<col_l)
                    break;
                for(int i = col_r; i>=col_l; i--)
                {
                    res.push_back(matrix[row_b][i]);
                }
                row_b--;
                if(row_b<row_t)
                    break;
                for(int i = row_b; i>=row_t; i--)
                {
                    res.push_back(matrix[i][col_l]);
                }
                col_l++;
                if(col_l>col_r)
                    break;
            }
            return res;
        }
    };
  • 相关阅读:
    json 总结
    Django---admin简单功能
    Django---Models
    Django---Template(模板)
    Django---URL、Views
    Django---定义、MVC和MTV模式、命令行工具、配置文件settings
    必学算法
    一个虚拟社交公司的融资历程
    分布式系统,本文引用“courage”的博客
    mysql语句
  • 原文地址:https://www.cnblogs.com/LJ-LJ/p/10596978.html
Copyright © 2011-2022 走看看