news 2026/6/13 19:11:46

leetcode 困难题 749. Contain Virus 隔离病毒

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
leetcode 困难题 749. Contain Virus 隔离病毒

Problem: 749. Contain Virus 隔离病毒

解题过程

拿到每个区域内影响cell最多的那个,cell=0的不能重复,不能用sum的最大值,而是te.size()的最大值,然后最大的区域置-1,继续感染的,继续统计最大的那个区域

Code

class Solution { public: int dir[4][2] = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}}; int containVirus(vector<vector<int>>& isInfected) { int m = isInfected.size(), n = isInfected[0].size(); int x, y, count = 0; while(true) { vector<vector<bool>> status(m, vector<bool>(n, false)); vector<vector<pair<int, int>>> collect; int maxeffect = 0, id = INT_MIN; int mxmx = INT_MIN; for(int i = 0; i < m; i++) { for(int j = 0; j < n; j++) { if( isInfected[i][j]==1 && status[i][j]==false ) { queue<pair<int, int>> qe; qe.push({i, j}); collect.push_back({}); status[i][j] = true; pair<int, int> pr; int sum = 0; unordered_set<int> te; while(!qe.empty()) { pr = qe.front(); collect.back().push_back(pr); qe.pop(); for(int k = 0; k < 4; k++) { x = pr.first + dir[k][0]; y = pr.second + dir[k][1]; if( x<0 || y<0 || x>=m || y>=n || status[x][y]==true || isInfected[x][y] == -1) continue; if(isInfected[x][y]==0) { sum++; te.insert((x<<20) + y); continue; } else if(isInfected[x][y]==1) { status[x][y] = true; qe.push({x, y}); } } } if(mxmx < (int)te.size()) { maxeffect = sum; mxmx = te.size(); id = collect.size() - 1; } if(sum == 0) { collect.pop_back(); } } } } if(collect.size() == 0) break; count += maxeffect; if(id != INT_MIN) { for(int j = 0; j < collect[id].size(); j++) { isInfected[collect[id][j].first][collect[id][j].second] = -1; } collect.erase(collect.begin() + id); } if(collect.size() == 0) break; for(int j = 0; j < collect.size(); j++) { for(int i = 0; i < collect[j].size(); i++) { for(int k = 0; k < 4; k++) { x = collect[j][i].first + dir[k][0]; y = collect[j][i].second + dir[k][1]; if( x<0 || y<0 || x>=m || y>=n) continue; if(isInfected[x][y]==0) { isInfected[x][y] = 1; } } } } } return count; } };
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/13 17:41:03

分库分表详细讲解及技术选型

为什么需要分库分表 为什么要分库 分库主要解决的是并发量过⼤的问题&#xff0c;因为并发量⼀旦上升了&#xff0c;那么数据库就可能成为系统的瓶颈&#xff0c;因为数据库的连接数量是有上限的&#xff0c;虽然你可以进⾏调整&#xff0c;但并不是⽆限调整的。所以&#xff0…

作者头像 李华
网站建设 2026/6/13 16:12:30

Applite革命性体验:告别命令行,拥抱macOS软件管理的智能时代

Applite革命性体验&#xff1a;告别命令行&#xff0c;拥抱macOS软件管理的智能时代 【免费下载链接】Applite User-friendly GUI macOS application for Homebrew Casks 项目地址: https://gitcode.com/gh_mirrors/ap/Applite 你是否曾因繁琐的Homebrew命令而头疼&…

作者头像 李华
网站建设 2026/6/12 6:46:20

Performance-Fish如何解决《环世界》后期性能瓶颈?

Performance-Fish如何解决《环世界》后期性能瓶颈&#xff1f; 【免费下载链接】Performance-Fish Performance Mod for RimWorld 项目地址: https://gitcode.com/gh_mirrors/pe/Performance-Fish 当你的殖民地人口突破百人&#xff0c;建筑遍布地图&#xff0c;游戏帧率…

作者头像 李华
网站建设 2026/6/10 23:12:21

linux gpio获取

最近在工作中遇到了gpio解析失败的问题&#xff0c;跟踪发现设备树配置的字符串不匹配&#xff0c;在这里再次学习并记录下。 of_get_named_gpio 以前在工作中更多使用的是of_get_named_gpio这个标准函数&#xff0c;用以直接获取gpio。只要指定其具体的属性名&#xff0c;一般…

作者头像 李华
网站建设 2026/6/11 19:01:12

数据结构学习篇(4)---算法的时间复杂度

由于现在计算机的储存在硬件上能得到很好的解决&#xff0c;所以时间复杂度较空间复杂度更受关注。1.1 时间复杂度的概念时间复杂度的定义&#xff1a;在计算机科学中&#xff0c;算法的时间复杂度是一个函数&#xff0c;它定量描述了该算法的运行时间。一 个算法执行所耗费的时…

作者头像 李华