【算法刷题】—7.27dfs探测环

简介: ✨今日算法一题二维网格中探测环

✨今日算法一题


二维网格中探测环


文章目录


二维网格中探测环


题目描述

思路详解


使用dfs来检测是否有环

有环的条件就是在搜索的过程中搜索到 该次 dfs已经访问过的坐标

定义一个二维数组记录以及访问过的坐标

考虑根据在搜索的过程中添加上一层搜索过来的方向,不搜索该方向的反方向

在这种情况下如果找到已经访问过的节点就说明有环,有环就直接返回


代码与结果

class Solution {
    boolean[][] visited;
    char[][] grid;
    int m, n;
    boolean hasRing;
    public boolean containsCycle(char[][] grid) {
        this.grid = grid;
        m = grid.length; n = grid[0].length;
        visited = new boolean[m][n];
        for (int i = 0; i < m; i++) {
            for (int j = 0; j < n; j++) {
                if (!visited[i][j]){
                    dfs(i, j,  grid[i][j], 'L');
                    if (hasRing) return true;
                }
            }
        }
        return false;
    }
    private void dfs(int i, int j,  char ch, char from) {
        if (i < 0 || i >= m || j < 0 || j >= n || grid[i][j] != ch){
            return;
        }
        if (visited[i][j]) {
            hasRing = true;
            return;
        }
        visited[i][j] = true;
        if (from != 'L') dfs(i, j - 1, ch, 'R');
        if (from != 'R') dfs(i, j + 1, ch, 'L');
        if (from != 'U') dfs(i - 1, j, ch, 'D');
        if (from != 'D') dfs(i + 1, j, ch, 'U');
    }
}


✨总结


本节练习了dfs破环,值得多练几次哦!!!


相关文章
|
1月前
|
算法 测试技术 定位技术
数据结构与算法——DFS(深度优先搜索)
数据结构与算法——DFS(深度优先搜索)
|
3月前
|
算法
DFS算法的实现
DFS算法的实现
61 3
|
5月前
|
存储 算法 Java
Java中,树与图的算法涉及二叉树的前序、中序、后序遍历以及DFS和BFS搜索。
【6月更文挑战第21天】Java中,树与图的算法涉及二叉树的前序、中序、后序遍历以及DFS和BFS搜索。二叉树遍历通过访问根、左、右子节点实现。DFS采用递归遍历图的节点,而BFS利用队列按层次访问。以下是简化的代码片段:[Java代码略]
47 4
|
5月前
|
存储 算法 C语言
【数据结构与算法 刷题系列】合并两个有序链表
【数据结构与算法 刷题系列】合并两个有序链表
|
1月前
|
数据可视化 搜索推荐 Python
Leecode 刷题笔记之可视化六大排序算法:冒泡、快速、归并、插入、选择、桶排序
这篇文章是关于LeetCode刷题笔记,主要介绍了六大排序算法(冒泡、快速、归并、插入、选择、桶排序)的Python实现及其可视化过程。
14 0
|
3月前
【刷题记录】最大公因数,最小公倍数(辗转相除法、欧几里得算法)
【刷题记录】最大公因数,最小公倍数(辗转相除法、欧几里得算法)
|
3月前
|
算法 Python
【Leetcode刷题Python】改进的算法,高效求一个数的因子
一个高效的Python函数用于找出一个整数的所有因子,通过仅遍历到该数平方根的范围来优化性能。
42 0
|
5月前
|
算法 C++
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题-2
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题
|
5月前
|
算法 C++
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题-1
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题
下一篇
无影云桌面