题目描述
思路分析
语言题,模拟题
方向数组。按照方向搜索即可。x,y为当前搜索坐标,t为上次搜索的方向数组坐标。最终转向超过1次就说明到了终点。
代码实现
class Solution {
public:
bool st[200][200];
vector<int> ans;
int dx[4]={0,1,0,-1};
int dy[4]={1,0,-1,0};
vector<int> printMatrix(vector<vector<int>> g) {
int n=g.size(),m=g[0].size();
if(!n||!m) return ans;
dfs(0,0,0,g);
return ans;
}
void dfs(int x,int y,int t,vector<vector<int>>& g){
int n=g.size(),m=g[0].size();
ans.push_back(g[x][y]);
st[x][y]=true;
int cnt=0;
while(!(x+dx[t]>=0&&y+dy[t]>=0&&x+dx[t]<n&&y+dy[t]<m&&!st[x+dx[t]][y+dy[t]])){
t=(t+1)%4;
cnt++;
if(cnt>1) break;
}
if(cnt>1) return;
dfs(x+dx[t],y+dy[t],t,g);
}
};