• 顺时针打印矩阵


    题目描述

    输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下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.
     
    解题思路:
    分析发生方向改变的位置,发现跟圈数可以形成关系,主要考察程序控制能力。
    class Solution {
    public:
        vector<int> printMatrix(vector<vector<int> > matrix) {
            int n = matrix.size();
            int m = matrix[0].size();
            int allNum = n*m;
            vector<int> res;
            int round = 1;
            int i = 0, j = 0;
            int iv = 0, jv = 1;
            while(allNum > 0){
                if(i == round && iv==-1 && jv==0){
                    //向右走
                    iv = 0;
                    jv = 1;
                    round++;
                }else if(j == m-round && iv == 0 && jv == 1){
                    //向下走
                    iv = 1;
                    jv = 0;
                }else if(i == n-round && iv == 1 && jv == 0){
                    //向左走
                    iv = 0;
                    jv = -1;
                }else if(j == round -1 && iv == 0 && jv == -1){
                    //向上走
                    iv = -1;
                    jv = 0;
                }
                res.push_back(matrix[i][j]);
                allNum--;
                i = i + iv;
                j = j + jv;
            }
            return res;
        }
    };
    

      

  • 相关阅读:
    自适应网页设计?
    布局设置加版心?
    bootstrap框架使用?
    Electron框架下,如何使用jquery?
    轮播插件swiper.js?
    表格出现滚动条设置?
    overflow问题--滚动设置?
    移动端页面适配ipad?
    移动端页面构建需注意?
    复杂的Sql分组
  • 原文地址:https://www.cnblogs.com/chengsheng/p/10655562.html
Copyright © 2020-2023  润新知