54. Spiral Matrix

54. Spiral Matrix_第1张图片
将矩阵按螺旋的方式重排成一个数列,要注意边界条件
第一种方法:

class Solution {
public:
    vector<int> spiralOrder(vector<vector<int> >& matrix) 
    {
        vector<int>result;
        if(matrix.empty())
            return result;
        vector<vector<int> >vis(matrix);
        int i,j;
        int m=vis.size();
        int n=vis[0].size();
        for(i=0;ifor(j=0;j0;
        int x=0,y=0;
        result.push_back(matrix[x][y]);
        int count=1;
        vis[x][y]=count;
        while(countwhile(y+11])
            {
                vis[x][++y]=++count;
                result.push_back(matrix[x][y]);
            }
            while(x+11][y])
            {
                vis[++x][y]=++count;
                result.push_back(matrix[x][y]);
            }
            while(y-1>=0&&!vis[x][y-1])
            {
                vis[x][--y]=++count;
                result.push_back(matrix[x][y]);
            }
            while(x-1>=0&&!vis[x-1][y])
            {
                vis[--x][y]=++count;
                result.push_back(matrix[x][y]);
            }
        }
        return result;
    }
};

另一种代码方式:

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

        vector<vector<bool> >vis(m,vector<bool>(n,false));
        int i=0,j=0;
        res.push_back(matrix[0][0]);
        vis[0][0]=true;
        while(res.size()while(j+11])
            {
                res.push_back(matrix[i][++j]);
                vis[i][j]=true;
            }
            while(i+11][j])
            {
                res.push_back(matrix[++i][j]);
                vis[i][j]=true;
            }

            while(j-1>=0 && !vis[i][j-1])
            {
                res.push_back(matrix[i][--j]);
                vis[i][j]=true;
            }
            while(i-1>=0 && !vis[i-1][j])
            {
                res.push_back(matrix[--i][j]);
                vis[i][j]=true;
            }
        }
        return res;
    }
};

你可能感兴趣的:(力扣)