LeetCode第1天🐱‍🏍

307 阅读1分钟
  • 每日一题 789.逃脱阻碍者 题目要求是参数数组ghosts[][]中的每一项都比逃脱者[0,0]不晚到达目的地target[]时输出false,否则输出true

我的第一想法是将ghosts[][]中的每一项到target[]的距离s[0,0]target[]的距离s2相比较。这样可以以target[]为圆心,s2为半径作圆,如果圆内包含边上存在点t属于ghosts[][]则输出false,否则输出true

思考过后这个想法有些crazy,实现过于复杂。(用勾股定理求直线距离也比较复杂)

查找资料时发现两点之间有一个曼哈顿距离,曼哈顿距离可以快速计算比较,下面是实现代码。

var escapeGhosts = function(ghosts, target) {
    var md = Math.abs(target[0]) + Math.abs(target[1]) // Math.abs()求绝对值
    for (let ghost of ghosts) {
        let md2 = Math.abs(ghost[0] - target[0]) + Math.abs(ghost[1] - target[1])
        if (md2 <= md) {
            return false
        }
    }
    return true
}