牛客网的笔试题有终端输入输出时只有回车才能出发输入结束条件吗
输入包括多组测试数据。 每组输入第一行是两个正整数N和M(0 < N <= 30000,0 < M < 5000),分别代表学生的数目和操作的数目。 学生ID编号从1编到N。 第二行包含N个整数,代表这N个学生的初始成绩,其中第i个数代表ID为i的学生的成绩 接下来又M行,每一行有一个字符C(只取‘Q’或‘U’),和两个正整数A,B,当C为'Q'的时候, 表示这是一条询问操作,他询问ID从A到B(包括A,B)的学生当中,成绩最高的是多少 当C为‘U’的时候,表示这是一条更新操作,要求把ID为A的学生的成绩更改为B。可以在题库搜索 华为2016校园招聘上机笔试题
我的代码是:
const readline = require('readline'); const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); let arr = []; let result = []; rl.on('line', (line) => { let lineArr = line.split(' ').map(n => { if (['Q', 'U'].indexOf(n) === -1) { return Number(n); } return n; }); arr.push(lineArr); if (arr.length > 2) { const op = arr[arr.length - 1]; switch(op[0]) { case 'Q': { let s = op[1]; let e = op[2]; if (s > e) { let t = s; s = e; e = t; } result.push(Math.max.apply(null, arr[1].slice(s - 1, e))); break; } case 'U': { let i = op[1]; let to = op[2]; arr[1][i - 1] = to; break; } default: break; } if (arr.length - 2 === arr[0][1]) { result.forEach(r => { console.log(r); }) } } })
但只有最后一行输入结束回车后才能打印结果,所以被牛客网判定为输出空,咋整呢?
#JavaScript#