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

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; } };
http://www.cnnetsun.cn/news/53803.html

相关文章:

  • 三步学会百度网盘极速下载:告别龟速的终极方案
  • 5大实用技巧:用Calibre-Douban插件智能管理电子书元数据
  • 飞书文档批量导出终极指南:一键解决文档迁移难题
  • Source Han Serif思源宋体:免费开源中文字体专业应用指南
  • DOM Element:深入理解与操作
  • 深度解析 Flutter 路由管理:从原生路由到 AutoRoute 的优雅升级与性能优化
  • Turnitin系统查英文AI率多少为正常?报告显示星号*%怎么办?
  • 暖通净化空调恒温恒湿项目:PLC 与触摸屏上位机程序探秘
  • 第30章 Shell 正则表达式实战:精准匹配字符串、日志与配置项
  • 音视频学习(七十二):视频压缩:分块与预处理
  • AMD Ryzen性能调优:快速掌握处理器调试工具的使用技巧
  • 深蓝词库转换:轻松打通全平台输入法数据壁垒
  • (新卷,200分)- 最小传输时延Ⅱ(Java JS Python)
  • OpenHarmony AI人脸识别与手势控制系统开发指南
  • 新一代空间感知驱动的军工仓库与硐室透明化管控技术研究
  • Sketch MeaXure插件:设计师必备的智能标注工具
  • 强化学习Q-learning求最优策略
  • 你对电脑上的【Fn】熟悉多少
  • 计及N-k安全约束的含光热电站电力系统优化调度模型【IEEE14节点、118节点】附Matlab代码
  • 计及需求响应的粒子群算法求解风能、光伏、柴油机、储能容量优化配置附Matlab代码
  • conda使用详细指南
  • 豆包与DeepSeek底层大模型的深度解析:技术架构、设计理念与生态分野
  • Linux系统中的socket激活:先创建监听端口,后启动程序
  • 从零解决pyproject.toml构建失败的实战指南
  • Redis Lua脚本入门:从零写出你的第一个原子操作
  • 旧机转手不再慌!电子产品信息清除新国标落地,核心技术逻辑全解析
  • 安全体验馆好用供应商
  • 第二章——数据分析场景之Python数据可视化:用Matplotlib与Seaborn绘制洞察之图
  • 【Java毕设全套源码+文档】基于springboot的高校毕业生离校管理系统小程序设计与实现(丰富项目+远程调试+讲解+定制)
  • 如何用AI工具jstat优化Java应用性能分析