class Solution {
public:
/**
* @param matrix a matrix of m x n elements
* @return an integer array
*/
vector<int> spiralOrder(vector<vector<int>>& matrix) {
// Write your code here
vector<int> tmpint;
if (matrix.size()==0)return tmpint;
bool ** visited;
visited = new bool *[matrix.size()];
for (int i = 0;i<matrix.size();i++){
visited[i] = new bool[matrix[i].size()];
for (int j = 0;j<matrix[i].size();j++){
visited[i][j] = false;
}
}
int dx[4] = {1,0,-1,0};
int dy[4] = {0,1,0,-1};
int dxyloc = 0;
int ii = 0;
int jj = 0;
while (true)
{
if (ii==-1||jj==-1||ii==matrix.size()||jj==matrix[0].size()||visited[ii][jj]==true){
ii = ii-dy[dxyloc];
jj = jj-dx[dxyloc];
dxyloc = (dxyloc+1)%4;
if (visited[ii+dy[dxyloc]][jj+dx[dxyloc]]==true){
return tmpint;
}
}
else{
tmpint.push_back(matrix[ii][jj]);
visited[ii][jj] = true;
}
ii = ii+dy[dxyloc];
jj = jj+dx[dxyloc];
}
}
};
LintCode-剑指Offer-(374)螺旋矩阵
最新推荐文章于 2020-07-11 14:26:19 发布