栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

顺时针打印矩阵——《剑指offer》

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

顺时针打印矩阵——《剑指offer》

题目描述

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。

示例 1:

输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]
输出:[1,2,3,6,9,8,7,4,5]
示例 2:

输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
输出:[1,2,3,4,8,12,11,10,9,5,6,7]
 

限制:

0 <= matrix.length <= 100
0 <= matrix[i].length <= 100

代码实现
class Solution {
public:
    vector retArr;
    vector> data;
    int rows,cols;
    void draw(int start){
        int endRow=rows-1-start,endCol=cols-1-start;
        for(int i=start;i<=endCol;i++){
            retArr.push_back(data[start][i]);
        }

        if(endRow>start){
            for(int i=start+1;i<=endRow;i++){
                retArr.push_back(data[i][endCol]);
            }
        }

        if(endCol>start&&endRow>start){
            for(int i=endCol-1;i>=start;i--){
                retArr.push_back(data[endRow][i]);
            }
        }

        if(endCol>start&&endRow-start>=2){
            for(int i=endRow-1;i>start;i--){
                retArr.push_back(data[i][start]);
            }
        }
    }
    vector spiralOrder(vector>& matrix) {
        if(matrix.size()==0){
            return retArr;
        }
        data=matrix;
        int start=0;
        rows=matrix.size(),cols=matrix[0].size();
        while(rows>start*2&&cols>start*2){
            draw(start);
            start++;
        }
        return retArr;
    }
};

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/883324.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号