[力扣 Hot100]Day19 螺旋矩阵

题目描述

给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。

在这里插入图片描述

出处

思路

用递归做,先输出最外层(顶行右列底行左列),再递归输出内层矩阵,对矩阵宽或高为1时进行特判并返回、

代码

class Solution {
private:
    void order(vector<vector>& matrix, vector& res,int x1,int y1,int x2,int y2){
        int w=x2-x1+1;
        int h=y2-y1+1;
        if(w==0||h==0) return;
        if(w==1){
            for(int i=y1; i<=y2; i++)
                res.push_back(matrix[i][x1]);
            return;
        }
        if(h==1){
            for(int i=x1; i<=x2; i++)
                res.push_back(matrix[y1][i]);
            return;
        }
        for(int i=x1; i<x2; i++)//top
            res.push_back(matrix[y1][i]);
        for(int i=y1; ix1; i--)//bottom
            res.push_back(matrix[y2][i]);
        for(int i=y2; i>y1; i--)//left
            res.push_back(matrix[i][x1]);
        order(matrix,res,++x1,++y1,--x2,--y2);
    }
public:
    vector spiralOrder(vector<vector>& matrix) {
        vector result;
        int m=matrix.size();
        int n=matrix[0].size();
        order(matrix, result,0,0,n-1,m-1);
        return result;
    }
};

本文来自网络,不代表协通编程立场,如若转载,请注明出处:https://net2asp.com/ed383699a7.html