题目
思路
- 主要靠理解题意,看了一会儿想法是进行每一步的判定,但是太复杂了不可能实现,于是点进评论,才发现只用判断是否有人距离target比自己更近就行(因为对面更近的话完全可以提前到target等自己)
- 但是我用距离就走入了一个误区,毕竟是直线走的,写了半天用Math.sqrt计算距离是不对的,想复杂了,直接x-xi,y-yi判断即可…
代码
public boolean escapeGhosts(int[][] ghosts, int[] target) {
//自己的距离
int mylength =Math.abs(target[0])+Math.abs(target[1]);
//阻碍者的距离是否比自己小 如果出现比自己小的 返回false
for(int i=0;i<ghosts.length;i++){
//当前的距离
int ghostslength = Math.abs(ghosts[i][0]-target[0])+Math.abs(ghosts[i][1]-target[1]);
if (ghostslength<=mylength) return false;
}
return true;
}