美团笔试题2021.8.29(第四题求大佬解答)

Posted Zephyr丶J

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了美团笔试题2021.8.29(第四题求大佬解答)相关的知识,希望对你有一定的参考价值。

美团笔试题2021.8.29

又再帮同学写,推了这周的周赛,侥幸都有点思路

丁香树

题目描述


思路

因为芳香值最大为30,所以用一个数组存储已走过的芳香值,然后走到第i个点,找比当前芳香值小的有多少个,加上就行了

书架整理

题目描述


思路

贪心
将书架和书都排序,然后从后向前匹配,找书能放的最大的书架,例子中,就是大小为4的书能放在2个书架(4 4)中,就是两种情况;此时放了一本书,剩下书架3个,就放第二大的书,第二大的书能放在两个书架中(3 4),也是两种情况;以此类推,就是222 = 8
优化:找书架的时候用二分更快,不用我感觉也行,因为10的5次,复杂度nlogn肯定不会超时,但是赛马牛客不是力扣,范围很迷,可能不用就过不了最后一个例子

文件流

题目描述



思路

双指针
相当于匹配字符串的子序列,如果字符相同,那么就向后移动,否则只移动s的指针
如果不够了,再补一个字符串s
最极端的用例复杂度是10的8次,有超时风险,同学交了也没都通过,应该是超时了
优化:我想了一下,如何减少遍历次数呢,那就是用map集合,先把原来s字符串中的字符都放在一个map集合中,键是字符,值是下标;然后依次判断a中的字符,如果第下一个字符出现的位置(在map中直接O1的找)比当前字符出现的位置靠后,那么就说明在一个s中可以找到;如果靠前,那么就需要拼接下一个s;直到找到最后一个

割草机

题目描述

思路

这个题有点难,刚开始我还以为就是一个让求圆里面正方形个数的题,后面发现每次是把当前草地的草都割掉,
首先注意到,不用去考虑边界问题,因为给出的r都能保证形成一个完整的圆

刚开始我是通过找规律,当半径为0的时候,可以割掉的点就1个,也就是圆心所在位置
当半径为1的时候,可以割掉的点有5个;
半径为2的时候,可以割掉的点有13个
这个规律可以清晰的看到了,就是当半径为r时,割掉的点就有1 + 2^2 + 2^3 + … + 2 ^ (r + 1)

但是这个并不能说明什么,因为还需要记录每次割掉的点是哪个,所以感觉只能暴力写了,
用一个二维数组存储每个位置草的情况,遍历时间,通过圆心和半径找到当前能割掉的点,然后再给点长草,暴力听说能过30多。。而且要创建两个维度均为10^5的二维数组,肯定超空间了
这就说明肯定不是暴力做的

再想想,可以从后往前?最后一天割的地,前面就不用处理了,…

附加题:输入框回文测试

测试岗的附加题,写测试用例的题

以上是关于美团笔试题2021.8.29(第四题求大佬解答)的主要内容,如果未能解决你的问题,请参考以下文章

种花, 美团笔试题

最大矩形, 美团笔试题

友好城市, 美团笔试题

美团笔试题(Java后端5题2小时)

最短送餐路程计算, 美团笔试题2020

美团笔试题连续最大子序列整除k