题解 | #数据分类处理#

数据分类处理

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

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 iLine = await readline()
    let rLine = await readline()
    iLine = iLine.split(' ').slice(1)
    rLine = rLine.split(' ').slice(1).map(el => parseInt(el)).sort((a,b) => a- b)
    const res = []
    for(let i = 0; i < rLine.length; i++) {
        let rCur  = rLine[i]
        if(i > 0 && rCur === rLine[i - 1]) continue //去重,也可以用Set去重
        let findI = false   // 是否已经找到包含R<i>的I?
        let idxTotal = 0    
        let iTotal = 0
        for(let j = 0; j < iLine.length; j++) {
            let iCur = iLine[j]
            if(iCur.indexOf(rCur) >= 0) {
                // 找到第一个包含R<i>的I  => 1.存入R<i> 2.存入包含R<i>的I的总数,暂定为-1,记录坐标方便替换 3. 循环(匹配到的I的序号 I的值) 并且计数 -> 替换
                if(!findI) {
                    // 1. 存入当前匹配到的R<i>
                    res.push(rCur)
                    // 2. 包含rCur的I的总数 暂记为-1
                    res.push(-1)
                    idxTotal = res.length - 1
                    findI = true
                } 
                iTotal++
                res.push(j)
                res.push(Number(iCur))
            }
        }
        if(findI) {
            // 替换包含R<i>的I的总数
            res[idxTotal] = iTotal
        }
    }
    res.unshift(res.length)
    console.log(res.join(' '))
}()


全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务