598. Zombie in Matrix

Description

Given a 2D grid, each cell is either a wall 2, a zombie 1 or people 0 (the number zero, one, two).Zombies can turn the nearest people(up/down/left/right) into zombies every day, but can not through wall. How long will it take to turn all people into zombies? Return -1 if can not turn all people into zombies.

Example

Example 1:

Input:

[[0,1,2,0,0],

[1,0,0,2,1],

[0,1,0,0,0]]

Output:

2

Example 2:

Input:

[[0,0,0],

[0,0,0],

[0,0,1]]

Output:

4

思路:

这个并不是典型的BFS,而是用了多点扩散方式,并且核心是找出每一次变僵尸的点之间的规律, 第一次只要将矩阵里所有僵尸找出来,然后把它们周边的人变成僵尸,第二次只要查看在第一次中变成僵尸的点周边的人就可以了,因为原始的僵尸周边我们已经查看过,所以不需要再去理会,这样每一次只查看上一次新变的僵尸周边还有没有人就可以,不需要用到队列。

还有一点要注意的是,循环只有在所有变成的僵尸周边没有人的时候停止,这样就意味在所有人都变成僵尸后我们始终会多数一天,最终的结果需要减去这一天。

代码:


©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi阅读 12,211评论 0 10
  • pyspark.sql模块 模块上下文 Spark SQL和DataFrames的重要类: pyspark.sql...
    mpro阅读 13,236评论 0 13
  • **2014真题Directions:Read the following text. Choose the be...
    又是夜半惊坐起阅读 13,614评论 0 23
  • 这两晚到了半夜一点过后,能量就会澎湃的呼吸强行闭住的感觉~先是在胃的位置一股巨大的能量凝住了似的,连带我的思维意识...
    LrisPeggy阅读 1,432评论 0 2
  • 什么是初心 成长,是一个过程。不论在人生的哪个阶段,回首往昔,恐怕都曾有过重回童年,重回青年或重回壮年的憧憬。而成...
    思维雕刻路阅读 2,905评论 0 0

友情链接更多精彩内容