54. Spiral Matrix

来源:互联网 发布:网络尖兵官网 编辑:程序博客网 时间:2024/05/16 23:38
class Solution {public:    void Spiral_Matrix(vector<vector<int>>& matrix,vector<int>& result, bool *visited,int dir_index,int x,int y,int x_len,int y_len)    {        if(result.size()==x_len*y_len) return;        int dir[4][2]={{0,1},{1,0},{0,-1},{-1,0}};        int x0=x+dir[dir_index][0];        int y0=y+dir[dir_index][1];        if(x0<x_len&&y0<y_len&&x0>=0&&y0>=0&&!visited[x0*y_len+y0])        {            visited[x0*y_len+y0]=true;            result.push_back(matrix[x0][y0]);            Spiral_Matrix(matrix,result,visited,dir_index,x0,y0,x_len,y_len);        }        else        {            if(dir_index>=3) dir_index=0;            else dir_index++;            Spiral_Matrix(matrix,result,visited,dir_index,x,y,x_len,y_len);        }    }    vector<int> spiralOrder(vector<vector<int>>& matrix) {        if(matrix.size()==0) return {};        if(matrix.size()==1) return matrix[0];        vector<int> result;        int x_len=matrix.size(),y_len=matrix[0].size();        bool * visited=new bool[x_len*y_len];                memset(visited,0,x_len*y_len*sizeof(bool));        result.push_back(matrix[0][0]);        visited[0]=true;        Spiral_Matrix(matrix,result,visited,0,0,0,x_len,y_len);        return result;    }};

这句出现错误
memset(visited,x_len*y_len*sizeof(bool),0);
改成
memset(visited,0,x_len*y_len*sizeof(bool));
就ac了,
然而
memset(visited,x_len*y_len*sizeof(bool),false);
也能ac
好奇怪

0 0
原创粉丝点击