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

初学python记录:力扣928. 尽量减少恶意软件的传播 II

题目:

给定一个由 n 个节点组成的网络,用 n x n 个邻接矩阵 graph 表示。在节点网络中,只有当 graph[i][j] = 1 时,节点 i 能够直接连接到另一个节点 j

一些节点 initial 最初被恶意软件感染。只要两个节点直接连接,且其中至少一个节点受到恶意软件的感染,那么两个节点都将被恶意软件感染。这种恶意软件的传播将继续,直到没有更多的节点可以被这种方式感染。

假设 M(initial) 是在恶意软件停止传播之后,整个网络中感染恶意软件的最终节点数。

我们可以从 initial 中删除一个节点并完全移除该节点以及从该节点到任何其他节点的任何连接。

请返回移除后能够使 M(initial) 最小化的节点。如果有多个节点满足条件,返回索引 最小的节点 。

提示:

  • n == graph.length
  • n == graph[i].length
  • 2 <= n <= 300
  • graph[i][j] 是 0 或 1.
  • graph[i][j] == graph[j][i]
  • graph[i][i] == 1
  • 1 <= initial.length < n
  • 0 <= initial[i] <= n - 1
  •  initial 中每个整数都不同

思考:

今天的题和昨天的很相似,区别在于:“从 initial 中删除一个节点 = 完全移除该节点以及从该节点到任何其他节点的任何连接

相似的,仍然将图中所有彼此有路径到达的节点们看成一组,如果一组中有至少一个节点初始时被感染,那么这一组所有节点最后都会被感染。

我们要去掉initial中的一个节点和它的所有边之后,使剩下的感染节点最少 ----> 这个节点能且只能凭自己感染的节点最多(1. 通过其他initial节点连接的节点不算  2. 被多个initial节点感染的节点不算)

那么我们的算法步骤如下,数组visited记录每个节点能被多少initial节点凭自己感染("≥0"表示唯一的initial节点索引;"-2"表示有多个initial节点连接);字典sum_dict记录initial节点能且只能凭自己感染的节点数:

1. 遍历initial中的每个节点node。

2. 找到所有和node之间有路径的节点k,并进行判断:1. 若visited[k]为-1,则将visited[k]设为node;2. 若visited[k]为大于等于0的值,说明此前已经有initial节点感染他了,则将visited[k]设为-2.

3. initial中的每个节点node都判断完后,遍历visited数组,若值大于等于0,则说明这个节点只被一个initial节点感染了,将字典sum_dict中该initial节点对应的值加一。

4. 在字典sum_dict中找到值最大的initial节点返回。

代码如下:

from collections import dequeclass Solution(object):def minMalwareSpread(self, graph, initial):""":type graph: List[List[int]]:type initial: List[int]:rtype: int"""# 将互相能到达的节点们视为一个组,(如果initial中有属于这一组的节点)每组的节点数量即为这一个小网络的感染恶意软件的最终节点数n = len(graph)sum_dict = {}  # 字典sum_dict记录initial节点能且只能凭自己感染的节点数visited = [-1] * n  # 数组visited记录节点能被多少initial节点凭自己感染("≥0"表示唯一的initial节点索引;"-2"表示有多个initial节点连接)def connectedNodes(graph, initial, node):judged = [-1] * n    # 表示在这次遍历中,节点是否已经判断过了queue = deque()  # 队列储存待判断相邻节点的节点queue.append(node)while queue:x = queue.popleft()for k in range(n):if k == x:  # 跳过当前节点本身continueif judged[k] == -1 and graph[x][k] == 1 and k not in queue and k not in initial:queue.append(k)judged[k] = 1if visited[k] == -1:visited[k] = nodeelif visited[k] >= 0 and visited[k] != node and graph[x][k] == 1:visited[k] = -2for i in initial:connectedNodes(graph, initial, i)sum_dict[i] = 1for j in range(n):if visited[j] >= 0:sum_dict[visited[j]] += 1m = 0for key, value in sum_dict.items():    # 在字典sum_dict中找到值最大的initial节点返回if value > m:m = valueres = keyif value == m and key < res:res = keyreturn res

提交通过,debug了一万年,泪目:

 

相关文章:

初学python记录:力扣928. 尽量减少恶意软件的传播 II

题目&#xff1a; 给定一个由 n 个节点组成的网络&#xff0c;用 n x n 个邻接矩阵 graph 表示。在节点网络中&#xff0c;只有当 graph[i][j] 1 时&#xff0c;节点 i 能够直接连接到另一个节点 j。 一些节点 initial 最初被恶意软件感染。只要两个节点直接连接&#xff0c…...

LlamaIndex 组件 - Storing

文章目录 一、储存概览1、概念2、使用模式3、模块 二、Vector Stores1、简单向量存储2、矢量存储选项和功能支持3、Example Notebooks 三、文件存储1、简单文档存储2、MongoDB 文档存储3、Redis 文档存储4、Firestore 文档存储 四、索引存储1、简单索引存储2、MongoDB 索引存储…...

在Linux系统中设定延迟任务

一、在系统中设定延迟任务要求如下&#xff1a; 要求&#xff1a; 在系统中建立easylee用户&#xff0c;设定其密码为easylee 延迟任务由root用户建立 要求在5小时后备份系统中的用户信息文件到/backup中 确保延迟任务是使用非交互模式建立 确保系统中只有root用户和easylee用户…...

JVM之方法区的详细解析

方法区 方法区&#xff1a;是各个线程共享的内存区域&#xff0c;用于存储已被虚拟机加载的类信息、常量、即时编译器编译后的代码等数据&#xff0c;虽然 Java 虚拟机规范把方法区描述为堆的一个逻辑部分&#xff0c;但是也叫 Non-Heap&#xff08;非堆&#xff09; 设置方法…...

Go 使用ObjectID

ObjectID介绍 MongoDB中的ObjectId是一种特殊的12字节 BSON 类型数据&#xff0c;用于为主文档提供唯一的标识符&#xff0c;默认情况下作为 _id 字段的默认值出现在每一个MongoDB集合中的文档中。以下是ObjectId的具体组成&#xff1a; 1. 时间戳&#xff08;Timestamp&…...

基于SpringBoot+Vue的疾病防控系统设计与实现(源码+文档+包运行)

一.系统概述 在如今社会上&#xff0c;关于信息上面的处理&#xff0c;没有任何一个企业或者个人会忽视&#xff0c;如何让信息急速传递&#xff0c;并且归档储存查询&#xff0c;采用之前的纸张记录模式已经不符合当前使用要求了。所以&#xff0c;对疾病防控信息管理的提升&a…...

2024年阿里云4核8G配置云服务器价格低性能高!

阿里云4核8G服务器租用优惠价格700元1年&#xff0c;配置为ECS通用算力型u1实例&#xff08;ecs.u1-c1m2.xlarge&#xff09;4核8G配置、1M到3M带宽可选、ESSD Entry系统盘20G到40G可选&#xff0c;CPU采用Intel(R) Xeon(R) Platinum处理器&#xff0c;阿里云优惠 aliyunfuwuqi…...

关于ContentProvider这一遍就够了

ContentProvider是什么&#xff1f; ContentProvider是Android四大组件之一&#xff0c;主要用于不同应用程序之间或者同一个应用程序的不同部分之间共享数据。它是Android系统中用于存储和检索数据的抽象层&#xff0c;允许不同的应用程序通过统一的接口访问数据&#xff0c;…...

《1w实盘and大盘基金预测 day23》

这几天预测错麻了&#xff0c;哈哈哈&#xff0c;完全和技术没关系&#xff0c;全是消息面。 昨日预测&#xff1a; 2958-2984-3010 证券继续下跌&#xff0c;昨天诱多把我诱惑进去了&#xff08;看2-3天的反弹也没了&#xff09;&#xff0c;今天直接出掉昨天买的。 整体操作…...

向量数据库与图数据库:理解它们的区别

作者&#xff1a;Elastic Platform Team 大数据管理不仅仅是尽可能存储更多的数据。它关乎能够识别有意义的见解、发现隐藏的模式&#xff0c;并做出明智的决策。这种对高级分析的追求一直是数据建模和存储解决方案创新的驱动力&#xff0c;远远超出了传统关系数据库。 这些创…...

WIN7用上最新版Chrome

1.下载WIN10最新版Chrome的离线安装包 谷歌浏览器 Chrome 最新版离线安装包下载地址 v123.0.6312.123 - 每日自动更新 | 异次元软件 文件名称&#xff1a;123.0.6312.123_chrome_installer.exe。 123.0.6312.123_chrome_installer.exe 文件右键解压缩得到 chrome.7z&#x…...

node.jd版本降级/升级

第一步.先清空本地安装的node.js版本 按健winR弹出窗口&#xff0c;键盘输入cmd,然后敲回车&#xff08;或者鼠标直接点击电脑桌面最左下角的win窗口图标弹出&#xff0c;输入cmd再点击回车键&#xff09; 进入命令控制行窗口&#xff0c;输入where node&#xff0c;查看本地…...

python+playwright 学习-88 禁止加载图片等资源

前言 对于爬虫的小伙伴来说,有时候只需抓取页面的文本,不用加载图片,可以加快操作页面速度,那么我们可以设置禁止加载图片等资源。 禁止图片加载 根据url地址的后缀,图片资源后缀一般是png,jpg,jpeg,gif等格式。 from playwright.sync_api import sync_playwrightwith…...

Linux:Redis7.2.4的简单在线部署(1)

注意&#xff1a;我写的这个文章是以最快速的办法去搭建一个redis的基础环境&#xff0c;作用是为了做实验简单的练习&#xff0c;如果你想搭建一个相对稳定的redis去使用&#xff0c;可以看我下面这个文章 Linux&#xff1a;Redis7.2.4的源码包部署&#xff08;2&#xff09;-…...

HackMyVM-Connection

目录 信息收集 arp nmap WEB web信息收集 dirsearch smbclient put shell 提权 系统信息收集 suid gdb提权 信息收集 arp ┌─[rootparrot]─[~/HackMyVM] └──╼ #arp-scan -l Interface: enp0s3, type: EN10MB, MAC: 08:00:27:16:3d:f8, IPv4: 192.168.9.115 S…...

Prometheus接入AlterManager配置邮件告警(基于K8S环境部署)

目录 一.配置Alertmanager告警发送至邮箱二.Prometheus接入AlertManager三.部署PrometheusAlterManager(放到一个Pod中)四. 测试告警 基于 此环境做实验 一.配置Alertmanager告警发送至邮箱 1.创建AlertManager ConfigMap资源清单 vim alertmanager-cm.yaml --- kind: Confi…...

find方法

find() 方法用于在数组中查找符合条件的第一个元素&#xff0c;并返回该元素。如果找到匹配的元素&#xff0c;则返回该元素的值&#xff1b;如果未找到匹配的元素&#xff0c;则返回 undefined。 例如: const firstWithdrawal movements.find(mov > mov < 0); consol…...

TLS v1.3 导致JetBrains IDE jdk.internal.net.http.common CPU占用高

开发环境 GoLand版本&#xff1a;2022.3.4 问题原因 JDK 中的 TLS v1.3 实现引起 解决办法 使用 SOCKS 代理代替HTTP代理 禁用 Space 和 Code With Me 插件 禁用 TLS v1.3&#xff0c;参考&#xff1a;https://stackoverflow.com/questions/54485755/java-11-httpclient-…...

计算机网络 2.2数据传输方式

第二节 数据传输方式 一、数据通信系统模型 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 1.数据终端设备&#xff08;DTE&#xff09; 作用&#xff1a;用于处理用户数据的设备&#xff0c;是数据通信系统的信源和信宿。 设备&#xff1a;便携计算机…...

陇剑杯 流量分析 webshell CTF writeup

陇剑杯 流量分析 链接&#xff1a;https://pan.baidu.com/s/1KSSXOVNPC5hu_Mf60uKM2A?pwdhaek 提取码&#xff1a;haek目录结构 LearnCTF ├───LogAnalize │ ├───linux简单日志分析 │ │ linux-log_2.zip │ │ │ ├───misc日志分析 │ │ …...

FastDFS整合Nginx踩坑记:升级1.22.0修复CVE-2021-23017,如何平滑保留模块不报错?

FastDFS整合Nginx安全升级实战&#xff1a;从漏洞修复到模块兼容的全流程指南 最近在维护一个使用FastDFS作为分布式存储的生产环境时&#xff0c;遇到了Nginx的CVE-2021-23017安全漏洞问题。这个漏洞可能允许攻击者通过特制的DNS响应导致工作进程崩溃&#xff0c;对于线上业务…...

基于LM567的反射式红外检测电路在智能车信标检测中的实战应用与优化

1. LM567红外检测电路基础解析 第一次接触LM567芯片是在五年前的智能车竞赛备赛期间&#xff0c;当时为了解决传统红外检测易受环境光干扰的问题&#xff0c;我们团队尝试了各种方案。这款看似普通的8脚芯片&#xff0c;却让我们成功实现了在强光环境下稳定工作的红外检测系统。…...

5分钟免费解锁Cursor Pro:终极AI编程助手无限使用方案

5分钟免费解锁Cursor Pro&#xff1a;终极AI编程助手无限使用方案 【免费下载链接】cursor-free-vip [Support 0.45]&#xff08;Multi Language 多语言&#xff09;自动注册 Cursor Ai &#xff0c;自动重置机器ID &#xff0c; 免费升级使用Pro 功能: Youve reached your tri…...

基于Tauri与Rust构建跨平台Claude桌面客户端:架构设计与工程实践

1. 项目概述&#xff1a;一个为Claude设计的“圣杯”级桌面应用 如果你和我一样&#xff0c;在日常开发、写作或信息处理中重度依赖Anthropic的Claude模型&#xff0c;那么你肯定也经历过在浏览器标签页间反复横跳、复制粘贴、以及管理冗长对话历史的烦恼。 CoderLuii/HolyCla…...

基于Next.js 15与Sanity CMS构建高性能个人网站的技术实践

1. 项目概述&#xff1a;一个现代开发者的个人网站是如何炼成的 如果你是一名开发者&#xff0c;想搭建一个既能展示个人作品、又能写写技术博客&#xff0c;同时还得兼顾设计感和性能的个人网站&#xff0c;那么你大概率会和我一样&#xff0c;在技术选型上纠结很久。是直接用…...

泛微OA ecology 9实战:手把手教你写一个能取表单数据的Java自定义接口

泛微OA Ecology 9深度开发&#xff1a;构建高效表单数据交互的Java接口实践 在当今企业数字化转型浪潮中&#xff0c;办公自动化系统(OA)作为核心支撑平台&#xff0c;其灵活性和扩展性直接影响着企业运营效率。泛微OA Ecology 9作为国内领先的协同办公平台&#xff0c;提供了丰…...

厘米级无感定位 + 毫秒级动态重建,镜像视界破解智造虚实脱节难题

厘米级无感定位 毫秒级动态重建&#xff0c;镜像视界破解智造虚实脱节难题植根数字孪生与视频孪生核心赛道&#xff0c;镜像视界&#xff08;浙江&#xff09;科技有限公司依托自研视频原生空间智能技术体系&#xff0c;以厘米级无感定位与毫秒级动态重建两大核心技术能力&…...

音频解密的终极方案:qmcdump高效解密QQ音乐加密格式全解析

音频解密的终极方案&#xff1a;qmcdump高效解密QQ音乐加密格式全解析 【免费下载链接】qmcdump 一个简单的QQ音乐解码&#xff08;qmcflac/qmc0/qmc3 转 flac/mp3&#xff09;&#xff0c;仅为个人学习参考用。 项目地址: https://gitcode.com/gh_mirrors/qm/qmcdump 你…...

Yarbo 机器人割草机调整策略:远程后门访问功能将设为可选安装

Yarbo 调整远程后门访问功能&#xff0c;设为可选安装Yarbo 原有的远程后门访问功能可能使不法分子通过互联网对机器人进行重新编程。如今&#xff0c;该公司计划彻底移除这一功能&#xff0c;联合创始人肯尼斯科尔曼承诺&#xff0c;客户将能够决定是否一开始就安装该功能&…...

从GPS周内秒到日常时间:原理、转换与编程实践

1. GPS时间系统的基本概念 第一次接触GPS时间数据时&#xff0c;我也被"周内秒"这个概念搞懵了。这和我们平时用的年月日时分秒完全不同&#xff0c;更像是一种程序员喜欢的计数方式。GPS时间系统&#xff08;GPST&#xff09;本质上是个超级精准的原子钟&#xff0c…...