这道题如果我们没有办法逃出去的话有两种可能:
- 鬼可以比我们先到达target然后在那里等我们
- 鬼可以在我们到达target的最短路径上拦截我们
第一点很显然,对于第二点,从原点到达target的最短路径一定是用时最少的,如果鬼没有办法在这段时间里成功拦截我们,我们一定能逃出来。
那么如果鬼能够在最短路径上拦截我们,我们无论如何都是逃不掉的。如果我们避开最短路径,做一些绕路的操作,鬼可以复制我们一模一样的操作从而拦截我们。所以鬼只要能够在最短路径上拦截我们,就一定能抓到我们。
假设原点到target的最短距离为dist,那么鬼一定需要保证最多用dist距离就可以到达target,这样一定可以满足1或者2的情况。所以我们只需要检查所有鬼到target的曼哈顿距离即可。时间复杂度O(N),N为鬼的数量,代码如下:
No comments:
Post a Comment