美文网首页
5482. 二维网格图中探测环

5482. 二维网格图中探测环

作者: 来到了没有知识的荒原 | 来源:发表于2020-08-23 23:09 被阅读0次

5482. 二维网格图中探测环

我用了fx,fy来记录来的坐标,y总用了i ^ 1来判断是不是来的方向,tql%%

我:

class Solution {
public:
    int n,m;
    int dx[4]={-1,0,1,0},dy[4]={0,1,0,-1};
    vector<vector<bool>>vis;
    vector<vector<char>> grid;
    
    bool dfs(int x,int y,int fx,int fy,int len){
        vis[x][y]=true;
        for(int i=0;i<4;i++){
            int a=x+dx[i],b=y+dy[i];
            if(a>=0 && a<n && b>=0 && b<m && grid[a][b]==grid[x][y]){
                if(a==fx && b==fy)continue;
                if(vis[a][b] && len>=4)return true;
                else if(dfs(a,b,x,y,len+1))return true;
            }
        }
        return false;
    }
    
    bool containsCycle(vector<vector<char>>& _grid) {
        grid=_grid;

        n=grid.size();
        m=grid[0].size();
        
        
        vis=vector<vector<bool>>(n,vector<bool>(m));
        for(int i=0;i<n;i++){
            for(int j=0;j<m;j++){
                if(!vis[i][j] && dfs(i,j,-1,-1,0))return true;
            }
        }
        return false;
    }
};

yxc

class Solution {
public:
    vector<vector<char>> g;
    vector<vector<bool>> st;

    bool containsCycle(vector<vector<char>>& grid) {
        g = grid;
        st = vector<vector<bool>>(g.size(), vector<bool>(g[0].size()));
        for (int i = 0; i < g.size(); i ++ )
            for (int j = 0; j < g[0].size(); j ++ )
                if (!st[i][j] && dfs(i, j,  -1))
                    return true;
        return false;
    }

    int dx[4] = {-1, 1, 0, 0}, dy[4] = {0, 0, -1, 1};
    bool dfs(int x, int y, int p) {
        st[x][y] = true;
        for (int i = 0; i < 4; i ++ )
            if (i != p) {
                int a = x + dx[i], b = y + dy[i];
                if (a >= 0 && a < g.size() && b >= 0 && b < g[0].size() && g[x][y] == g[a][b]) {
                    if (st[a][b]) return true;
                    if (dfs(a, b, i ^ 1)) return true;
                }
            }
        return false;
    }
};


相关文章

  • 5482. 二维网格图中探测环

    5482. 二维网格图中探测环 我用了fx,fy来记录来的坐标,y总用了i ^ 1来判断是不是来的方向,tql%%...

  • CoreImage之识别二维码

    识别二维码的步骤 1、创建二维码探测器 2、探测二维码特征 ps:UIImage转CIImage不能使用image...

  • 九宫格拖拽

    效果实例 简单了解Grid布局(网格布局) 什么是网格布局 CSS网格布局(又称“网格”),是一种二维网格布局系统...

  • 九宫格拖拽

    效果实例 简单了解Grid布局(网格布局) 什么是网格布局 CSS网格布局(又称“网格”),是一种二维网格布局系统...

  • Grid布局

    CSS Grid(网格) 布局(又称为 “Grid(网格)” ),是一个二维的基于网格的布局系统它的目标是完全改变...

  • CSS Grid 布局

    CSS Grid(网格) 布局(又称为 “Grid(网格)” ),是一个二维的基于网格的布局系统它的目标是完全改变...

  • 算法 leetcode212 单词搜索 II

    给定一个 m x n 二维字符网格 board 和一个单词(字符串)列表 words,找出所有同时在二维网格和字典...

  • Grid布局基础

    简介 CSS网格布局(又名“网格”)是一个二维的基于网格的布局系统,其目的只在于完全改变我们设计基于网格的用户界面...

  • CSS网格布局完整指南

    简介 CSS Grid布局 (又名"网格"),是一个基于二维网格布局的系统,旨在改变我们基于网格设计的用户界面方式...

  • All Paths From Source to Target

    问题 给出一二维数组形式的有向无环图,求图中两点之间的所有路径 解决 回溯即可 Tips 用java写的时候注意一...

网友评论

      本文标题:5482. 二维网格图中探测环

      本文链接:https://www.haomeiwen.com/subject/qmxgjktx.html