题解 | #数据分类处理#
数据分类处理
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(' '))
}()
查看23道真题和解析