leetcode 851 喧闹与富有(js)

题目

在一组 N 个人(编号为 0, 1, 2, …, N-1)中,每个人都有不同数目的钱,以及不同程度的安静(quietness)。
为了方便起见,我们将编号为 x 的人简称为 "person x "。
如果能够肯定 person x 比 person y 更有钱的话,我们会说 richer[i] = [x, y] 。注意 richer 可能只是有效观察的一个子集。
另外,如果 person x 的安静程度为 q ,我们会说 quiet[x] = q 。
现在,返回答案 answer ,其中 answer[x] = y 的前提是,在所有拥有的钱不少于 person x 的人中,person y 是最安静的人(也就是安静值 quiet[y] 最小的人)。

示例

输入:richer = [[1,0],[2,1],[3,1],[3,7],[4,3],[5,3],[6,3]], quiet = [3,2,5,4,6,1,7,0]
输出:[5,5,2,5,4,5,6,7]

题解

超时了,但是能用

/**
 * @param {number[][]} richer
 * @param {number[]} quiet
 * @return {number[]}
 */
function getRicher(richer, quiet) {
    let richerArr = []
    for (let i = 0; i < quiet.length; i++) {
        richerArr[i] = []
        richerArr[i].push(i)
        getRicherArr(richer, richerArr[i], i)
    }
    console.log(richerArr)
    return richerArr
}
function getRicherArr(richer, Arr, i) {
    for (let j = 0; j < richer.length; j++) {
        if (richer[j][1] === i) {
            Arr.push(richer[j][0])
            getRicherArr(richer, Arr, richer[j][0])
        }
    }
}

var loudAndRich = function (richer, quiet) {
    let n = quiet.length;
    let richerArr = getRicher(richer, quiet)
    let answer = []
    let min;

    for (let i = 0; i < n; i++) {
        min = n;
        for (let j = 0,len = richerArr[i].length; j < len; j++) {
            if (min > quiet[richerArr[i][j]]) {
                min = quiet[richerArr[i][j]]
            }
        }
        answer[i] = quiet.indexOf(min);
    }
 
    return answer
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值