剑指 Offer 29. 顺时针打印矩阵(简单)

发布时间 2023-08-01 22:32:15作者: 孜孜不倦fly

题目:

//不可以用代码随想录里螺旋矩阵的思路

class Solution {
public:
    vector<int> spiralOrder(vector<vector<int>>& matrix) {
            vector<int> result;
            if(matrix.empty()) return result;
            int rl=0,rh=matrix.size()-1;        //定义上下边界
            int cl=0,ch=matrix[0].size()-1;     //定义左右边界
            while(1){
                for(int i=cl;i<=ch;i++)result.push_back(matrix[rl][i]);  //从左到右
                if(++rl>rh)break;                                        //上边界先加一,再判断会不会超出下边界
                for(int i=rl;i<=rh;i++)result.push_back(matrix[i][ch]);  //从上到下
                if(--ch<cl)break;                                        //右边界先减一,再判断会不会超出左边界
                for(int i=ch;i>=cl;i--)result.push_back(matrix[rh][i]);  //从右到左
                if(--rh<rl)break;                                        //下边界减一判断会不会超出上边界
                for(int i=rh;i>=rl;i--)result.push_back(matrix[i][cl]);  //从下到上
                if(++cl>ch)break;
            } 
            return result;
    }
};

以上代码转自力扣评论区