侧边栏壁纸
博主头像
Hope博主等级

努力赚钱的工科研究生

  • 累计撰写 362 篇文章
  • 累计创建 129 个标签
  • 累计收到 5 条评论
标签搜索

LeetCode 54. 螺旋矩阵

Hope
2022-02-22 / 0 评论 / 0 点赞 / 353 阅读 / 579 字
温馨提示:
本文最后更新于 2022-02-22,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

LeetCode 54. 螺旋矩阵

思路:
处理好转弯时候的选择,然后再在转弯的时候做处理。

//先 右 下 左  上
int dx[]={0,1,0,-1};
int dy[]={1,0,-1,0};

代码:

class Solution {
public:
    vector<int> spiralOrder(vector<vector<int>>& matrix) {
        int n=matrix.size(),m=matrix[0].size();
        vector<int> res;
        if(!n) return res;
        
        vector<vector<bool>> st(n, vector<bool>(m));

        int dx[]={0,1,0,-1};
        int dy[]={1,0,-1,0};

        int d=0;
        int x=0,y=0;

        for(int i=0;i<n*m;i++){
            res.push_back(matrix[x][y]);
            st[x][y]=true;
            int a=x+dx[d], b=y+dy[d];
            //如果出现矛盾
            if(a < 0 || a>=n || b<0 || b>=m || st[a][b]){
                //改变方向
                d=(d+1)%4;
                a=x+dx[d], b=y+dy[d];
            }
            x=a;
            y=b;
        }
        return res;
    }
};
0

评论区