题解 | #成绩排序#

成绩排序

https://www.nowcoder.com/practice/8e400fd9905747e4acc2aeed7240978b

这题标为“较难”稍微有些过了,难度都不及动态规划。其余没什么难点,难点在于当两个元素分数一样时保持原数组排序,我试过本地编辑器,不需要额外规定,但是牛客网线上V8版本需要额外写一下,具体代码如下:
let n = parseInt(readline());
let m = parseInt(readline());
let res = [];
while(line = readline()) {
    res.push(line);
}
let output = res.map(x => x.split(' ').concat([res.indexOf(x)]));
//console.log(output);
output.sort((a, b) => {
    //这是难点,当两个分数一样时,以元素出现的先后顺序排序,即可理解为index小的排在前面,index大的排在后面,则相当于按照index从小往大sort即可,如下:
    if (parseInt(b[1]) === parseInt(a[1])) {
        return a[2] - b[2];
    }
    else if (m == 0) {
        return parseInt(b[1]) - parseInt(a[1]);
    }
    else if (m == 1) {
        return parseInt(a[1]) - parseInt(b[1]);
    }
})
//console.log(output);
output.forEach(x => console.log(x.slice(0, 2).join(' ')));


全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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