题解 | #MP3光标位置#

MP3光标位置

https://www.nowcoder.com/practice/eaf5b886bd6645dd9cfb5406f3753e15

const readline = require('readline');
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});

let k = 0;
let len = 0;
let commands = [];
rl.on('line', function(line){
   if(k === 0){
     len = Number(line);
     k++;
   }else{
     commands = line.split('');
     getSelection(len, commands);
   }
});

function getSelection(len, commands){
  const list = [];
  for(let i=1; i<=len; i++){
    list.push(i);
  }
  const start = 0;
  const end = len<4? len: 4;
  let display = list.slice(start, end);
  let cursor = 0;
  
  for(const command of commands){
     if(command === 'U'){
        cursor--;
     }else if(command === 'D'){
        cursor++;
     }
     if(cursor === -1){
        display = list.slice(-4, len);
        cursor = cursor + len;
     } else if(cursor === len){
        display = list.slice(0,4);
        cursor = cursor - len;
     }else{
        const item = list[cursor];
        if(command === 'U' && display.includes(item) === false){
          display = list.slice(cursor, cursor + 4);
        }else if(command === 'D' && display.includes(item) === false){
          display = list.slice(cursor-3, cursor+1);
        }
     }
  }
  console.log(...display);  
  console.log(list[cursor]);
}

#华为笔试#
全部评论

相关推荐

听说改名字就能收到offer哈:Radis写错了兄弟
点赞 评论 收藏
分享
11-01 20:03
已编辑
门头沟学院 算法工程师
Amazarashi66:这种也是幸存者偏差了,拿不到这个价的才是大多数
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务