小红书前端笔试9.25

第一题:收集卡牌(100%)
const readline = require('readline');
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
})

let store = [];
rl.on('line', line => {
  store.push(line);
})

rl.on('close', () => {
  let n = parseInt(store.shift());
  let nums = store[0].split(' ').map(item => parseInt(item));
  let arr = new Array(n + 1).fill(0);
  let result = 0;
  for (let i = 0; i < nums.length; i++) {
    // 对nums中的数字对应的位置存储
    arr[nums[i]]++;
  }
  console.log(arr);
  // 计算最大的数字到多少
  for (let i = 1; i < arr.length; i++) {
    if (arr[i] === 0) {
      console.log(result);
      break;
    } else {
      result++;
    }
  }
})
第二题:将字符串1变为串2(100%)
const readline = require('readline');
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
})

let store = [];
rl.on('line', line => {
  store.push(line);
})

rl.on('close', () => {
  let n = parseInt(store.shift());
  for (let i = 0; i < n; i++) {
    let s1 = store.shift().split('');
    let s2 = store.shift().split('');
    // console.log(s1, s2);
    let judge = judgeStr(s1, s2);
    if (judge) {
      console.log('yes');
    } else {
      console.log('no');
    }
  }
})

function judgeStr(s1, s2) {
  let point = 0; // 标识s2能判断的位置
  for (let i = 0; i < s1.length; i++) {
    if (s2[point] == s1[i]) {
      point++;
    }
  }
  if (point === s2.length) {
    return true;
  } else {
    return false;
  }
}
第三题:找到最近节点(没有测试,只是通过测例)
const readline = require('readline');
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
})

let store = [];
rl.on('line', line => {
  store.push(line);
})

rl.on('close', () => {
  let n = parseInt(store.shift());
  let bian = store.shift().split(' ').map(item => parseInt(item));
  let chang = store.shift().split(' ').map(item => parseInt(item));
  let find = store.shift().split(' ').map(item => parseInt(item));
  let min = Infinity;
  // 使用[0]表示key:1的节点
  let arr = [{key: 1, val: 0}];
  for (let i = 0; i < n - 1; i++) {
    arr.push({key: bian[i] + 1,val: chang[i]});
  }
  // console.log(arr);
  for (let i = 0; i < find.length; i++) {
    min = Math.min(min, getLeft(arr, find[i] - 1) + getRight(arr, find[i] - 1));
    console.log('------');
  }
  console.log(min);
})

function getLeft(arr, cur) {
  let result = 0;
  let tmp = arr[cur].val;
  for (let i = cur - 1; i >= 0; i--) {
    result += tmp;
    tmp += arr[i].val;
  }
  console.log(tmp);

  return result;
}

function getRight(arr, cur) {
  let result = 0;
  let tmp = 0;
  for (let i = cur + 1; i < arr.length; i++) {
    tmp += arr[i].val;
    result += tmp;
  }
  console.log(result);
  return result;
}





#小红书##小红书笔试##2022秋招#
全部评论
感谢分享,回头我也要刷题了
点赞 回复 分享
发布于 2022-10-01 23:09 山西

相关推荐

2025-12-08 16:04
门头沟学院 Java
本人本科末9,今年大三。大一大二一直玩,什么都没学到,在大学混日子混了两年,每天不是在打农就是在steam。大三开学时一个和自己玩的好的同学去实习了,才发现自己白白浪费了两年的时间,如果真不冲一下就真去京东,阿里,美团送外卖了今年9月份开始学Java,一开始一直跟着黑马视频看,后面发现看视频效率太低了,时间根本不够,就开始主要看文档和看书了。这几个月一直在学,真的尽力了,希望暑期前能找一份好点的实习。我简历上面的项目大多没有指标,但是实际上我是真没多少时间去做项目,我基本主要是动手只做了外卖和天机,黑马点评和12306我都是只是看了项目。主要是自己的时间真的不多,但是这样子自己的代码能力确实比较差。而且自己也没有做过实际的工程,我顶多用jmeter测试一下接口tps啥的,比如使用Redis管道提升了一点性能,减少Redis交互,这种值得写上去吗?需不需要具体到某些数字求求各位佬给一些建议,看看简历怎么优化?项目介绍是不是不够详细?没有具体到业务方面。项目会不会提到大致实现原理导致面试官一看简历就知道怎么实现就没有问的欲望?专业技能一些字段是不是要加粗,是不是写太啰嗦了?有没有必要压缩内容变成一页?两页的话是不是都要把两页填地满满的。
给秋招一个交代:一页简历最好,网上做的项目放面试官眼里都是玩具,简历上不需要强调有什么难点,记住就行防止真的问。然后背八股,多投多面试就行
点赞 评论 收藏
分享
评论
2
9
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务