美团8.13 前端笔试

用的赛码系统,前端题型是30道单选(非常杂,有计算机基础知识吧、行测一类的逻辑推理题、就是没有前端的HTML、css、js。可以说没法准备) + 编程题2道 + 附加题(一个写作题,没有分,没来得及写)
- 做完就报名重考了,还得受一遍折磨!😫
- 看草稿感觉梦回高中了😂

编程题

1. 魔法送外卖,骑手有 n 个订单,每个订单需要时间 t 配送,每个订单有一个截止时间;骑手来不及送到订单可以用魔法瞬间送达,不算时间,问最少需要使用几次魔法才能把所有订单准时送达。

  - 这题只A了55%,思路没问题。后来看大家的做法,应该是赛码网的输入的问题。各买家的截至时间是以字符串形式提供的,每个值用空格分开,而read_line()最多读取1024长度的字符串`,可能出现了很长的字符串没有读完的情况所以,`处理输入的方式`应该是:let line= gets(10000000),不妨取大一点!
- 笔试是ACM模式,这里只写了核心代码
calc_MagicTimes(6, 5, [5, 6, 7, 8, 9, 10])  // 4
function calc_MagicTimes(n, t, arr) {
  let index = 0,
    magicTimes = 0,
    costTime = 0;
  while (arr[index] != null) {
    // 看当前的外卖是否来得及送
    while (costTime + t > arr[index]) {
      magicTimes++;
      index++;
    }
    // 这个可以手动送了
    costTime += t;
    index++;
  }
  console.log(magicTimes);
}

2. 还原扑克牌,一副牌n张把第1、2张放到牌底,翻开第三张,并记录其值,然后丢掉该张;按这种做法不断翻牌记录,当只剩一张时直接记录。根据最后的记录结果,还原原来扑克牌的顺序

- 我只隐约觉得这里有啥规律,像是栈?`也想着逆操作回去,但是怎么逆呢?`后来一个一个试了36%
- 看了别人的逆操作方法,但还是想不清楚为啥是这样
function recoveCards(arr) {
  if(arr.length < 3) {
    return arr.join(' ');
  } else {
    let res = [];
    for(let i = arr.length - 1; i >= 0; i--) {
      // 这就是逆操作要做的事情
      res.unshift(arr[i]);
      res.unshift(res.pop());
      res.unshift(res.pop());
    }
    return res.join(" ");
  }
}
console.log(recoveCards([1, 2, 3, 4])); 


#美团##美团笔试#
全部评论
哈哈哈哈 我一样 第一道题用的read_line 55% 第二道题逆方法36% 后面过不了显示超时 果断选择重考
1 回复 分享
发布于 2022-08-13 22:03
第一题不应该还有时间差的嘛,比如[6,10],t=5的话,第一个送完剩下1秒,第二个也可以送,所以不需要魔法,我也是js写的ac不了就炸了🙄
1 回复 分享
发布于 2022-08-13 21:24
第二题一样的方法 我逆回去超时了? 不懂为啥
点赞 回复 分享
发布于 2022-08-17 14:17 四川
我是Android开发,我看你的草稿上的图,我感觉我跟你的题可能一模一样😂
点赞 回复 分享
发布于 2022-08-14 00:26
附加题要做吗
点赞 回复 分享
发布于 2022-08-13 23:12

相关推荐

评论
5
30
分享

创作者周榜

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