代码拉取完成,页面将自动刷新
思路:
1. dfs
2. 记录一下parent, 不能走parent
3. 如果遇到visit 过的肯定有cycle
4. 无向图找cycle
代码:
class Solution {
boolean visit[][];
int sr=-1;int sc=-1;
boolean yes=false;
Set<String>set=new HashSet<>();
public boolean containsCycle(char[][] grid) {
visit=new boolean[grid.length][grid[0].length];
for(int i=0;i<grid.length;i++){
for(int j=0;j<grid[0].length;j++){
if(visit[i][j])continue;
dfs(grid,i,j,grid[i][j],-1,-1);
if(yes)return true;
}
}
return false;
}
public void dfs(char[][] grid,int r,int c,char cc,int lastr,int lastc){
if(r<0||c<0||r>=grid.length||c>=grid[0].length)return;
if(grid[r][c]!=cc)return;
if(visit[r][c]&&grid[r][c]==cc){
yes=true;
return;
}
visit[r][c]=true;
if(r+1!=lastr||c!=lastc){
dfs(grid,r+1,c,cc,r,c);
}
if(r-1!=lastr||c!=lastc){
dfs(grid,r-1,c,cc,r,c);
}
if(r!=lastr||c+1!=lastc){
dfs(grid,r,c+1,cc,r,c);
}
if(r!=lastr||c-1!=lastc){
dfs(grid,r,c-1,cc,r,c);
}
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。