僵尸矩阵 · 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/7/22 15:39:57 阅读更多 →
从Figma到生成式UI,再到自动交付代码——AI一站式设计工作流全链路拆解(含可复用流程图谱)

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

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

2026/7/22 15:39:57 阅读更多 →
分布式数据库Redis的简介、安装与设置使用指令

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

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

2026/7/22 15:39:57 阅读更多 →

最新新闻

AI×低代码工作流:破解制造业数字化流程异构困局

AI×低代码工作流:破解制造业数字化流程异构困局

在制造业数字化转型的浪潮中,“流程异构”早已成为阻碍企业数智化升级的核心顽疾。从离散制造的多工序协同,到流程制造的全链路管控,不同产线、不同部门、不同系统之间的流程割裂,让数字化转型陷入“表面热闹、实质低效”的困境。…

2026/7/22 16:21:34 阅读更多 →
如何在5分钟内搭建个人ASMR音频库:ASMRoner全功能指南

如何在5分钟内搭建个人ASMR音频库:ASMRoner全功能指南

如何在5分钟内搭建个人ASMR音频库:ASMRoner全功能指南 你是否曾经为了寻找喜欢的ASMR音频而在多个平台间来回切换?是否觉得手动下载和管理音频文件既繁琐又耗时?今天,我要向你介绍一个能够彻底改变你ASMR体验的工具——ASMRoner&…

2026/7/22 16:21:34 阅读更多 →
5分钟打造你的专属代码编辑器:GriddyCode终极定制指南

5分钟打造你的专属代码编辑器:GriddyCode终极定制指南

5分钟打造你的专属代码编辑器:GriddyCode终极定制指南 【免费下载链接】griddycode A code editor made with Godot. Code has never been more lit! 项目地址: https://gitcode.com/GitHub_Trending/gr/griddycode 厌倦了千篇一律的代码编辑器界面&#xff…

2026/7/22 16:21:34 阅读更多 →
基于Spring Boot的中草药销售平台设计与实现

基于Spring Boot的中草药销售平台设计与实现

目 录 摘 要 Abstract 1 绪论 1.1 选题依据及意义 1.2国内外研究现状 1.3论文结构安排 2 开发技术介绍 2.1 Java语言 2.2SpringBoot框架 2.3 MySQL数据库 2.4 Vue架构 3.1 性能分析 3.2 系统功能分析 3.3系统流程分析 4 系统设计 4.1 系统设计…

2026/7/22 16:21:34 阅读更多 →
图书馆智慧查询借阅管理系统的设计与实现

图书馆智慧查询借阅管理系统的设计与实现

目 录 第1章 概 述 1.1研究目的 1.2研究意义 1.3 国内外研究现状 1.3.1国外文献综述 1.3.2国内文献综述 1.4 课题设计的主要内容 第2章 关键技术介绍 2.1 开发环境 2.2 Java技术 2.3 B/S结构 2.4 MySQL数据库 2.5 SSM框架 2.6 IDEA开发工具 2.7 …

2026/7/22 16:21:33 阅读更多 →
MultipleStatusView扩展教程:如何创建自定义状态视图与集成第三方库

MultipleStatusView扩展教程:如何创建自定义状态视图与集成第三方库

MultipleStatusView扩展教程:如何创建自定义状态视图与集成第三方库 【免费下载链接】MultipleStatusView 一个支持多种状态的自定义View,可以方便的切换到:加载中视图、错误视图、空数据视图、网络异常视图、内容视图。 项目地址: https://gitcode.co…

2026/7/22 16:20:33 阅读更多 →

日新闻

TI DSP系统配置模块SYSCFG详解:中断机制与主设备优先级配置实战

TI DSP系统配置模块SYSCFG详解:中断机制与主设备优先级配置实战

1. 项目概述与SYSCFG模块的核心价值在嵌入式系统,尤其是像TI C6000系列这样的高性能DSP开发中,我们常常会与芯片手册里那些密密麻麻的寄存器打交道。很多开发者可能更关注算法实现、内存优化或者外设驱动,但对于一个稳定、高效的系统而言&…

2026/7/22 0:00:26 阅读更多 →
微信Server酱:高到达率的应急通知方案实践

微信Server酱:高到达率的应急通知方案实践

1. 为什么我们需要"最次"的通知方案? 在数字化协作环境中,消息通知系统的重要性不言而喻明。但现实情况是,企业级通知方案往往需要复杂的API对接(如企业微信、钉钉、飞书),个人开发者的小项目又经…

2026/7/22 0:00:26 阅读更多 →
甲方要的“简洁“PPT,到底是简洁还是省事?

甲方要的“简洁“PPT,到底是简洁还是省事?

甲方说"简洁一点",乙方听到的是"少做几页"。甲方说"不要太复杂",乙方理解成"别放图表了"。结果交过去,甲方说"我说的简洁不是这个意思"。"简洁"这个词在PPT语境里,是…

2026/7/22 0:00:26 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 8:58:19 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/21 5:34:47 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/22 12:54:44 阅读更多 →

月新闻