题解 | #成绩排序#

成绩排序

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

将分数分离,然后记录它的索引,然后使用reduce进行排序,排序后的index即为原数组的排序index的索引,然后输出即可。

let line

let arr = []

const getSequence = (arr,order)=>{
    let scoreArr = []
    let result = []
    //    将分数分离     
    arr.forEach((item,index)=>{
        let temp = item.split(' ');
        scoreArr.push({
            index:index,
            score:parseInt(temp[1])
        })
    });
      result =  scoreArr.reduce((list,item)=>{
            let newList = list
             if(newList.length == 0){
                 newList.push(item)
             }else{
                 let index;
                 if(order == 0){
                      index = newList.findIndex((i)=>i.score < item.score);
                 }else{
                      index = newList.findIndex((i)=>i.score > item.score);
                 }
                  index > -1 ? newList.splice(index,0,item) : newList.push(item)
                
             }
             return newList
        },[])
    let res = []
     result.forEach((item)=>{
         let index = item.index
         res.push(arr[index])
     })
    return res
}
while(line = readline()){
    arr.push(line);
    if(arr.length >= 2){
        let count = parseInt(arr[0]);
        let direction = parseInt(arr[1]); //0 从高到低 1 从低到高
        if(arr.length == 2 + count){
            let dict = JSON.parse(JSON.stringify(arr));
            dict.splice(0,2);
            let newArr = []
            let result = getSequence(dict,direction);
            result.map(i=>console.log(i))
            arr = []
        }
    }
    
}
全部评论

相关推荐

01-02 21:17
已编辑
西安理工大学 后端
程序员小白条:项目不太重要,你的优势的算法竞赛,然后多背相关的八股文,项目可以不作为重点考虑,面试可能就简单带过项目就行了,你可以直接写简历,背项目相关的八股文就行,也不用自己做,时间紧张的情况下,性价比最高
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务