题解 | 小苯送礼物

小苯送礼物

https://www.nowcoder.com/practice/466e02d2177845589ab5fa5decc2857f

const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void async function () {
    // Write your code here
    let n = 0;//n名粉丝
    let k = 0;//送k个粉丝礼物
    let num = 0//粉丝编号
    let list = []
    while (line = await readline()) {
        let tokens = line.split(' ');
        let a = parseInt(tokens[0]);
        let b = parseInt(tokens[1]);
        if (n === 0) {
            n = a;
            k = b;
        } else {
            num++;//
            list.push({
                id: num, //粉丝编号
                // zan: a, //赞,后续未用到,可删除
                sc: b, //收藏数
                zc: parseInt(a + 2 * b) //支持力度
            })
        }
    }
    list.sort((o1, o2) => {
        if (o1.zc !== o2.zc) {
            return o2.zc - o1.zc;//支持力度降序
        } else {
            if (o1.sc !== o2.sc) {
                return o2.sc - o1.sc;// 支持力度一样,选择收藏更多的-》 收藏降序
            } else {
                return o1.id - o2.id// 收藏一样,选编号更小的-》编号升序
            }
        }
    })

    // 获取前k个粉丝的编号,并进行排序
    let nos = [] //粉丝编号
    for (let i = 0; i < k; i++) {
        nos.push(list[i].id)
    }

    // 排序:不能直接使用sort()默认排序
    nos.sort((a,b)=>{return a-b})

    // 打印:数组转字符串,以空格分隔
    console.log(nos.join(' '));


}()

#你感受到金三银四了嘛?#
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务