【力扣刷题练习】54. 螺旋矩阵

题目描述:

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

题目解答:

class Solution {
public:
    vector<int> spiralOrder(vector<vector<int>>& matrix) {
        if(matrix.empty())
            return {};
        int l=0,r=matrix[0].size()-1,t=0,b=matrix.size()-1;
        vector<int> ans;
        while(true){
            for(int i=l;i<=r;i++)//向右移动
                ans.push_back(matrix[t][i]);
            if(++t>b)//判断向下移动是否越界
                break;
            for(int i=t;i<=b;i++)//向下移动
                ans.push_back(matrix[i][r]);
            if(--r<l)//判断向左移动是否越界
                break;
            for(int i=r;i>=l;i--)//向左移动
                ans.push_back(matrix[b][i]);
            if(--b<t)//判断向上移动是否越界
                break;
            for(int i=b;i>=t;i--)//向上移动
                ans.push_back(matrix[i][l]);
            if(++l>r)//判断向右移动是否越界
                break;    
        }
        return ans;
    }
};

题目思路:

思路较为简单,依次按螺旋方向将元素存储到容器内最终返回该容器即可。

你可能感兴趣的:(力扣刷题练习,leetcode,矩阵,算法)