京东笔试
有没有今天京东笔试的家人可以帮我看下小红玩人兽游戏那题我的解法为什么数组越界?通过测试用例,但是提交代码报错数组越界,排查得出是这句let j=parseInt(tokens[1])-1里j的问题,j>n
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 count=0,res='',n=0,m=0,roles=[] while(line = await readline()){ let tokens = line.split(' '); if(count===0) { n = parseInt(tokens[0]); m = parseInt(tokens[1]); for(let i=0;i<n;i++) { roles[i]={ role:'human', energy:0 } } } else if(count<5) { roles[count-1].role=tokens[0] roles[count-1].energy=parseInt(tokens[1]) } else { //console.log(tokens) let i=parseInt(tokens[0])-1 let j=parseInt(tokens[1])-1 //console.log(i,j,typeof(i),typeof(j)) let choice1=tokens[2],choice2=tokens[3] //if(i>=n||j>=n) break if(!(choice1==='N'&&choice2==='N')) { if(roles[i].role!==roles[j].role) { if((roles[i].role==='human'&&choice1==='Y')||(roles[j].role==='human'&&choice2==='Y')) { //一定打 if(roles[i].energy>roles[j].energy) { roles[j].energy=0 //标记死亡 } else if(roles[i].energy<roles[j].energy) { roles[i].energy=0 //标记死亡 } else if(roles[i].energy===roles[j].energy) { roles[i].energy=0 //标记死亡 roles[j].energy=0 //标记死亡 } } else { if(roles[i].role==='human'&&roles[i].energy>roles[j].energy) { roles[j].energy=0 } else if(roles[j].role==='human'&&roles[j].energy>roles[i].energy) { roles[i].energy=0 } } } } } count++ //console.log(a + b); } for(let i=0;i<n;i++) { if(roles[i].energy===0) { res+='N' } else { res+='Y' } } console.log(res) }()