您的位置:首页 > 其它

54. Spiral Matrix

2016-03-21 20:52 197 查看
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

好奇怪
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: