美团415笔试题目简述

简述题目:

一、n组数据。给定字符串S、T,可对S进行任意字符修改,或删除末位字符。求操作多少次可以使得S为T的前缀。

样例:aba 变 abb前缀,改或删最后一个字符都可,1次操作。abcd变efg,只能全删,4次操作。

思路:能改则不删,只有S大于T才用删。分为S小于T直接求前len(S)个不同字符数,S大于T求 前len(T)不同字符数加上len(S)-len(T)

二、一种糖果a个,另一种b个。分给n个人(a+b>n每人至少一个),每人的糖果只能全部为一种。求怎么分可以让每个人都尽可能多,即分得最少的人的糖果数也尽可能多,输出这个数量。

样例:5 2 3 -5个人分 2+3 每人一个 输出1

4 7 10 a(3+4) b(5+5) 输出3

4 4 15 a(4)b(5+5+5) 输出4

思路: 可无限再分状态下,x = a/(a+b)*n人得到a,y = b/(a+b)*n人得到b,理想平均。由于人不可再分,得到a和得到b的人数必定有一个舍一个进。 即 x下取整人 得a,y上取整人得b,或x上取整人得b,y下取整得a。有了xy,直接用a//x,b//y得到 a糖果的最少分配和b糖果的最少分配。两者取最小得到一种分配情况下的最小值,两种情况求大者得到最终答案。 注意对全部分a和全部分b作特判,不然会除0异常。

三、n个城市摆成一行,互相之间没有路。可使用 (L x) / (R x) 操作为x城市添加与 左边/右边 城市的一条双向路。可使用Q x操作查询城市x两边能到达最远的城市。共T次操作。

样例:3 5 (3个城市5次操作)

Q 2 P(初始状态查2,输出2 2 只能在原地)

L 2 (向左连接2 和 1)

Q 2 P(输出1 2)

R 2 (向右连接2和3)

Q 2 P(输出1 3)

思路:想到建图,这里题目已经规定了点是按顺序排列的,因此有数组的属性,可以看作特殊的图。

而且是一个双向链表。

维护一张双向链表,并且从给定节点向两端遍历即可。我用的dfs

class Node:
    def __init__(self, left=None, right=None):
        self.left = left
        self.right = right
def ldfs(node):
    if not node.left:
        return 0
    return ldfs(node.left) + 1
def rdfs(node):
    if not node.right:
        return 0
    return rdfs(node.right) + 1
ar = [None] * (n + 2)  

    if oper == "Q":
        l = ldfs(ar[x])
        r = rdfs(ar[x])
        print(x-l, " ", x+r)
    if oper == "L":
        if x <=1:
            continue
        ar[x].left = ar[x - 1]
        ar[x-1].right = ar[x]
    if oper == "R":
        if x>=n:
            continue
        ar[x].right = ar[x + 1]
        ar[x+1].left = ar[x]

四、n个套娃,每个套娃有属性 体积a、容积b、单位价值c。

如果套娃内部是空的,则满价值,如果有其他套娃占位,只计算空的部分的价值。

比如单位价值2的容积5的套娃原价2*5,被体积3的填了,则价值改为2*2

套娃可以互相套也可以不套完,求一种方式使得所有套娃总价值最低。

样例:3

5 4 3

4 2 2

3 2 1

第二个放第一个里第一个没有价值,后两个2*2+2*1 输出6

思路: 动态规划吧,我不太行。想着骗分,就按照容积为键排了个序,由小到大尝试往里放。暴力过了18%

欢迎补充。

五、n个自然数(>=0)集合,可以将一个数增加到任意值。求任意操作后,集合中没有出现的最小自然数,最大可能为多少。

样例:5

5 0 0 2 2 可改为5 0 1 2 3 输出4

思路:由小到大排个序,第i个数小于等于i的计数器加一,大于i的终止循环。输出计数器

做了1+1+1+0.18+1

第一次做美团笔试,不知道有机会不。

#美团##美团信息集散地##你收到了团子的OC了吗##我的实习求职记录##笔试题目#
全部评论
T4 DP应该是不行的,数据太大了,可能是基于DP做一些优化。。。
点赞 回复 分享
发布于 2023-04-17 23:07 北京
今天约面了吗
点赞 回复 分享
发布于 2023-04-17 08:47 广东
这个第一题若S=abbabb,T=abb,这种情况操作次数是0还是3
点赞 回复 分享
发布于 2023-04-15 20:46 陕西
什么岗位?
点赞 回复 分享
发布于 2023-04-15 19:18 天津
有通知过了吗?
点赞 回复 分享
发布于 2023-04-15 19:00 山西

相关推荐

点赞 评论 收藏
分享
评论
11
27
分享

创作者周榜

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