首页 > 8.15美团笔试机器人爆炸题前端代码
头像
面条无敌
发布于 2021-08-15 13:07
+ 关注

8.15美团笔试机器人爆炸题前端代码

// 思路 只有坐标奇偶性相同的向左移动的机器人和向右移动的机器人存在爆炸可能,因此分别存储
let count = 10
const res = new Array(count).fill(-1) //初始化结果
const RarrOdd = [], RarrEven = [], LarrOdd = [], LarrEven = []
const test = [['94', 'R'], ['74', 'L'], ['90', 'L'], ['75', 'R'], ['37', 'R'], ['99', 'R'], ['62', 'R'], ['4', 'L'], ['92', 'L'], ['44', 'R']]
for (let i = 0; i < count; i++) {
    let arr = test[i]
    if (arr[1] == 'R') {
        arr[0] % 2 == 0 ? RarrEven.push([arr[0] * 1, i]) : RarrOdd.push([arr[0] * 1, i])
    } else {
        arr[0] % 2 == 0 ? LarrEven.push([arr[0] * 1, i]) : LarrOdd.push([arr[0] * 1, i])
    }
}
function getBoomCo(Rarr, Larr) {
    let evenDis = []
    //遍历获取每个向左移动的机器人与向右移动机器人的爆炸时间
    for (let i = 0; i < Rarr.length; i++) {
        for (let j = 0; j < Larr.length; j++) {
            if (Larr[j][0] > Rarr[i][0]) {
                evenDis.push([Larr[j][0] - Rarr[i][0], Rarr[i][1], Larr[j][1]])
            }
        }
    }
    //排序后从最小爆炸时间算起
    evenDis.sort((a, b) => a[0] - b[0])
    for (let i = 0; i < evenDis.length; i++) {
        const [dis, Rindex, Lindex] = evenDis[i]
        //如果尚未爆炸,存储爆炸时间
        if (res[Rindex] == -1 && res[Lindex] == -1) {
            res[Rindex] = dis / 2
            res[Lindex] = dis / 2
        }
    }
}
//奇偶性分别调用
getBoomCo(RarrOdd, LarrOdd)
getBoomCo(RarrEven, LarrEven)
console.log(res);
笔试唯一A了的一道题,第一题看着那么简单,结果就过了18%,直接哭出声

全部评论

(1) 回帖
加载中...
话题 回帖