力扣 54.螺旋矩阵

力扣 54.螺旋矩阵_第1张图片
力扣 54.螺旋矩阵_第2张图片
**思路很简单:**按照手工的方法,依次进行从左到右、从上到下、从右到左、从下到上,不断循环直至不满足条件。
代码:

class Solution {
public:
    vector<int> spiralOrder(vector<vector<int>>& matrix) {
        int n=matrix.size();
        int m=matrix[0].size();
        int top=0, buttom=n-1, left=0, right=m-1;//上下左右边界的下标
        vector<int>res;
        while(top<=buttom && left<=right ){
            //从左到右
           for(int temp=left;temp<=right;temp++){
                res.push_back(matrix[top][temp]);
            }
            top++;
            //从上到下
            for(int temp=top;temp<=buttom;temp++){
                res.push_back(matrix[temp][right]);
            }
            right--;
            //从右到左
            if(top<=buttom ){//溢出检查
                 for (int temp = right; temp >= left; temp--) {
                    res.push_back(matrix[buttom][temp]);
                }
                buttom--;
            }
            //从下到上
            if(left<=right){//溢出检查
                for (int temp = buttom; temp >= top; temp--) {
                    res.push_back(matrix[temp][left]);
                }
                left++;
            }
        }
        return res;
    }
};

力扣 54.螺旋矩阵_第3张图片

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