题解 | #螺旋矩阵#

螺旋矩阵

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

想清楚区别划分再去写,挺容易发懵出错得。

记住缩小区间得时候,

left++;right--;down--;up++;别整混了。

class Solution {
public:
    vector<int> spiralOrder(vector<vector<int> > &matrix) {
        //
        vector<int> ans;
        int m=matrix.size();
        if(m==0)
        return ans;
        int n=matrix[0].size();
        if(n==0)
        return ans;

        int left=0;
        int right=n-1;
        int up=0;
        int down=m-1;
        //[1,2,3]
        //[4,5,6]
        //[7,8,9]
        //[1,2]
        //[3,4]
        while(left<=right && up<=down)
        {
            for(int i=left;i<=right;i++)
            ans.push_back(matrix[up][i]);
            up++;
            if(up>down)
            break;
            for(int i=up;i<=down;i++)
            ans.push_back(matrix[i][right]);
            right--;
            if(left>right)
            break;

            for(int i=right;i>=left;i--)
            ans.push_back(matrix[down][i]);
            down--;
            if(up>down)
            break;

            for(int i=down;i>=up;i--)
            ans.push_back(matrix[i][left]);
            left++;
            if(left>right)
            break;
        }
        return ans;

    }
};

全部评论

相关推荐

11-06 10:58
已编辑
门头沟学院 嵌入式工程师
双非25想找富婆不想打工:哦,这该死的伦敦腔,我敢打赌,你简直是个天才,如果我有offer的话,我一定用offer狠狠的打在你的脸上
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务