题解 | #合并表记录#

合并表记录

http://www.nowcoder.com/practice/de044e89123f4a7482bd2b214a685201

写了太多的循环了,暂时未想到特别好的方法

let str;
while(str = readline()){
    getCode(str);
}

function getCode(str) {
    let resMap = new Map();
    let keyArr = [];
    let valueArr = [];
    for(let i=0; i<parseInt(str); i++){
        let strArr = readline().split(' ');
        //判断输入值
        if(parseInt(strArr[0])<0 || parseInt(strArr[0])>11111111 || parseInt(strArr[1])<1 || parseInt(strArr[1])>100000){
             throw new Error('输入值错误');   
        }

        keyArr.push(strArr[0]);
        valueArr.push(strArr[1]);
    }

    //将值进行升序排序
    for(let i=0; i<keyArr.length; i++){
        for(let j=i+1;j<keyArr.length;j++){
            if(parseInt(keyArr[i])>parseInt(keyArr[j])){
                let tempa = keyArr[i];
                keyArr[i] = keyArr[j];
                keyArr[j] = tempa;

                let temp = valueArr[i];
                valueArr[i] = valueArr[j];
                valueArr[j] = temp;
            }
        }
    }
//     console.log(keyArr)
//     console.log(valueArr)
    //key相同进行累加
    for(let i=0; i<keyArr.length; i++){
        if(resMap.has(keyArr[i])){
            let newValue = resMap.get(keyArr[i]) * 1 + parseInt(valueArr[i]);
            resMap.set(keyArr[i],newValue);
        }else{
            resMap.set(keyArr[i],valueArr[i]);
        }
    }

    //输出
    for(let obj of resMap.entries()){
        console.log(obj.join(' '))
    }
}
全部评论

相关推荐

10-25 00:32
香梨想要offer:感觉考研以后好好学 后面能乱杀,目前这简历有点难
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务