LeetCode 789 逃脱阻碍者[数学] HERODING的LeetCode之路

Posted HERODING23

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 789 逃脱阻碍者[数学] HERODING的LeetCode之路相关的知识,希望对你有一定的参考价值。


解题思路:
题目看似复杂,其实本质并不是让你遍历所有的路径,观察是否有没被抓住的情况,而是只用考虑极端情况,即计算移动者到达终点的最短距离以及阻挡者到达终点的最短距离,观察移动者的距离是否是最短的,如果不是最短的,那么一定会被抓住,返回false,否则返回true,代码如下:

class Solution {
public:
    bool escapeGhosts(vector<vector<int>>& ghosts, vector<int>& target) {
        // 定义最短距离
        int num = abs(target[0]) + abs(target[1]);
        int temp =INT_MAX;
        for(auto& ghost : ghosts) {
            // 计算别的阻断者的最短距离
            temp = min(temp, (abs(ghost[0] - target[0]) + abs(ghost[1] - target[1])));
            // 如果别的阻挡者可以更快到达终点
            if(temp <= num) {
                return false;
            }
        }
        return true;
    }
};

以上是关于LeetCode 789 逃脱阻碍者[数学] HERODING的LeetCode之路的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 789. 逃脱阻碍者(贪心) / 1646. 获取生成数组中的最大值 / 787. K 站中转内最便宜的航班(有限制的最短路,重新审视迪杰斯特拉,动态规划)

我怎样才能逃脱单引号?

LeetCode 789. Escape The Ghosts

Codeforces 789e The Great Mixing (bitset dp 数学)

数学不好,又想学习编程,数学天赋会不会阻碍我成为优秀的工程师?TM...

使角色从镜头中逃脱