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

这篇博客分享了作者在2021年8月29日参与美团笔试的几道算法题目的解答思路,包括芳香值问题、书架整理、文件流处理和割草机问题。对于每道题目,作者提供了详细的解题策略,如贪心算法、双指针法等,并对一些复杂度较高的问题进行了优化思考。此外,还提到了测试岗位的附加题——输入框回文测试的测试用例设计。
摘要由CSDN通过智能技术生成

美团笔试题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的二维数组,肯定超空间了
这就说明肯定不是暴力做的

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

附加题:输入框回文测试

在这里插入图片描述

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值