力扣-图论-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;
    }
}

后言

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

相关推荐
graceyun15 分钟前
C语言进阶习题【1】指针和数组(4)——指针笔试题3
android·java·c语言
我科绝伦(Huanhuan Zhou)19 分钟前
Linux 系统服务开机自启动指导手册
java·linux·服务器
旦沐已成舟1 小时前
K8S-Pod的环境变量,重启策略,数据持久化,资源限制
java·docker·kubernetes
S-X-S1 小时前
项目集成ELK
java·开发语言·elk
飞的肖1 小时前
日志(elk stack)基础语法学习,零基础学习
学习·elk
Ting-yu1 小时前
项目实战--网页五子棋(游戏大厅)(3)
java·java-ee·maven·intellij-idea
dal118网工任子仪3 小时前
66,【6】buuctf web [HarekazeCTF2019]Avatar Uploader 1
笔记·学习
02苏_3 小时前
2025/1/21 学习Vue的第四天
学习
羊小猪~~4 小时前
MYSQL学习笔记(四):多表关系、多表查询(交叉连接、内连接、外连接、自连接)、七种JSONS、集合
数据库·笔记·后端·sql·学习·mysql·考研
约定Da于配置4 小时前
uniapp封装websocket
前端·javascript·vue.js·websocket·网络协议·学习·uni-app