812字节跳动前端岗第二题Node题解
哈哈只A出来这一道题,估计只有我是用Node答的啊,抖个机灵大家别打我 我就想抽个T恤啦
// 本题为考试多行输入输出规范示例,无需提交,不计分。 const readline = require('readline'); const rl = readline.createInterface({ input: process.stdin, output: process.stdout, terminal:false }); let n = -1; // 初始状态为负数,表示还没开始读取 编辑数量 let cur_line = 0; let array = []; rl.on('line', function(line){ // javascript每行数据的回调接口 if (n < 0) { // 测试用例第一行读取n n = parseInt(line.trim()) } else { // 矩阵数据读取 let tokens = line.split(';'); for (let i = 0; i < tokens.length; ++i) { // 题目逻辑求和,边读取边计算 tokens[i].split(","); let arr = tokens[i].split(","); arr[0] = parseInt(arr[0]); arr[1] = parseInt(arr[1]); // console.log(arr); array.push(arr); } // 记录当前读取的行数 cur_line += 1; } // 读取行数结束,如果确定只有一行额外的数据输入,也可以通过cur_line === 1来判断 if (n === cur_line) { // 输出结果 console.log(getResult(array)); n = -1; array = []; cur_line = 0; } }); function getResult(arr) { let start = 0; while(start<arr.length-1){ for(let i=start+1;i<arr.length;i++){ if(arr[start][1]<arr[i][0]||arr[start][0]>arr[i][1]){ if(i===arr.length-1){ start++; } continue; } if(arr[start][0]>=arr[i][0]){ arr[start][0]=arr[i][0] } if(arr[start][1]<=arr[i][1]){ arr[start][1]=arr[i][1] } arr.splice(i,1); break; } } arr.sort(function(x, y){ return x[0]-y[0]; }); let temp=""; for(let i=0;i<arr.length;i++){ temp+=arr[i][0]+","+arr[i][1]+";"; } temp = temp.replace(/;$/gi,""); return temp; }