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

力扣-图论-7【算法学习day.57】

前言

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


习题

1.尽量减少恶意软件的传播

题面链接:924. 尽量减少恶意软件的传播 - 力扣(LeetCode)

题面:

分析:找到只有一个恶意软件的最大连通块,如果有多个,就取在initial中的较小值,贴上大佬代码如下:

代码:

class Solution {
    private int nodeId, size;

    public int minMalwareSpread(int[][] graph, int[] initial) {
        int n = graph.length;
        boolean[] vis = new boolean[n];
        boolean[] isInitial = new boolean[n];
        int mn = Integer.MAX_VALUE;
        for (int x : initial) {
            isInitial[x] = true;
            mn = Math.min(mn, x);
        }

        int ans = -1;
        int maxSize = 0;
        for (int x : initial) {
            if (vis[x]) {
                continue;
            }
            nodeId = -1;
            size = 0;
            dfs(x, graph, vis, isInitial);
            if (nodeId >= 0 && (size > maxSize || size == maxSize && nodeId < ans)) {
                ans = nodeId;
                maxSize = size;
            }
        }
        return ans < 0 ? mn : ans;
    }

    private void dfs(int x, int[][] graph, boolean[] vis, boolean[] isInitial) {
        vis[x] = true;
        size++;
        // 按照状态机更新 nodeId
        if (nodeId != -2 && isInitial[x]) {
            nodeId = nodeId == -1 ? x : -2;
        }
        for (int y = 0; y < graph[x].length; y++) {
            if (graph[x][y] == 1 && !vis[y]) {
                dfs(y, graph, vis, isInitial);
            }
        }
    }
}

后言

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


http://www.kler.cn/a/429737.html

相关文章:

  • hutool糊涂工具通过注解设置excel宽度
  • 【STM32-学习笔记-6-】DMA
  • 【机器学习】农业 4.0 背后的智慧引擎:机器学习助力精准农事决策
  • ASP.NET Core与GraphQL集成
  • LeetCode 热题 100 | 滑动窗口
  • Uniapp仿ChatGPT Stream流式输出(非Websocket)
  • RK3568平台开发系列讲解(pinctrl 子系统篇)pinctrl_debug
  • create-react-app react19 搭建项目报错
  • linux目录权限
  • 计算机网络常考简答题(1)
  • 【力扣】824.山羊拉丁文
  • 常用环境部署(二十四)——Docker部署开源物联网平台Thingsboard
  • 力扣每日一题 - 1812. 判断国际象棋棋盘中一个格子的颜色
  • 算法(三)——贪心算法
  • java.lang.IllegalStateException: Error processing condition on org.springframework.boot.autoconfigur
  • 双色Hanoi塔问题(hanoi)
  • OpenAI 推出满血版 o1和 ChatGPT Pro,AI 竞争再掀高潮
  • Redis性能优化18招
  • 鸿蒙Next学习-监听指定页面显示/页面生命周期
  • OpenGL给矩形贴上纹理
  • 解决vscode 通过GoInstallUpdate Tools命令安装失败的问题
  • C# 抽奖程序winform示例
  • Keil5的Debug基础使用方式
  • TimeXplusplus——提高时间序列数据的可解释性,避免琐解和分布偏移问题的深度学习可解释性的框架
  • 12.06 深度学习-预训练
  • Linux下网卡实现NAT转发