当前位置: 首页 > news >正文

搜索算法-------DFS练习1

1. 题目

在这里插入图片描述

2. 思路和题解

这道题的意思就是,给定我们一个矩阵,然后我们需要去寻找没有相连的最大的个数。这里可以看示例中的例子,比如示例1,1和2相连,则它们就是一个省份,3不与1和2相连,则它就是一个省份,因此省份数为2.又比如示例2,这里的1,2和3都是单独的一个元素,因此就是3个省份。结合实际生活来理解,就是现在有了一个省,我们就要去寻找是否有这个省下的市、县、乡镇,一级一级的寻找,直到寻找到最后的乡镇下,再也没有了,那么才算结束。
所以这道题就可以用深度优先搜索进行求解,先选取一个顶点,然后从这个顶点出发,往下进行探索,直至探索到最后一个元素,探索完成之后,省份数就加一,然后再去选择之前没探索过的一个顶点,继续进行探索,探索结束之后,省份数再加一,直到所有的顶点都探索结束。这个时候就能得到省份的数量。
具体的代码如下:

class Solution {
    public int findCircleNum(int[][] isConnected) {
        int cities = isConnected.length;
        boolean[] visited = new boolean[cities];
        int provinces = 0;
        for (int i = 0; i < cities; i++) {
            if (!visited[i]) {
                dfs(isConnected, visited, cities, i);
                provinces++;
            }
        }
        return provinces;
    }

    public void dfs(int[][] isConnected, boolean[] visited, int cities, int i) {
        for (int j = 0; j < cities; j++) {
            if (isConnected[i][j] == 1 && !visited[j]) {
                visited[j] = true;
                dfs(isConnected, visited, cities, j);
            }
        }
    }
}

相关文章:

  • C 语 言 --- 指 针 1
  • Vue2(12) 表单输入绑定学习笔记
  • 数据库——MySQL连接表
  • 从零构建大语言模型全栈开发指南:第四部分:工程实践与部署-4.2.3行业案例:智能客服中的图文交互系统
  • 谈谈快速排序算法,其时间复杂度和空间复杂度是多少?
  • 【Office办公】【Excel】VLOOKUP函数-高速查找指定匹配数据,可合并2个表格
  • Bevformer环境配置
  • 数据处理专题(六)
  • SQL、mySQL与SQLite简单理解
  • 2025.4.1英语听力
  • MobPush用户分群功能全新升级,精准触达每一位用户
  • C++---RAII模式
  • 碳化硅 MOSFET三相逆变电路损耗新算法
  • JavaScript元素尺寸与位置
  • NLP高频面试题(二十九)——大模型解码常见参数解析
  • Spark(13)HDFS概述
  • Flutter渲染优化之RepaintBoundary
  • MacOS安装软件及运行时,提示“已损坏无法打开”的解决方案
  • 自定义汇编语言(Custom Assembly Language) 和 Unix Git
  • 中级:Maven面试题精讲
  • 南昌微信网站开发公司/国内最开放的浏览器
  • 网站建设流程步骤为需求分析/恩施seo整站优化哪家好
  • 做网站模板用什么框架/手机自动排名次的软件
  • qplayer wordpress/文军seo
  • 中学院新校区建设专题网站/下载百度app
  • 杭州做网站建设/百度关键词优化手段