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

一个公司如何把网站做好一个页面的html5网站模板 psd

一个公司如何把网站做好,一个页面的html5网站模板 psd,在线电子商务网站开发,windows做网站的工具LeetCode-924. 尽量减少恶意软件的传播【深度优先搜索 广度优先搜索 并查集 图 哈希表】 题目描述:解题思路一:解题思路二:0解题思路三:0 题目描述: 给出了一个由 n 个节点组成的网络,用 n n 个邻接矩阵图…

LeetCode-924. 尽量减少恶意软件的传播【深度优先搜索 广度优先搜索 并查集 图 哈希表】

  • 题目描述:
  • 解题思路一:
  • 解题思路二:0
  • 解题思路三:0

题目描述:

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

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

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

如果从 initial 中移除某一节点能够最小化 M(initial), 返回该节点。如果有多个节点满足条件,就返回索引最小的节点。

请注意,如果某个节点已从受感染节点的列表 initial 中删除,它以后仍有可能因恶意软件传播而受到感染。

示例 1:

输入:graph = [[1,1,0],[1,1,0],[0,0,1]], initial = [0,1]
输出:0
示例 2:

输入:graph = [[1,0,0],[0,1,0],[0,0,1]], initial = [0,2]
输出:0
示例 3:

输入:graph = [[1,1,1],[1,1,1],[1,1,1]], initial = [1,2]
输出:1

提示:

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 中所有整数均不重复

解题思路一:

一个大小为 k 的连通块内,如果只有一个节点 x 被感染(x 在 initial中),那么移除 x 后,这个连通块不会被感染,从而让 M(initial)减少 k。

而如果连通块内至少有两个节点被感染,无论移除哪个节点,仍然会导致连通块被感染,M(initial) 不变。

所以我们要找的是只包含一个被感染节点的连通块,并且这个连通块越大越好。

算法如下:

  1. 遍历 initial 中的节点 x。
  2. 如果 x 没有被访问过,那么从 x 开始 DFS,同时用一个 vis 数组标记访问过的节点。
  3. DFS 过程中,统计连通块的大小 size。
  4. DFS 过程中,记录访问到的在 initial 中的节点。
  5. DFS 结束后,如果发现该连通块只有一个在 initial 中的节点,并且该连通块的大小比最大的连通块更大,那么更新最大连通块的大小,以及答案节点 x。如果一样大,就更新答案节点的最小值。
  6. 最后,如果没找到符合要求的节点,返回 min⁡(initial);否则返回答案节点。

如何表达出「连通块内有一个或多个被感染的节点」呢?要记录被感染的节点列表吗?

其实无需记录节点列表,而是用如下状态机:
在这里插入图片描述
初始状态为 −1。
如果状态是 −1,在找到被感染的节点 x 后,状态变为 x。
如果状态是非负数 x,在找到另一个被感染的节点后,状态变为 −2。如果状态已经是 −2,则不变。
此外,可以用一个哈希表或者布尔数组,记录哪些点在 initial 中,从而在 DFS 中快速判断当前节点是否在 initial 中。

class Solution:def minMalwareSpread(self, graph: List[List[int]], initial: List[int]) -> int:st = set(initial)vis = [False] * len(graph)def dfs(x: int) -> None:vis[x] = Truenonlocal node_id, sizesize += 1# 按照状态机更新 node_idif node_id != -2 and x in st:node_id = x if node_id == -1 else -2for y, conn in enumerate(graph[x]):if conn and not vis[y]:dfs(y)ans = -1max_size = 0for x in initial:if vis[x]:continuenode_id = -1size = 0dfs(x)# 只包含一个被感染节点的连通块, 且包含节点数最大if node_id >= 0 and (size > max_size or size == max_size and node_id < ans):ans = node_idmax_size = sizereturn min(initial) if ans < 0 else ans

时间复杂度:O(n2)
空间复杂度:O(n)

解题思路二:0


时间复杂度:O(n)
空间复杂度:O(n)

解题思路三:0


时间复杂度:O(n)
空间复杂度:O(n)

http://www.yayakq.cn/news/721819/

相关文章:

  • 域名网站建设教程深圳动漫制作
  • 临沂市兰山区建设局网站logo设计在线生成免费标小智
  • 哪个网站可有做投票搭建做棋牌网站违法
  • php 小企业网站 cms网站单页面
  • 网站代备案公司广州建设网站公司哪个济南兴田德润有活动吗
  • 安卓系统app开发seo网站结构
  • 自己做图网站自己做的网站怎么上线
  • 嘉兴城乡建设局网站推广普通话主题班会记录
  • ci策划 网站开发做网站是怎么赚钱的
  • 北京市著名的网站制作公司北京网站设计浩森宇特
  • 去视频网站做编辑广州网站建设策划书
  • 电子商务网站建设论文结论怎么做弹幕视频网站
  • 专业网站建设品牌策划wordpress ajax登录
  • 太原网站制作机构襄阳网站推广优化技巧
  • 装修网站排行榜前十名有哪些企业名录搜索软件终身免费
  • 网站的技术分析珠海网站制作策划
  • 淘宝客网站空间深圳住房建设官方网
  • 服务器架构做网站网站开发信息平台项目总结
  • 西宁网站设计公司免费下载软件全免费
  • 国家高新技术企业有效期几年百度手机端排名如何优化
  • 浙江省龙泉市建设局网站项目管理软件模块
  • 兴远建设网站庆阳网络营销
  • 网站优化的好处山东监理工程师考试最新消息
  • 电子商务企业网站的基本功能成都php网站建设
  • 公司在选择网站时应考虑什么问题杭州萧山网站开发
  • 网站备案后经营如何做提卡网站
  • 丰台网站建设淘宝网页版看直播
  • 怎样用dw做 网站首页御名是什么意思
  • 如何查看网站域名温州做网站哪里好
  • 怎么利用云盘建设网站外网设计灵感网站