僵尸矩阵 · Zombie in Matrix(多原bfs)
给定一个 2D 网格每个单元格要么是墙 2要么是僵尸 1要么是人 0数字 0、1、2。僵尸每天可以将最近的人上/下/左/右变成僵尸但是 不能穿墙。 把所有人都变成僵尸需要多长时间 如果不能将所有人变成僵尸则返回 -1。题解九章算法 - 帮助更多程序员找到好工作硅谷顶尖IT企业工程师实时在线授课为你传授面试技巧多源点bfs。 从所有的源点出发往外感染即可。class Coordinate { int x, y; public Coordinate(int x, int y) { this.x x; this.y y; } } public class Solution { public int PEOPLE 0; public int ZOMBIE 1; public int WALL 2; public int[] deltaX {1, 0, 0, -1}; public int[] deltaY {0, 1, -1, 0}; /** * param grid a 2D integer grid * return an integer */ public int zombie(int[][] grid) { if (grid null || grid.length 0 || grid[0].length 0) { return 0; } int n grid.length; int m grid[0].length; // initialize the queue count people int people 0; QueueCoordinate queue new LinkedList(); for (int i 0; i n; i) { for (int j 0; j m; j) { if (grid[i][j] PEOPLE) { people; } else if (grid[i][j] ZOMBIE) { queue.offer(new Coordinate(i, j)); } } } // corner case if (people 0) { return 0; } // bfs int days 0; while (!queue.isEmpty()) { days; int size queue.size(); for (int i 0; i size; i) { Coordinate zb queue.poll(); for (int direction 0; direction 4; direction) { Coordinate adj new Coordinate( zb.x deltaX[direction], zb.y deltaY[direction] ); if (!isPeople(adj, grid)) { continue; } grid[adj.x][adj.y] ZOMBIE; people--; if (people 0) { return days; } queue.offer(adj); } } } return -1; } private boolean isPeople(Coordinate coor, int[][] grid) { int n grid.length; int m grid[0].length; if (coor.x 0 || coor.x n) { return false; } if (coor.y 0 || coor.y m) { return false; } return (grid[coor.x][coor.y] PEOPLE); } }

相关新闻

Android Studio 模拟器(AVD)安装与排错

Android Studio 模拟器(AVD)安装与排错

之前一直用真机(MUMU模拟器)做测试,突然想使用一下咱们的Android Studio自带模拟器,没想到遇到了不少坑,写此文章记录一番。 Android Studio自带模拟器(AVD),怎么安装呢?本文就一步一步来操作 1、选择AVD Manager(Device Manager…

2026/9/29 10:09:32 阅读更多 →
从Figma到生成式UI,再到自动交付代码——AI一站式设计工作流全链路拆解(含可复用流程图谱)

从Figma到生成式UI,再到自动交付代码——AI一站式设计工作流全链路拆解(含可复用流程图谱)

更多请点击: https://kaifayun.com 第一章:从Figma到生成式UI,再到自动交付代码——AI一站式设计工作流全链路拆解(含可复用流程图谱) 现代前端开发正经历一场由AI驱动的设计-代码协同革命。传统“设计→切图→手写HT…

2026/9/26 10:24:46 阅读更多 →
分布式数据库Redis的简介、安装与设置使用指令

分布式数据库Redis的简介、安装与设置使用指令

分布式数据库Redis的简介、安装与设置使用指令Redis的简介Redis的组成Redis Clinet(应用系统)Redis ServerRedis协议网络模型序列化协议Redis Clinet和Redis Server间的交互模式串行的请求/响应模式双工的请求/响应模式(pipeline的实现&#…

2026/9/23 13:46:09 阅读更多 →

最新新闻

理光复印机扫描直存共享文件夹配置指南

理光复印机扫描直存共享文件夹配置指南

简介:本资源是一份面向企业IT运维人员、办公设备管理员及文印中心技术人员的实用操作指南,聚焦理光品牌复印机“扫描至共享文件夹”的完整配置流程,解决多用户环境下扫描文件集中归档与权限管控的实际需求。文档以Windows系统为平台&#xff…

2026/9/30 13:24:09 阅读更多 →
秒剧观察:短剧出海竞争逻辑深度解析,当画质不再是胜负手,交付效率如何重构技术栈

秒剧观察:短剧出海竞争逻辑深度解析,当画质不再是胜负手,交付效率如何重构技术栈

秒剧观察:短剧出海竞争逻辑深度解析,当画质不再是胜负手,交付效率如何重构技术栈 做AI视频开发的同行,如果你还在拿单镜头画质当核心KPI,今年大概率要吃亏。去年我们团队内部评审一个文生视频模型,指标全是…

2026/9/30 13:24:09 阅读更多 →
把伊娃搬到桌面上,稚晖君开源机器人

把伊娃搬到桌面上,稚晖君开源机器人

由稚晖君开源的 ElectronBot。它不只是桌面摆件,而是一台能动的电脑配件。ElectronBot 是一款桌面级小机器人,外观设计的灵感来源是《机器人总动员》WALL-E 里面的伊娃。它通过 USB 直连电脑,把圆形屏幕、USB 摄像头、六轴舵机、AI 识别全部塞…

2026/9/30 13:23:06 阅读更多 →
Windows Hello指纹驱动开发实战:UMDF2+WinUSB避坑指南

Windows Hello指纹驱动开发实战:UMDF2+WinUSB避坑指南

简介:本资源是微软官方发布的《Windows Hello生物识别驱动设计指南》PDF文档,面向Windows驱动开发工程师、安全认证系统开发者及嵌入式生物识别设备厂商技术人员,系统解决WBDI(Windows Biometric Driver Interface)驱动…

2026/9/30 13:23:06 阅读更多 →
DX12 PBR渲染实战:从光照模型到IBL的完整实现与调参指南

DX12 PBR渲染实战:从光照模型到IBL的完整实现与调参指南

1. 从光照模型到PBR:为什么DX12项目绕不开这一步 很多人在DX12里跑通第一个三角形、把纹理贴上去之后,下一步就卡住了——画面看起来“能跑”,但就是不对劲。金属像塑料,塑料像纸片,光照要么死白要么死黑。这不是DX12的…

2026/9/30 13:23:06 阅读更多 →
Node-Red 本地物联网中枢:可视化编程与 MQTT 数据流实战

Node-Red 本地物联网中枢:可视化编程与 MQTT 数据流实战

1. 为什么我最终选了 Node-Red 做本地物联网中枢搞物联网项目的人大概都有过这种纠结:传感器数据上来了,想做个联动逻辑,写代码吧,改一行就得重新烧录或者重启服务;用现成的平台吧,又担心数据不在自己手里&…

2026/9/30 13:23:06 阅读更多 →

日新闻

Base64 图片头部特征识别:从文件头到格式判断的完整指南

Base64 图片头部特征识别:从文件头到格式判断的完整指南

1. 项目概述:为什么说看懂 base64 图片头部是基本功这几年跟 base64 打交道的机会越来越多,后端接口返回图片、前端渲染验证码、小程序里存小图、还有一些老系统导出报表,动不动就给你一段长到怀疑人生的 base64 字符串。很多人拿到字符串就直…

2026/9/30 0:00:35 阅读更多 →
Java公交站牌广告管理系统:JSP+Servlet+MySQL实战落地指南

Java公交站牌广告管理系统:JSP+Servlet+MySQL实战落地指南

简介:本资源是一份面向Java初学者与课程设计学生的公交站牌广告灯箱管理系统毕业设计文档,聚焦城市公共广告资源信息化管理痛点,提供从需求分析到技术实现的完整方案。文档采用标准学术论文结构,含摘要、英文摘要、目录及五章正文…

2026/9/30 0:00:35 阅读更多 →
用 Redis Lua 构建大模型 API 多租户原子配额治理体系

用 Redis Lua 构建大模型 API 多租户原子配额治理体系

我去年年底接了一个内部 AI 平台的治理需求,背景很直接:公司把 DeepSeek、MiniMax 这类大模型 API 统一封装成内部网关,开放给几个业务团队用。结果第一个月账单出来,额度直接超了 4 倍。仔细查日志,发现原因并不复杂—…

2026/9/30 0:00:35 阅读更多 →

周新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/30 13:14:22 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/29 16:41:41 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/9/30 13:14:49 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/29 19:29:29 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/29 5:58:00 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/29 3:55:56 阅读更多 →