省份数量(深度优先算法)

根据给定的n x n矩阵isConnected,该矩阵表示城市间的连接情况,本题旨在找出所有省份的数量。深度优先搜索(DFS)是解决此类问题的关键。在岛屿问题中,可以通过置0已访问节点来避免回溯,但在本题中,这种方法会导致错误,因为可能会错过某些连接。正确做法是使用额外的数组记录已访问的节点,确保不会重复访问。从第一个节点开始,遍历所有连接的城市,递归寻找新连接,直至遍历完所有节点,最终得出省份数量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有 n 个城市,其中一些彼此相连,另一些没有相连。如果城市 a 与城市 b 直接相连,且城市 b 与城市 c 直接相连,那么城市 a 与城市 c 间接相连。

省份 是一组直接或间接相连的城市,组内不含其他没有相连的城市。

给你一个 n x n 的矩阵 isConnected ,其中 isConnected[i][j] = 1 表示第 i 个城市和第 j 个城市直接相连,而 isConnected[i][j] = 0 表示二者不直接相连。

返回矩阵中 省份 的数量。

示例 1:

 


输入:isConnected = [[1,1,0],[1,1,0],[0,0,1]]
输出:2
示例 2:


输入:isConnected = [[1,0,0],[0,1,0],[0,0,1]]
输出:3

来源:力扣(LeetCode)

之前做过岛屿问题,也是使用了深度优先算法,都是基础的使用dfs,使用dfs时有一个点要注意,对于无序的图而言不能让他在回到访问过的节点,在岛屿问题中将访问过的点置0从而达到这个目的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值