题解 | #螺旋矩阵#

螺旋矩阵

https://www.nowcoder.com/practice/7edf70f2d29c4b599693dc3aaeea1d31

#include <vector>
class Solution {
public:

    vector<int> spiralOrder(vector<vector<int> > &matrix) {
        vector<int> res;
        int n=matrix.size();
        if (n==0) {
            return res;
        }
        int left=0;
        int right=matrix[0].size()-1;
        int up=0;
        int down=n-1;
        while (left<=right&&up<=down) {
            //上边界从左向右
            for(int i=left;i<=right;i++){
                res.push_back(matrix[up][i]);
            }
            up++;
            if(up>down)
                break;
            //右边界从上向下
            for(int i=up;i<=down;i++){
                res.push_back(matrix[i][right]);
            }
            right--;
            if(left>right)
                break;
            //下边界从右向左
            for(int i=right;i>=left;i--)
                res.push_back(matrix[down][i]);
            down--;
            if(up>down)
                break;
            //左边界从下向上
            for (int i=down;i>=up;i--)
                res.push_back(matrix[i][left]);
            left++;
            if(left>right)
                break;
            

        }
        return res;
    }
};

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务