当前位置:   article > 正文

LeetCode——547 省份数量(JAVA)_leetcode 最大能看到的城市数量

leetcode 最大能看到的城市数量

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
  • 1
  • 2

示例 2:

在这里插入图片描述

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

提示:

  • 1 <= n<= 200
  • n== isConnected.length
  • n== isConnected[i].length
  • isConnected[i][j]10
  • isConnected[i][i] == 1
  • isConnected[i][j] == isConnected[j][i]

思路

并查集康复训练?(笑),其实这题就是个模板题。归纳一下并查集的主要函数:

  1. 寻找根结点findFather()(路径压缩可以写在这里);
  2. 合并两个集合Union()

关键数组:

  1. int[] father,用来记录某结点的父亲(father[x]表示x的父结点);
  2. boolean[] isRoot,用来记录所存储的集合数目(isRoot[x]表示x是否为集合中的根结点)。

代码

public class Solution {
	int[] father = new int[210];
	boolean[] isRoot = new boolean[210];
	public int findFather(int x) {
		int a = x;
		while(x!=father[x]) {
			x = father[x];
		}
		while(a!=father[a]) {
			int z = a;
			a = father[a];
			father[z] = x;
		}
		return x;
	}
	public void Union(int a, int b) {
		 int faA = findFather(a);
		 int faB = findFather(b);
		 if(faA!=faB) {
			 father[faA] = faB;
		 }
	}
	public int findCircleNum(int[][] isConnected) {
		for(int i=0;i<father.length;i++) {
			father[i] = i;
		}
		int rowSize = isConnected.length;
		int colSize = isConnected[0].length;
		for(int i=0;i<rowSize;i++) {
			for(int j=0;j<colSize;j++) {
				if(isConnected[i][j]==1) Union(i,j);
			}
		}
		for(int i=0;i<rowSize;i++) {
			isRoot[findFather(i)] = true;
		}
		int result = 0;
		for(boolean x : isRoot) {
			if(x==true) result++;
		}
		return result;
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/531708
推荐阅读
相关标签
  

闽ICP备14008679号