力扣-图论-1【算法学习day.51】

前言

###我做这类文章一个重要的目的还是给正在学习的大家提供方向和记录学习过程(例如想要掌握基础用法,该刷哪些题?)我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非常非常高滴!!!


习题

1.省份数量

题目链接: 547. 省份数量 - 力扣(LeetCode)

题面:

代码:

java 复制代码
class Solution {
    int[][] flag;
    int n;
    int[][] isConnected;
    public int findCircleNum(int[][] isConnected) {
        this.isConnected = isConnected;
        n = isConnected.length;
        flag = new int[n][n];
        int ans = 0;
        for(int i = 0;i<n;i++){
           for(int j = i;j<n;j++){
             if(flag[i][j]==0&&(isConnected[i][j]==1|i==j)){
                ans++;
                recursion(i);
             }
           }
        }
        return ans;
    }
    public void recursion(int x){
       for(int i = 0;i<n;i++){
          if(isConnected[x][i]==1&&flag[x][i]==0){
            flag[x][i] = 1;
            flag[i][x] = 1;
            recursion(i);
          }
       }
    }
}

2.寻找图中是否存在路径

题目链接: 1971. 寻找图中是否存在路径 - 力扣(LeetCode)

题面:

代码:

java 复制代码
class Solution {
    List<Integer>[] map;
    boolean[] flag;
    public boolean validPath(int n, int[][] edges, int source, int destination) {
         flag = new boolean[n];
         map = new List[n];
         Arrays.setAll(map,k->new ArrayList<Integer>());
         for(int[] arr:edges){
            int a = arr[0];
            int b = arr[1];
            map[a].add(b);
            map[b].add(a);
         }
         return recursion(source,destination);
    }
    public boolean recursion(int source,int destination){
        if(source==destination){
            return true;
        }
        flag[source] = true;
        for(int b:map[source]){
            if(!flag[b]&&recursion(b,destination)){
                return true;
            }
        }
        return false;
    }
}

后言

上面是力扣图论专题,下一篇是其他的习题,希望有所帮助,一同进步,共勉!

相关推荐
HalvmånEver1 分钟前
红黑树实现与原理剖析(上篇):核心规则与插入平衡逻辑
数据结构·c++·学习·算法·红黑树
哆啦刘小洋16 分钟前
T:堆的基本介绍
算法
BreezeJuvenile17 分钟前
外设模块学习(5)——DS18B20温度传感器(STM32)
stm32·嵌入式硬件·学习·温度传感器·ds18b20
cimeo24 分钟前
【C学习】13-数组使用与运算
学习·c#
源码7可36 分钟前
Java高手速成--吃透源码+手写组件+定制开发
java
zjjuejin39 分钟前
Maven 云原生时代面临的八大挑战
java·后端·maven
ZhengEnCi40 分钟前
@RequestParam 注解完全指南-从参数绑定到接口调用的Web开发利器
java·spring boot
=>>漫反射=>>1 小时前
单元测试 vs Main方法调试:何时使用哪种方式?
java·spring boot·单元测试
初圣魔门首席弟子1 小时前
c++ bug 记录(merge函数调用时错误地传入了vector对象而非迭代器。)
java·c++·bug
AresXue1 小时前
你是否也在寻找二进制和字符串的高效转换算法?
算法