题解 | #数据分类处理#

数据分类处理

https://www.nowcoder.com/practice/9a763ed59c7243bd8ab706b2da52b7fd

const readline = require('readline');

const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});

// 计算输入行的flag, 整数序列 I, 规则序列R
let [flag, I, R] = [0, undefined, undefined]
rl.on('line', function (line) {
    flag++

    if(flag === 1){
        I = line.split(' ').slice(1)
    }else if(flag === 2){
        // 去重并从小到大排序
        R = line.split(' ').slice(1).filter((item, index,arr)=>{
            return arr.indexOf(item) === index
        }).sort((a,b)=>a-b)
    
        // 处理成要求输出的格式
        /**
         * 每一个R下的数字,其对应的符合条件的个数,及符合条件的I下的值及值所对应得下标
         * 找打I中所有符合条件的元素,放进各自对应的对象
         */
        let res = []
        // 一开始初始化,后续出现的整数为 规则的个数
        let sum = R.length
        for(let i = 0; i < R.length; i++){
            // 创建每一个R[i]对应的对象
            res.push({elm: R[i], num: 0, arr:[]})
            for(let j = 0; j < I.length; j++){
                // 判断I的项中是否包含连续的R项
                if(I[j].indexOf(R[i]) !== -1){
                    res[i].num++
                    res[i].arr.push({index: j, value: I[j]})
                    // 没有一个数,就会增加2,包括值和下标
                    sum += 2
                }
            }

            // 如果 R项的num=0,则要减去1
            if(res[i].num === 0){
                sum--
            }else {
                // 每项显示的符合的个数
                sum++
            }
        }


        /**
         * 这一块就是将数据按照要求的格式输出
         * 1、去除num=0的
         * 2、将每一项的数组的对象数组数据映射成字符数组
         * 3、再将数组转成字符串
         * 4、将所有项合并成一行,在与总数并行输出
         */
        res = res.filter(item=>item.num !== 0)
        // ['3 6 0 123 3 453 7 3 9 453456 13 453 14 123', '6 7 1 456 2 786 4 46 8 665 9 453456 11 456 12 786']
        res = res.map(item=>`${item.elm} ${item.num} ${item.arr.map(item2=>`${item2.index} ${item2.value}`).join(' ')}`)
        console.log(`${sum}`,res.join(' '))


    }
});

全部评论

相关推荐

程序员花海:实习和校招简历正确格式应该是教育背景+实习+项目经历+个人评价 其中项目经历注意要体现业务 实习经历里面的业务更是要自圆其说 简历模板尽可能保持干净整洁 不要太花哨的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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